目录
- 1 引言
- 2 项目简介
- 3 快速上手
- 3.1 下载代码
- 3.2 环境配置
- 3.3 项目结构
- 3.4 下载模型与数据集
- 3.5 运行指令
- 3.6 核心参数说明
- 3.6.1 通用参数
- 3.6.2 优化器/学习率
- 3.6.3 数据相关
- 4 结语
1 引言
在人工智能和机器学习领域,生成模型的应用越来越广泛。Stable Diffusion 作为其中的佼佼者,因其强大的图像生成能力而备受关注。今天,我的开源项目 Dive Into Stable Diffusion v3.5 已经正式发布!这个项目旨在总结我在开发过程中所学到和用到的知识和工具,同时帮助其他开发者更好地理解和应用 Stable Diffusion v3.5 模型。目前,项目提供了多种微调和优化的方法,包括全量参数微调、LoRA、DreamBooth、RLHF和DPO训练等。
项目地址:https://github.com/Donvink/dive-into-stable-diffusion-v3-5
2 项目简介
Dive Into Stable Diffusion v3.5 是一个用于微调 Stable Diffusion v3.5 的训练代码库,基于Hugging Face 的 diffusers 库进行适配开发。
以下是项目的主要功能模块:
- SDv3.5 模型的全量微调
- 使用 LoRA 微调 SDv3.5 模型
- 结合 DreamBooth 与 LoRA 微调 SDv3.5 模型
- 基于 DDPO 和美学评分器的 RLHF(人类反馈强化学习)微调 SDv3.5 模型
- 基于 GRPO 和美学评分器的 RLHF 微调 SDv3.5 模型
- 基于 DPO 微调 SDv1.5 模型
- 基于 ReFL 和图文匹配评分器的 RLHF 微调 SDv1.5 模型
让我们一起 Dive Into Stable Diffusion v3.5 吧!
3 快速上手
3.1 下载代码
git clone https://github.com/Donvink/dive-into-stable-diffusion-v3-5.git
3.2 环境配置
首先安装所需的依赖项:
pip install -r requirements.txt
3.3 项目结构
项目的目录结构如下:
datas/
数据集目录(从 HuggingFace Hub 下载),存放训练用的图片或提示文本models/
预训练模型目录(从 huggingface.co/models 下载)outputs/
输出目录,用于保存模型预测结果和训练检查点scripts/
SDv3.5 训练主脚本目录src/
核心训练流程和训练器代码demo.py / demo.sh
SDv3.5 推理示例requirements.txt / setup.py
基础依赖配置train*.py
核心训练脚本
3.4 下载模型与数据集
从 HuggingFace 或 GitHub 下载所需的模型:
models
|-- aesthetics-predictor-v1-vit-large-patch14
|-- clip-vit-large-patch14
|-- improved-aesthetic-predictor
`-- stable-diffusion-3.5-medium
从以下地址下载 improved-aesthetic-predictor:
improved-aesthetic-predictor
下载数据集:
datas
|-- dogs
`-- pokemon
3.5 运行指令
- SDv3.5 全量微调
bash scripts/train_full_finetuning_sd3.sh
- LoRA 微调 SDv3.5
bash scripts/train_text_to_image_lora_sd3.sh
- DreamBooth + LoRA 微调 SDv3.5
bash scripts/train_dreambooth_lora_sd3.sh
- DDPO + 美学评分器 RLHF 微调
bash scripts/train_aesthetic_ddpo_sd3.sh
- GRPO + 美学评分器 RLHF 微调
# 注意:这部分代码可能存在问题,还需要完善。
bash scripts/train_aesthetic_rlhf_grpo_lora_sd3.sh
- DPO 微调 SDv1.5
bash scripts/train_dpo_sd_v1_5.sh
- ReFL + 图文匹配评分器的 RLHF 微调
bash scripts/train_refl_v1_5.sh
3.6 核心参数说明
3.6.1 通用参数
--pretrained_model_name_or_path
预训练模型路径--output_dir
模型输出和日志目录--seed
训练随机种子(默认不设置)
3.6.2 优化器/学习率
--max_train_steps
总训练步数--gradient_accumulation_steps
梯度累积步数--train_batch_size
实际批大小(具体参考脚本说明)--checkpointing_steps
模型保存间隔步数--gradient_checkpointing
自动为 SDXL 启用梯度检查点--learning_rate
基础学习率--scale_lr
学习率缩放(推荐启用但非默认)--lr_scheduler
学习率调度器类型(默认线性预热)--lr_warmup_steps
学习率预热步数
3.6.3 数据相关
--dataset_name
数据集名称(来自 HuggingFace Hub)--cache_dir
本地数据集缓存路径(需根据文件系统调整)--resolution
输入分辨率(非 SDXL 默认 512,SDXL 默认 1024)--random_crop
和--no_hflip
数据增强设置--dataloader_num_workers
数据加载器工作线程数
4 结语
我们希望 Dive Into Stable Diffusion v3.5 能够成为你在探索生成模型道路上的得力助手。无论你是经验丰富的开发者还是初学者,我们都欢迎你参与到这个项目中来,共同推动技术的进步。如果你有任何问题或建议,请随时通过 GitHub 提交 Issue 或 Pull Request。
让我们一起开启这段精彩的旅程吧!
如果觉得有用,别忘了点亮 ⭐️ 支持开源!