使用Flux Gym进行Flux LoRA训练与ComfyUI图像创作:完整教程大揭秘!


2 个月前


使用文本-图像扩散模型生成的图像

Flux LoRA 训练与通过 ComfyUI 在 Google Colab 上创建图像:完整指南

扩散模型是一类生成模型,通过反复精炼噪声学习生成数据样本。受热力学扩散的启发,这些模型从纯噪声分布开始,逐步使用学习到的变换进行去噪,有效地捕捉复杂的数据分布。

它们在生成高质量图像、音频甚至分子结构方面表现出色。与传统的生成模型(如 GANs 和 VAEs)相比,扩散模型在模式覆盖、训练稳定性和灵活性方面更具优势,成为生成 AI 应用的强大工具。在本文中,我们将探讨一种称为 LoRA(低秩适应) 的微调技术,以微调这些扩散模型。

低秩适应(LoRA)是一种旨在高效微调扩散模型的强大技术。通过引入可训练的低秩矩阵来冻结预训练模型的权重,LoRA 显著减少了训练所需的计算资源和时间,同时保持或甚至提高了性能。

Flux 是一个用户友好的框架,简化了 LoRA 的实现,使得微调重量级/稠密扩散模型变得更加容易。

在这篇文章中,我们将探索如何利用 FluxGym 和 ComfyUI 等工具进行 LoRA 的训练,并使用简单的提示生成个性化图像。

在 Colab 上设置 Flux Gym 进行 LoRA 训练:

要开始微调 LoRA,我们将使用一个叫做 FluxGym 的框架。这个框架允许我们通过简单的图形用户界面(GUI)来训练 LoRA,在这里我们可以输入一些图像及其对应的标题。使用 FluxGym 训练 LoRA 的过程变得非常流畅。

设置 Flux Gym 的步骤:

  • /content/fluxgym-Colab/ 目录中克隆 Flux Gym 仓库及 sd-scripts 仓库:

    !git clone https://github.com/TheLocalLab/fluxgym-Colab.git
    %cd /content/fluxgym-Colab/
    !git clone -b sd3 https://github.com/kohya-ss/sd-scripts
    
  • 安装必要的依赖项:

    %cd /content/fluxgym-Colab/sd-scripts/
    !pip install -r requirements.txt
    %cd /content/fluxgym-Colab/
    !pip install -r requirements.txt
    !pip install --pre torch==2.4 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
    
  • 安装依赖项后,下载所需的模型。要使用 Flux Gym 进行 LoRA 训练并通过 ComfyUI 生成图像,需要多个预训练模型文件,包括 UNet 结构、文本编码器和变分自编码器(VAEs)的组件。使用以下命令直接从 Hugging Face 获取这些文件:

    !wget -O /content/fluxgym-Colab/models/unet/flux1-dev-fp8.safetensors https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-dev-fp8.safetensors
    !wget -O /content/fluxgym-Colab/models/clip/clip_l.safetensors https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors?download=true
    !wget -O /content/fluxgym-Colab/models/clip/t5xxl_fp8.safetensors https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors?download=true
    !wget -O /content/fluxgym-Colab/models/vae/ae.sft https://huggingface.co/cocktailpeanut/xulf-dev/resolve/main/ae.sft?download=true
    

文件解释:

  • **flux1-dev-fp8.safetensors**(UNet 模型):这是扩散模型的核心。它通过学习反向扩散步骤来处理去噪过程。该模型的其他精度版本,如 FP16 或 FP32,也可以从同一个 Hugging Face 仓库 下载。
  • **clip_l.safetensors**(CLIP 文本编码器):基于 CLIP 的文本编码器,用于将文本提示与图像对齐以进行条件生成。该模型学习文本和图像的共享嵌入空间,使其能够理解语义关系,并提高基于提示的图像合成的准确性。
  • **t5xxl_fp8.safetensors**(T5 文本编码器):基于 T5 架构的额外文本编码器,已量化为 FP8 以提高计算效率。该模型的其他精度版本也可在 Hugging Face 仓库 中找到。
  • **ae.sft**(变分自编码器): VAE 对图像进行编码和解码,减少其维度,同时保留质量。

运行 Flux Gym:

  • 现在,运行 app.py 文件以启动 Gradio 界面:

    !python app.py
    


公共 URL,用于运行 Gradio 界面

Flux Gym 界面主要分为三个部分:

部分 1:LoRA 信息

在这里,我们可以定义参数,例如要为我们的 LoRA 模型指定的名称、触发词、显存、每幅图像的重复训练、最大训练轮数等。我们观察到该版本的 FluxGym 在 16GB 显存 下效果最佳。在尝试时,我们发现 12GB20GB 显存 的训练选项存在一些问题。

部分 2:数据集

在这里,我们输入我们的训练图像,一旦插入训练图像,我们为这些图像提供标题(不要忘记在每个标题中添加触发词)。

部分 3:训练

在这里,我们可以检查训练脚本和训练配置。一旦确认,我们可以点击“开始训练”按钮以启动训练。


Flux Gym Gradio 界面

  • 模型训练完成后,请确保使用以下代码片段下载模型文件:

    from google.colab import files
    filename = '/content/fluxgym-Colab/outputs/<你的-LoRA-名称>.safetensors'
    files.download(filename)
    

使用 ComfyUI 生成图像:

要通过提示使用 ComfyUI 生成图像,请按照以下步骤操作:

  • 在 Colab 中克隆 ComfyUI 仓库,并安装所有所需的依赖项。

    !git clone https://github.com/comfyanonymous/ComfyUI ComfyUI
    %cd ComfyUI
    !pip install xformers!=0.0.18 -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu121 --extra-index-url https://download.pytorch.org/whl/cu118 --extra-index-url https://download.pytorch.org/whl/cu117
    
  • 要运行 UNET 模型,我们需要下载一个自定义节点以在 ComfyUI 上运行。为此,我们可以在 /content/ComfyUI/custom_nodes 目录中克隆该仓库。然后安装所有依赖项。

    %cd custom_nodes
    !git clone https://github.com/city96/ComfyUI-GGUF.git
    !ls
    %cd ../..
    !python3 -m pip install -r ./ComfyUI/custom_nodes/ComfyUI-GGUF/requirements.txt
    
  • 现在,我们可以将为训练下载的模型移动到 /content/ComfyUI/models 目录下的相应子目录,或使用以下命令直接下载模型:

    # 直接从 Hugging Face 的原始链接下载所需模型
    !wget -c https://huggingface.co/city96/FLUX.1-dev-gguf/resolve/main/flux1-dev-Q8_0.gguf -P ./models/unet/
    !wget -c https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/model.safetensors -P ./models/clip/
    !wget -c https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors -P ./models/clip/
    !wget -c https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/vae/diffusion_pytorch_model.safetensors -P ./models/vae/
    
  • 同时,手动将下载的 LoRA 模型上传到 /content/ComfyUI/models/lora 目录中。

  • 现在,为了访问 ComfyUI 界面,我们需要创建一个公共链接。这可以通过 cloudflared/localtunnel/colab iframe 来完成。但今天我们使用 Ngrok 创建公共 URL。

  • 让我们设置一个可通过 Ngrok 访问的 ComfyUI 服务器。首先从 这里 创建 Ngrok 的身份验证令牌,并使用 ngrok.set_auth_token() 设置 Ngrok 身份验证令牌。然后创建一个后台线程来监视端口 8188,并在检测到服务器后启动 Ngrok 隧道,打印公共 URL 以便远程访问。最后,使用 subprocess.run() 启动 ComfyUI,使用 --dont-print-server 标志。此设置便捷地初始化 ComfyUI,并使其可通过互联网访问,几乎没有任何努力。

    !pip install pyngrok
    import subprocess
    import threading
    import time
    import socket
    from pyngrok import ngrok
    
    ngrok.set_auth_token(NGROK_AUTH_TOKEN)
    
    def iframe_thread(port):
        while True:
            time.sleep(0.5)
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            result = sock.connect_ex(('127.0.0.1', port))
            if result == 0:
                break
            sock.close()
    
        print("
    ComfyUI 加载完成,正在尝试启动 Ngrok...
    ")
        public_url = ngrok.connect(port)
        print(f"访问 URL: {public_url}")
    
    threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()
    subprocess.run(["python", "main.py", "--dont-print-server"])
    
  • 现在点击生成的公共链接,并在主页上点击“访问网站”按钮。这将把你重定向到 ComfyUI 界面。点击左上角的“工作流”按钮,将需要从 这里 下载的 ComfyUI 工作流文件上传。

  • 加载工作流后,请确保在 Unet Loader、DualClipLoader、Load LoRA 和 Load VAE 节点中选择下载的模型,点击右箭头按钮进行验证。


ComfyUI 配置完成

  • 现在给出一个提示** (必须添加触发词),根据我们的需求更改空潜在图像的宽度和高度,然后点击 **队列 按钮。可以在第二个 CLIP 文本编码节点中给出负提示,明确指示模型要避免什么。一旦图像生成,你可以在“保存图像”节点中查看图像。


ComfyUI 工作流与生成的图像

参数如步数、cfg、采样器名称等可以进行实验,以便根据我们的喜好生成图像。

以下是一些生成的图像:


由 LoRA 生成的克里斯·海姆斯沃斯图像

这些图像展示了在五张克里斯·海姆斯沃斯的图像上训练 Flux LoRA 的结果,优化了八个周期,每张图像进行了五次重复。生成的视觉效果富有创意,展示了不同的主题,融合了奇幻和科幻的美学,强调了模型如何在各种富有想象力的场景中推断和风格化主题特征。

结论:

通过本指南,您现在拥有使用 Flux Gym 训练 Flux LoRA 的工具和知识,并通过 ComfyUI 在 Colab 上创建惊艳的图像。结合微调过的 LoRA 的强大能力和 ComfyUI 的灵活性,无论是为个人项目还是专业工作,您都可以将您的创造性构想变为现实。可能性是无穷无尽的——开始实验,让您的想象力引领方向吧!

撰文者 — Thejas P Rao (https://www.linkedin.com/in/thejasprao/)

FluxAI 中文

© 2025. All Rights Reserved