ComfyUI中基于Fluxgym训练Flux的Lora模型

1、介绍

Fluxgym训练非常方便,只需要更改一个配置文件内容即可。训练时也不需要提前进行图片裁剪、打标等前置工作。

本文章是介绍在16G以下显存下训练Flux模型的方法。

2、部署项目

(1)下载Fluxgym 和 kohya-ss/sd-scripts

git clone https://github.com/cocktailpeanut/fluxgym
cd fluxgym
git clone -b sd3 https://github.com/kohya-ss/sd-scripts

完成之后的文件夹结构应该如下所示:

/fluxgym
  app.py
  requirements.txt
  sd-scripts/

(2)创建虚拟环境fluxgym

使用conda创建,

conda create -n fluxgym python=3.10
conda activate fluxgym

(3)安装python依赖项

进入sd-scripts文件夹,安装依赖项

cd sd-scripts
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

完成之后返回根文件夹(fluxgym),修改requirements.txt文件,将huggingface.co改为hf-mirror.com:

然后安装依赖项:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

(4)安装pytorch Nightly

pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu121

3、启动项目

指定server_name 和 server_port,启动服务。

cd fluxgym
export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=16080
python app.py

启动成功的日志如下:

打开页面后显示如下:

4、训练模型

(1)模型选择

fluxgym默认支持flux-dev / flux-schnell / bdsqlsz/flux1-dev2pro-single 三种flux模型。

该信息在models.yaml文件里。

不过文件中指定的model全都是大于20G的,在16G显存中无法训练。

我们可以使用flux1-dev-fp8.safetensors模型,链接如下:

F.1-dev/fp8/NF4/GGUF-所需模型文件包-Other-墨幽-LiblibAI

(2)下载模型

该文件比较大,假如公司网络限速的话,可以直接获取下载地址,在linux服务器上下载。

Chrome浏览器上获取下载源地址的方法:

首先点击那14G文件进行下载

然后在浏览器上输入chrome://net-export/,单击开始记录日志,隔个5秒钟左右关闭记录,查看日志,找到liblibai-online.liblib.cloud的链接地址。

最后在linux服务器上直接通过wget命令进行下载。

注意这个是zip包,不是模型文件!!!下载之后需要通过unzip命令解压缩后才能使用。

下载中的日志:

然后在linux上通过wget命令下载该文件。

通过tail -f wget-log.4可以下载进度:

下载完毕后,通过mv命令修改为zip后缀的文件。

然后通过unzip命令解压文件。

然后把里面的文件放到fluxgym对应的目录之下:

mv flux1-dev-fp8.safetensors xx/fluxgym/models/unet

mv clip_l.safetensors xx/fluxgym/models/clip

mv t5xxl_fp8_e4m3fn.safetensors xx/fluxgym/models/clip

mv ae.sft xx/fluxgym/models/vae

修改app.py文件:

将文件中所有的t5xxl_fp16.safetensors替换为t5xxl_fp8_e4m3fn.safetensors

(3)修改models.yaml文件

在末尾添加如下内容:

flux1-dev-fp8:
    repo: .
    base: .
    license: other
    license_name: flux1-dev-fp8-license
    file: flux1-dev-fp8.safetensors

然后重新启动项目。

(4)启动训练

1)基本设置

  • The name of your LoRA:设置Lora的名称
  • Trigger word/sentence:lora的触发词,结尾处需要增加一个英文的逗号
  • Base model:基模,选择较小的那个模型
  • VRAM:选择12G

上传图片,然后再点击"Add AI captions with Florence-2",生成图片对应的提示词。首次生成时会自动下载模型,模型大概1.5G。

  • Max Train Expochs:最多的训练轮次,假如提前收敛则会提前结束。
  • Expected training steps:自动计算出来的训练步数
  • Sample Image Prompts:提示词样例,不影响训练结果
  • Sample Image Every N Steps:不要修改该值
  • Resize dataset images:训练模型结果对应的分辨率。

注意(使用阶段的剧透):即使Resize dataset images设置为512*512,但是如果空潜空间图像设置为1024*1024,那么最终生成的还是1024*1024的图像。

2)高级选项

点击Advanced options打开高级选项:

  • save_every_n_epochs:每N次保存一次模型,总轮次不多的话填1
  • console_log_file:日志文件位置,比如:"/data/work/xiehao/fluxgym/log2/2253",记得加双引号
  • console_log_simple:打勾
  • fp8_base_unet:打勾,因为我们使用的是fp8的模型

3)训练过程

29张图片,以上参数,会占用10G的显存。

29张图片,768分辨率,会占用12G的显存。

运行中观察Volatile GPU-Util的值,需要大于0,一般是99%或100%。

如果是0,说明停止训练了。

训练完整日志如下:

[2025-01-27 21:26:51] [INFO] Running bash "/data/work/xiehao/fluxgym/outputs/girl-flux/train.sh"
[2025-01-27 21:27:00] [INFO] 2025-01-27 21:27:00 INFO     highvram is enabled / highvramが有効です                                                                                                          train_util.py:4199
[2025-01-27 21:27:00] [INFO] WARNING  cache_latents_to_disk is enabled, so cache_latents is also enabled / cache_latents_to_diskが有効なため、cache_latentsを有効にします               train_util.py:4216
[2025-01-27 21:27:00] [INFO] /data/work/anaconda3/envs/fluxgym/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:1601: FutureWarning: `clean_up_tokenization_spaces` was not set. It will be set to `True` by default. This behavior will be depracted in transformers v4.45, and will be then set to `False` by default. For more details check this issue: https://github.com/huggingface/transformers/issues/31884
[2025-01-27 21:27:00] [INFO] warnings.warn(
[2025-01-27 21:27:01] [INFO] You are using the default legacy behaviour of the <class 'transformers.models.t5.tokenization_t5.T5Tokenizer'>. This is expected, and simply means that the `legacy` 
### 关于端脑云和FluxGym训练教程 #### 端脑云简介 端脑云是一个专注于提供高性能计算服务的平台,特别适合用于深度学习和其他高算力需求的任务。该平台集成了多种先进的硬件设施和支持软件环境,使得用户可以轻松地运行复杂的机器学习模型。 #### FluxGym概述 FluxGym是一款专为加速AI开发流程设计的工作流管理工具,支持从数据预处理到模型评估的一站式解决方案。其特点在于高度自动化和优化的数据管道构建能力,这有助于提高实验效率并减少人为错误的发生概率。 #### 安装与配置指南 为了能够在端脑云上顺利使用FluxGym进行训练,建议按照如下方法准备环境: 1. **注册账号** 登录端脑云官方网站完成账户注册,并验证邮箱地址以激活服务权限[^2]。 2. **实例启动** 进入控制台界面选择合适的GPU服务器规格创建新实例;推荐选用配备有NVIDIA GPU及CUDA/CuDNN支持的操作系统映像文件作为基础架构[^4]。 3. **依赖项安装** 使用SSH连接至远程主机后执行命令行操作来获取必要的库文件: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117/ git clone https://github.com/your-repo/fluxgym.git && cd fluxgym python setup.py develop ``` 4. **项目初始化** 根据个人研究方向调整参数设定,在`config.yaml`中指定路径、批次大小等选项以便后续调用API接口时读取默认值。 5. **脚本编写** 编写Python程序实现自定义逻辑功能,比如加载本地图片集合或文本序列化样本供算法迭代更新权重矩阵之需。 ```python import os from fluxgym import Trainer, Dataset if __name__ == "__main__": dataset_path = "./datasets" if not os.path.exists(dataset_path): raise FileNotFoundError(f"{dataset_path} does not exist.") train_set = Dataset(root=dataset_path) trainer = Trainer(train_dataset=train_set) try: trainer.fit() except Exception as e: print(e) ``` 6. **提交作业** 将上述代码保存成`.py`扩展名文档并通过Jupyter Notebook或其他IDE上传至云端目录下,最后利用SLURM调度器提交批处理任务等待集群分配资源开始正式运算过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值