# Kohya训练指南 - Stable Diffusion 亚马逊云科技插件解决方案
Stable Diffusion 亚马逊云科技插件解决方案实施指南

跳转至

# 训练指南

训练基于Kohya-SS。 Kohya-SS是一个Python库，用于微调稳定扩散模型，适用于消费级GPU，并兼容稳定扩散WebUI。该解决方案可以在SDXL和SD 1.5上进行LoRA训练。如需体验UI的模型训练功能，需依循‘部署解决方案章节’中的‘新用户部署SD webUI’部分，进行webUI的部署。

## 训练用户指南

进入 Amazon SageMaker 面板，选择Train Management进入训练面板。 开始训练lora之前需要设置三部分内容：基础模型准备，数据集准备，设置训练参数，下面分别进行介绍。

### 准备基础模型

请刷新并查看Model下拉列表，确认本次训练所需的基础模型已经存在。否则，可以通过云上资源管理中的上传模型功能，将基础模型上传至SD Checkpoints类别下。

同时，您也可以通过以下命令将本地SD模型上传到S3存储桶：

    # 配置凭证
    aws configure
    # 将本地SD模型复制到S3存储桶
    aws s3 cp *safetensors s3://<bucket_path>/<model_path>

注意

上图中两个红色框中选择需要匹配，即FM Type和Model类型保持一致，否则无法成功训练

### 准备数据集

数据集是模型训练、调优不可或缺的输入资料。

在以训练任务风格的LoRa模型为例，用户需要提前准备一个图片集，有统一主题或风格的、分辨率适中的图片，几十张即可。针对这个图片集，用户需要做预处理以适配基础模型能力，比如建议在针对基础模型SD 1.5的LoRa模型训练任务重，将图片提前裁剪成512 X 512像素大小。

预处理结束后，需要针对该图片集进行图片标注工作，即对每张训练图片加以文字描述，并保存为与图片同名的txt格式文本。图片标注可以通过SD WebUI中自带的图像标注功能，或者可以通过多模态大模型来完成。模型的标注也许不够完美，建议人工进行审核调整，以保证最终效果。

下图给出一个示例，每个图片有一个对应的txt文件，txt文件内容为图片的英文描述。

数据集准备完成后，请依循以下步骤，完成数据集上传。

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，即表示该数据集已经成功上传到云上。

贴士

本方案也提供自动基于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>

注意

folder_name应以数字和下划线开头，例如100_demo。每个图像应与具有相同名称的txt文件配对，例如demo1.png，demo1.txt，demo1.txt包含demo1.png的标题。

另外，本解决方案提供基于WD14的图片标注方法。如果需要启用该自动标注方法，

### 设置训练参数

在训练界面config_params添加训练参数，图中给出了简单的一个参数示例，用户根据不同训练任务 配置更多参数，参数内容参考https://github.com/kohya-ss/sd-scripts/blob/6b1520a46b1b6ee7c33092537dc9449d1cc4f56f/docs/train_network_README-zh.md

注意

参数中"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指南或img2img指南进行推理工作。

### 训练Loss的可视化

在 Train Management 页面, 所有训练完的任务都展示在Training List, 点击训练id, 下面会出现日志链接. 点击该链接，则会跳转到新的网页，即loss可视化的界面。

### 调用训练API

参考API文档调用训练API。