stable-diffusion-aws-extension/docs/zh/user-guide/training-guide.md

82 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 训练指南
训练基于[Kohya-SS](https://github.com/kohya-ss/sd-scripts)。 Kohya-SS是一个Python库用于微调稳定扩散模型适用于消费级GPU并兼容稳定扩散WebUI。该解决方案可以在SDXL和SD 1.5上进行LoRA训练。如需体验UI的模型训练功能需依循部署解决方案章节中的新用户部署SD webUI部分进行webUI的部署。
## 训练用户指南
进入 Amazon SageMaker 面板选择Train Management进入训练面板。
开始训练lora之前需要设置三部分内容基础模型准备数据集准备设置训练参数下面分别进行介绍。
![Kohya Training](../images/training_model.png)
### 准备基础模型
请刷新并查看**Model**下拉列表,确认本次训练所需的基础模型已经存在。否则,可以通过[云上资源管理](./webUI/CloudAssetsManage.md)中的**上传模型**功能,将基础模型上传至*SD Checkpoints*类别下。
同时您也可以通过以下命令将本地SD模型上传到S3存储桶
```
# 配置凭证
aws configure
# 将本地SD模型复制到S3存储桶
aws s3 cp *safetensors s3://<bucket_path>/<model_path>
```
!!! warning "注意"
上图中两个红色框中选择需要匹配即FM Type和Model类型保持一致否则无法成功训练
### 准备数据集
数据集是模型训练、调优不可或缺的输入资料。
在以训练任务风格的LoRa模型为例用户需要提前准备一个图片集有统一主题或风格的、分辨率适中的图片几十张即可。针对这个图片集用户需要做预处理以适配基础模型能力比如建议在针对基础模型SD 1.5的LoRa模型训练任务重将图片提前裁剪成512 X 512像素大小。
预处理结束后需要针对该图片集进行图片标注工作即对每张训练图片加以文字描述并保存为与图片同名的txt格式文本。图片标注可以通过SD WebUI中自带的图像标注功能或者可以通过多模态大模型来完成。模型的标注也许不够完美建议人工进行审核调整以保证最终效果。
下图给出一个示例每个图片有一个对应的txt文件txt文件内容为图片的英文描述。
![Kohya Training](../images/training_data.png)
数据集准备完成后,请依循以下步骤,完成数据集上传。
1. 点击**Click to Upload a File**,在弹出的本地文件列表中,确认选中一次模型微调所需的所有图片。
2. 在**Dataset Name**输入该图片文件夹的名字
3. 在**Dataset Description**输入该数据集的描述
4. 在**Path Prefix**输入文件夹名称,该名称**应以数字和下划线开头**,比如上图中写的 **10_tusiji**下划线前边的数字表示训练中一个epoch使用数据集的次数10代表一个epoch会重复使用该图片集10次
5. 点击**Create Dataset**。
等待几秒下方的Create Result区域显示Complete Dataset XXXX creation即表示该数据集已经成功上传到云上。
!!! info "贴士"
本方案也提供自动基于WD14的图片自动标注方式。为启动该自动标注功能用户需遵循上方步骤完成仅包含图片的数据集上传。之后在**Train Management**标签页的**config_params**找到*enable_wd14_tagger*并设置为true。之后点击**Create Training Job**即会自动在送图片集进入模型训练前进行WD14图片标注。
另外用户可以通过以下方式将数据集上传通过执行AWS CLI命令将数据集复制到S3存储桶
```
aws s3 sync local_folder_name s3://<bucket_name>/<folder_name>
```
!!! warning "注意"
folder_name应以数字和下划线开头例如100_demo。每个图像应与具有相同名称的txt文件配对例如demo1.pngdemo1.txtdemo1.txt包含demo1.png的标题。
另外本解决方案提供基于WD14的图片标注方法。如果需要启用该自动标注方法
### 设置训练参数
在训练界面**config_params**添加训练参数,图中给出了简单的一个参数示例,用户根据不同训练任务
配置更多参数参数内容参考https://github.com/kohya-ss/sd-scripts/blob/6b1520a46b1b6ee7c33092537dc9449d1cc4f56f/docs/train_network_README-zh.md
!!! warning "注意"
参数中"output_name": "model_name"model_name 为训练后存储的模型名字,无需添加后缀。
### 训练LoRa模型
待基础模型及数据集上传完成后,请遵循以下步骤:
1. 进入**Train Management**标签页,在**Training Instance Type**下拉列表选择训练作业所需的机器类型,通过**FM Type**选择此次训练的基础模型类型即基于Stable Diffusion 1.5或者Stable Diffusion XL通过**Model**选择此次训练的基础模型,通过**Dataset**选择本次训练需要依赖的数据集
2. 通过**config_params**调整基础训练参数,点击**Format Config Params**来检查并修改更新后的训练参数文件格式
3. 点击**Create Training Job**来提交模型训练作业
4. 后续训练状态可以通过刷新右侧**Tranings List**来跟进训练任务状态。
5. 成功训练完成的LoRa模型可以直接在txt2img, img2img对应的云上LoRa模型选择列表直接选取并参考[txt2img指南](./webUI/txt2img-guide.md)或[img2img指南](./webUI/img2img-guide.md)进行推理工作。
### 训练Loss的可视化
**Train Management** 页面, 所有训练完的任务都展示在**Training List**, 点击训练id, 下面会出现日志链接.
![Training List](../images/traininglist.jpg)
点击该链接则会跳转到新的网页即loss可视化的界面。
![Training Loss](../images/trainingloss.jpg)
### 调用训练API
参考[API文档](https://awslabs.github.io/stable-diffusion-aws-extension/zh/developer-guide/api/1.5.0/)调用训练API。