文档

Kohya使用方法与实践案例

更新时间:

本文为您介绍如何训练LoRA模型。

背景信息

Stable Diffusion(下文简称SD)是深度学习文生图的一个模型,相对Midjourney,其显著优势在于开源性。SDWebUI是SD的一个可视化浏览器操作界面,它集成了丰富的功能,不仅可以在网页端进行文生图、图生图等操作,还可以通过安装各类插件以及导入多种模型等方式,满足更高程度的定制化的绘图需求,从而生成一个较为可控的结果。

通过SDWebUI服务生成各种图片需要使用多种模型,模型的能力直接决定生成图片的效果。不同的模型具有不同的侧重点,不同模型有各自的特色与适用领域,需要针对性地采用不同的训练数据集及训练策略来培养。其中,LoRA是一种轻量化的模型微调训练方法,在原大模型的基础上对模型微调,生成特定的角色或画风。LoRA模型训练方式速度较快,模型文件大小适中,对训练的配置要求较低。

Kohya是当前应用比较广泛的训练LoRA模型的开源服务。Kohya's GUI是一个程序包,整合了训练需要用到的环境,提供可以用于模型训练的用户界面,所有动作都在自身环境中运行,不会干扰其他的程序。在SDWebUI里也可以使用一些扩展插件去做模型训练,但如果都在SD中操作有时候会互相干扰,产生报错 。

其他模型微调方法请参见模型介绍

准备LoRA训练数据集

确定LoRA类型

首先您需要确定希望训练的LoRA模型的类型,比如是角色类型还是风格类型。

例如,需要训练一个阿里云进化设计语言体系下的阿里云3D产品图标风格的风格模型。image.png

数据集内容要求

数据集由图片和图片对应的文本描述标注两种文件组成。

准备数据集内容:图片

  • 图片要求

    • 数量:15张以上(一般不小于10张)。

    • 质量:分辨率适中,画质清晰。

    • 风格:需要一套统一风格的图片内容。

    • 内容:图片需凸显要训练的主体物形象,不宜有复杂背景以及其他无关的内容,尤其是文字。

    • 尺寸:分辨率是64的倍数,显存低可以裁剪为512*512,显存高可以裁剪为768*768。

  • 图片预处理

    • 质量调整:图片分辨率适中即可,保证画质清晰,但也无需太大。画质会影响模型训练的结果。如果自己准备的图片分辨率比较小,不是很清晰,可以使用SD WebUI中Extras页面中进行分辨率放大,也可以使用其他图像处理工具去处理图像的分辨率。

    • 尺寸调整量调整:可以前往像birme这种站点批量裁剪后批量下载,也可以使用SDWebUI裁剪或手动裁剪。

  • 图片部分准备完毕示例

    image.png

    将图片存放至本地文件夹中。

    image.png

创建数据集并上传文件

上传前需要注意文件的属性和命名要求,如果只是用平台管理数据集文件或者给图片打标,直接上传文件或文件夹都可以,对这些文件和文件夹的命名没有特殊要求。

如果数据集打标完之后,需要用平台的Kohya做LoRA模型训练,对于上传的文件属性和命名要求如下。

  • 命名格式:数字+下划线+任意名称

  • 命名含义:自定义。

  • 数字:每张图片重复训练次数,一般要求≥100。总训练次数一般要求>1500,因此若文件夹内包含10张图片,则每张图片训练1500/10=150次,图片文件夹名数字部分可为150;若文件夹内包含20张图片,则每张图片训练1500/20=75(<100)次,图片文件夹名数字部分可为100。

  • 任意名称:本文以100_ACD3DICON为例,您可以根据实际情况自定义。

  1. 创建数据集

    在数据集页面,单击新建数据集,并输入数据集名称,此处以acd3dicon为例。

    image

  2. 上传数据集文件

    单击已创建的数据集,将整理好的数据集图片文件夹从本地拖拽上传。

    image

    上传成功。

    image.png

  3. 进入到文件夹里可以查看到已上传的图片。

    image.png

准备数据集内容:图片标注

图片标注是指每张图片对应的文字的描述,文字描述的标注文件,是与图片同名的TXT格式的文件。

  • 图片标注要求

    例如,针对这类3D图标画面打标的信息维度的拆分。image.png

    分类

    关键词

    业务

    产品/业务

    数据库、云安全、计算平台、容器、云原生等(英文)

    云计算元素

    Data processing、Storage、Computing、Cloud computing、Elastic computing、Distributed storage、Cloud database、Virtualization、Containerization、Cloud security、Cloud architecture、Cloud services、Server、Load balancing、Automated management、Scalability、Disaster recovery、High availability、Cloud monitoring、Cloud billing

    设计(质感)

    环境&构图

    viewfinder、isometric、hdri environment、white background、negative space

    材质

    glossy texture、matte texture、metallic texture、glass texture、frosted glass texture

    照明

    studio lighting、soft lighting

    色彩

    alibaba cloud orange、white、black、gradient orange、transparent、silver

    情绪

    rational、orderly、energetic、vibrant

    质量

    UHD、accurate、high details、best quality、1080P、16k、8k

    设计(氛围)

    ...

    ...

  • 给图片添加标注

    您可以手动为每个图片添加对应的文字描述,但当图片量非常大的情况下,手动打标非常耗时耗力。此时您可以选择借助神经网络,完成对所有图片批量生成文本描述的工作。您也可以在Kohya中选择使用一个叫做BLIP的图像打标模型。

打标数据集

  1. 在Kohya-SS页面,选择Utilities>Captioning>BLIP Captioning

  2. 选择已创建的数据集里面上传的图片文件夹。

  3. 输入一些预置词,这是让机器给每一张图片都批量加上您输入的标注文本。您可以结合自己对数据集图片拆分的维度去添加预置词,不同类型的图片打标的维度也不同。

  4. 单击Caption Image即可开始打标。

    image

  5. 在下方的日志里可以查看打标的进度和打标完成的提示。image.png

  6. 再返回到数据集里面,可以看到刚才上传的图片已经有对应的标注文件。image.png

  7. (可选)对于不合适的标注可以手动修改。image.png

kohya实操:LORA模型训练

  1. 在Kohya-SS页面,选择LoRA>Training>Folders

  2. 选择已上传了数据集文件夹的数据集。

    说明

    数据集文件打标时,要选到数据集下面图片的文件夹;做模型训练时,要选择放置数据集文件夹的数据集。

  3. 设置训练参数。

  4. 单击Start training

    image

  5. 在下方的日志里可以查看模型训练进度和模型训练完成的提示。image.png

Training Parameters 部分常用训练参数介绍说明

参数

功能

设置说明

LoRA Type

选择LoRA类型

  • LoCON:可以调整SD的每一层如Res,Block,Transformer。

  • LoHA:同样大小处理更多信息。

LoRA network weights

LoRA网络权重,如果要接着训练则选用最后训练的LoRA

选填。

Train batch size

训练批量大小

根据显卡性能,12 GB显存最大为2,8 GB显存最大为1。

Epoch

训练轮数——将所有数据训练一次为一轮

自行计算。一般:

Kohya中总训练次数=训练图片数量x重复次数x训练轮数/训练批量大小。

WebUI中总训练次数=训练图片数量x重复次数。

使用类别图像时,在Kohya或在WebUI中总训练次数都会乘2;在Kohya中模型存储次数会减半。

Save every N epochs

每N个训练周期保存一次

如设为2,则每完成2轮训练保存一次训练结果。

Caption Extension

打标文件扩展名

选填。 训练图集中注解/提示文件的格式,.txt。

如图:image.png

Mixed precision

混合精度

视显卡性能决定。默认可选no、fp16、bf16。30以上显卡可选bf16。

Save precision

保存精度

同上。

Number of CPU threads per core

CPU每核线程数

主要为显存,根据所购实例和需求调整。

Learning rate

学习率

默认0.0001。

LR Scheduler

学习率调度器

下拉列表,按需选择cosine或cosine with restart等函数。

LR Warmup(% of steps)

学习预热步数

按需调节,默认为10,可以选不要(0)。

Optimizer

优化器

按需选择,默认AdamW8bit,DAdaptation自动操作。

Max Resolution

最大分辨率

根据图片情况。

Network Rank (Dimension)

模型复杂度

一般默认可设64能适应大部分场景。

Network Alpha

网络Alpha

建议可以设小,rank和alpha设置影响最终输出lora大小。

Convolution Rank (Dimension)

& Convolution Alpha

卷积度

Lora对模型的微调涵盖范围。根据LoRA Type不同做调整。

Kohya官方建议:

LoCon:dim<=64,alpha=1(或更低)

LoHA:dim<=32,alpha=1

clip skip

文本编码器跳过层数

Clip跳过,二次元选2,写实模型选1,动漫模型训练最初就有跳过一层,如使用训练素材也是二次元图像,再跳一层=2。

Sample every n epoch

每n轮样本

每几轮保存一次样本。

Sample Prompts

提示词样本

提示词样本。需要使用命令,参数如下:

  • --n:提示词、反向提示词。

  • --w:图片宽度。

  • --h:图片高度。

  • --d:图像种子。

  • --l:提示词相关性(cfg)。

  • --s:迭代步数(steps)。

  • 本页导读 (1)
文档反馈