logo
0
0
WeChat Login
None9527<592532681@qq.com>
docs: add acknowledgment for Qianjing sponsorship; feat: image dimension caching in dataset scan

None Trainer

Logo

None LoRA 训练工作室

基于 AC-RF(锚点耦合整流流) 算法的高效 LoRA 微调工具

支持多模型:Z-Image Turbo | LongCat-Image

English README

🙏 特别感谢 千景 赞助 AI IDE 会员,助力本项目开发!


✨ 特性

特性说明
🎯 锚点耦合采样只在关键时间步训练,高效稳定
10步快速推理保持 Turbo 模型的加速结构
📉 Min-SNR 加权减少不同时间步的 loss 波动
🎨 多种损失模式频域感知 / 风格结构 / 统一模式
🔧 自动硬件优化检测 GPU 并自动配置 (Tier S/A/B)
🖥️ 现代化 WebUIVue.js + FastAPI 全栈界面
📊 实时监控Loss 曲线、进度、显存监控
🏷️ Ollama 标注一键 AI 图片打标
🔄 多模型支持Z-Image / LongCat-Image 一键切换

🚀 快速开始

Step 1: 安装 PyTorch(必须)

根据你的 CUDA 版本选择:

# CUDA 12.8 (RTX 40系列推荐) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 # CUDA 12.4 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 # CUDA 12.1 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # CUDA 11.8 (旧显卡) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Step 2: 安装 Flash Attention(推荐)

Flash Attention 可显著降低显存占用并加速训练。

Linux - 从 Flash Attention Releases 下载:

# 查看你的环境版本 python --version # 例如: Python 3.12 python -c "import torch; print(torch.version.cuda)" # 例如: 12.8 # 下载对应版本(示例:Python 3.12 + CUDA 12 + PyTorch 2.5) wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu12torch2.5cxx11abiFALSE-cp312-cp312-linux_x86_64.whl # 安装 pip install flash_attn-*.whl

Windows - 从 AI-windows-whl 下载预编译版:

:: 示例:Python 3.12 + CUDA 12.8 + PyTorch 2.9.1 pip install https://huggingface.co/Wildminder/AI-windows-whl/resolve/main/flash_attn-2.8.3+cu128torch2.9.1cxx11abiTRUE-cp313-cp313-win_amd64.whl :: 或下载后本地安装 pip install flash_attn-xxx.whl

提示: 如果没有对应版本,可跳过此步,程序会自动使用 SDPA 作为备选。

Step 3: 安装 Diffusers(必须)

⚠️ 注意: 本项目需要 diffusers 0.36+(开发版),pip 暂无发布,需从 git 安装:

pip install git+https://github.com/huggingface/diffusers.git

Step 4: 一键部署

Linux / Mac

# 克隆项目 git clone https://github.com/None9527/None_Z-image-Turbo_trainer.git cd None_Z-image-Turbo_trainer # 一键安装依赖 chmod +x setup.sh ./setup.sh # 编辑配置(设置模型路径) cp env.example .env nano .env # 启动服务 ./start.sh

Windows

:: 克隆项目 git clone https://github.com/None9527/None_Z-image-Turbo_trainer.git cd None_Z-image-Turbo_trainer :: 一键安装依赖(双击或命令行) setup.bat :: 编辑配置(设置模型路径) copy env.example .env notepad .env :: 启动服务 start.bat

Step 5: 访问 Web UI

部署完成后打开浏览器访问: http://localhost:9198


📦 手动安装(可选)

如果一键部署遇到问题,可展开手动安装

⚠️ 前置要求

  • Python 3.10+
  • Node.js 18+ (用于构建前端)
  • npmpnpm

安装步骤

# 1. 安装 Python 依赖 pip install -r requirements.txt # 2. 安装 diffusers 最新版 pip install git+https://github.com/huggingface/diffusers.git # 3. 安装本项目 pip install -e . # 4. 构建前端(重要!) cd webui-vue npm install # 或 pnpm install npm run build # 生成 dist 目录 cd .. # 5. 创建配置文件 cp env.example .env # 6. 启动服务 cd webui-vue/api && python main.py --port 9198

💡 提示: 如果 npm run build 失败,请确保 Node.js 版本 >= 18。 可使用 node -v 检查版本。


🖥️ 命令行使用(高级)

除了 Web UI,你也可以直接使用命令行进行操作:

生成缓存

# 生成 Latent 缓存(VAE 编码) python -m zimage_trainer.cache_latents \ --model_path ./zimage_models \ --dataset_path ./datasets/your_dataset \ --output_dir ./datasets/your_dataset # 生成 Text 缓存(文本编码) python -m zimage_trainer.cache_text_encoder \ --text_encoder ./zimage_models/text_encoder \ --input_dir ./datasets/your_dataset \ --output_dir ./datasets/your_dataset \ --max_length 512 # 可选: 256/512/1024, 默认 512

启动训练

首先复制示例配置并修改路径:

# Z-Image 训练 cp config/acrf_config.toml config/my_zimage_config.toml # 编辑 my_zimage_config.toml,修改 [model].dit 和 [[dataset.sources]].cache_directory # LongCat-Image 训练 cp config/longcat_turbo_config.toml config/my_longcat_config.toml # 编辑 my_longcat_config.toml,修改 [model].dit 和 [[dataset.sources]].cache_directory

然后启动训练:

# Z-Image 训练(推荐使用 accelerate) python -m accelerate.commands.launch --mixed_precision bf16 \ scripts/train_zimage_v2.py --config config/my_zimage_config.toml # LongCat-Image 训练 python -m accelerate.commands.launch --mixed_precision bf16 \ scripts/train_longcat.py --config config/my_longcat_config.toml

⚠️ 重要: 配置文件中必须修改以下路径:

  • [model].dit - Transformer 模型路径
  • [model].output_dir - 输出目录
  • [[dataset.sources]].cache_directory - 数据集缓存路径

推理生成

# 加载 LoRA 生成图片 python -m zimage_trainer.inference \ --model_path ./zimage_models \ --lora_path ./output/your_lora.safetensors \ --prompt "your prompt here" \ --output_path ./output/generated.png \ --num_inference_steps 10

启动 Web UI 服务

# 方式一:使用脚本 ./start.sh # Linux/Mac start.bat # Windows # 方式二:直接启动 cd webui-vue/api python main.py --port 9198 --host 0.0.0.0 # 方式三:使用 uvicorn(支持热重载) cd webui-vue/api uvicorn main:app --port 9198 --reload

转换 LoRA 格式

# 转换为 ComfyUI 兼容格式 python scripts/convert_lora_comfyui.py \ --input ./output/your_lora.safetensors \ --output ./output/your_lora_comfyui.safetensors

⚙️ 配置说明

环境变量 (.env)

# 服务配置 TRAINER_PORT=9198 # Web UI 端口 TRAINER_HOST=0.0.0.0 # 监听地址 # 模型路径 MODEL_PATH=/./zimage_models # 数据集路径 DATASET_PATH=./datasets # Ollama 配置 OLLAMA_HOST=http://127.0.0.1:11434

训练参数 (config/acrf_config.toml)

[acrf] turbo_steps = 10 # 锚点数(推理步数) shift = 3.0 # Z-Image 官方值 jitter_scale = 0.02 # 锚点抖动 [lora] network_dim = 16 # LoRA rank network_alpha = 16 # LoRA alpha [training] learning_rate = 1e-4 # 学习率 num_train_epochs = 10 # 训练轮数 snr_gamma = 5.0 # Min-SNR 加权 loss_mode = "standard" # 损失模式(见下方说明) [dataset] batch_size = 1 enable_bucket = true max_sequence_length = 512 # 文本序列长度 (需与缓存一致)

🎨 损失模式 (Loss Mode)

新版本支持 4 种损失模式,可在前端"高级选项"中选择:

模式说明适用场景推荐参数
standard基础 MSE + 可选 FFT/Cosine通用训练默认即可
frequency频域感知(高频L1 + 低频Cosine)锐化细节,不改风格alpha_hf=1.0, beta_lf=0.2
style风格结构(SSIM + Lab统计量)学习大师光影/调色lambda_struct=1.0
unified频域 + 风格 组合全面增强两者默认值

频域感知模式 (frequency)

核心原理: ┌─────────────────────────────────────────┐ │ Latent ──► 降采样 ──► 低频(结构) │ │ └──► 高频 = 原始 - 低频(细节) │ │ │ │ Loss = MSE + α·L1(高频) + β·Cos(低频) │ └─────────────────────────────────────────┘ 参数说明: - alpha_hf: 高频增强权重(↑锐化 ↑噪点风险)推荐 0.5~1.0 - beta_lf: 低频锁定权重(↑保持结构)推荐 0.1~0.3

风格结构模式 (style)

核心原理: ┌─────────────────────────────────────────────┐ │ Latent 近似 Lab 空间 │ │ ├─ L通道 ──► SSIM(锁结构) │ │ │ ├─ Mean/Std(学光影) │ │ │ └─ 高频L1(学纹理) │ │ └─ ab通道 ──► Mean/Std(学色调) │ └─────────────────────────────────────────────┘ 参数说明: - lambda_struct: 结构锁(防脸崩)推荐 0.5~1.0 - lambda_light: 光影学习(学S曲线)推荐 0.3~0.8 - lambda_color: 色调迁移(学冷暖调)推荐 0.2~0.5 - lambda_tex: 质感增强(学颗粒感)推荐 0.3~0.5

选择建议

你的目标推荐模式
训练人物/角色 LoRAstandard
提升画面清晰度frequency
学习特定摄影师风格style
全面提升质量unified

💡 新手建议:先用 standard 模式训练,效果不满意再尝试其他模式。

📐 Freq 子参数推荐

参数默认值作用推荐范围
alpha_hf1.0高频(纹理/边缘)增强强度0.5 ~ 1.5
beta_lf0.2低频(结构/光影)方向锁定0.1 ~ 0.5

场景配置:

场景alpha_hfbeta_lf说明
锐化细节1.0~1.50.1重点学习纹理
保持结构0.50.3~0.5防止构图偏移
⭐ 平衡0.80.2推荐默认

🎨 Style 子参数推荐

参数默认值作用推荐范围
lambda_struct1.0SSIM 结构锁(防脸崩)0.5 ~ 1.5
lambda_light0.5L 通道统计量(学光影曲线)0.3 ~ 1.0
lambda_color0.3ab 通道统计量(学色调偏好)0.1 ~ 0.5
lambda_tex0.5高频 L1(质感增强)0.3 ~ 0.8

场景配置:

场景structlightcolortex说明
人像训练1.50.30.20.3强锁结构防脸崩
风格迁移0.50.80.50.3重点学光影色调
细节增强0.80.30.20.8锐化纹理
⭐ 平衡1.00.50.30.5推荐默认

⚠️ 注意:Freq 和 Style 同时开启时,高频惩罚会有重叠(alpha_hflambda_tex),建议降低其中一个。

硬件分级

Tier显存显卡示例自动优化策略
S32GB+A100/H100/5090全性能,无压缩
A24GB3090/4090高性能,原生 SDPA
B16GB4080/4070Ti平衡模式,轻度压缩

📊 使用流程

步骤功能说明
1️⃣数据集导入图片、Ollama AI 标注
➡️
2️⃣缓存预计算 Latent 和 Text 嵌入
➡️
3️⃣训练AC-RF LoRA 微调
➡️
4️⃣生成加载 LoRA 测试效果

🔧 常见问题

Q: loss 跳动很大(0.08-0.6)?

A: 正常现象!不同 sigma 下预测难度不同。看 EMA loss 是否整体下降即可。

Q: CUDA Out of Memory?

A: 尝试以下方法:

  • 增大 gradient_accumulation_steps(如 4 → 8)
  • 降低 network_dim(如 32 → 16)
  • 确保已安装 Flash Attention
Q: 训练多少 epoch?

A: 取决于数据集大小:

  • < 50 张:10-15 epoch
  • 50-200 张:8-10 epoch
  • > 200 张:5-8 epoch

📬 联系方式


📝 License

Apache 2.0

🙏 致谢


Made with ❤️ by None