手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

许多同学都想要自己的专属AI模型,可是大模型的练习比较费时费力,不太适宜普通用户玩。AI开发者们也意识到了这个问题,所以就产生了微调模型,LoRA便是其间的一种。在AI绘画范畴,只需求少数的一些图片,就能够练习出一个专属风格的LoRA模型,比方或人的脸、某个姿态、某种画风、某种物体,等等。

练习模型经常被咱们戏称为“炼丹”,这个词既给咱们带来了美好的期待,也体现了模型创造进程的不易。好像炼丹需求精心呵护,AI模型的练习也需求耐性和细致。然而,即使付出了辛勤的努力,终究的结果也未必能如人意。这是咱们需求做好的心理预备。

LoRA的原理网上现已有许多介绍,我就不说了。本文专门介绍在云环境怎样练习LoRA模型,所谓云环境便是放在机房中的长途服务器,而不是在本地电脑上,这特别适宜想一展身手可是手里又没有一块好显卡的同学。

这儿的云环境挑选我经常运用的AutoDL:www.autodl.com , 关于AutoDL的运用办法,本文只环绕练习LoRA模型做一些简略的介绍,想了解更多的同学请看我写的另一篇文章:手把手教你在云环境部署 Stable Diffusion WebUI 。

本文将运用 kohya_ss 这个开源项目来练习LoRA模型, 下面正式开端。

云环境

AutoDL上需求先充米然后才能运用服务器,能够先来2个米的,以便完结本次练习。

服务器

简略说下,计费办法挑选“按量”,区域挑选“内蒙A区”,GPU型号挑选“RTX A5000”,GPU数量挑选“1”,然后挑选1个有空闲GPU的主机。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

镜像这儿挑选“社区镜像”,输入“yinghuoai-kohya”,在弹出的菜单中挑选我发布的这个镜像。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

然后点击“当即创立”就能够了。

在 AutoDL 操控台等待服务器实例开机,开机成功后,在便利东西这儿能够看到一些操作项,点击其间的“JupyterLab”。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

在 JupyterLab 中点击笔记本上方的双箭头按钮,它会进行一些初始化操作,并发动 kohya_ss,待看到“Running on local URL”的提示后,就阐明发动成功了。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

然后回到 AutoDL 操控台,点击便利东西中的“自定义服务”,即可发动 kohya_ss 的Web界面。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

练习目录

为了有用的办理模型练习,我在镜像中创立了几个目录,能够经过“JupyterLab”检查,它们都在 /root/autodl-tmp 下边,autodl-tmp 挂载的是 AutoDL 的数据盘,能够节约宝贵的体系盘空间。

  • /root/autodl-tmp/models:SD大模型目录,练习Lora模型时需求依据某个大模型。
  • /root/autodl-tmp/train:练习数据的目录,包括输入的图片、练习的参数、输出的Lora模型等,咱们将在这个目录下创立不同的练习项目目录。

实践作用如下图所示:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

快速领会

我在镜像中内置了一份练习数据和练习配置,能够让咱们快速领会 Lora 炼丹。

经过 AutoDL 的自定义服务发动页面后,依次点击“LoRA”->“Training”。

  • 在“Configuration file”这儿输入我提前预置好的练习配置文件地址:/root/autodl-tmp/train/dudu/config.json ;
  • 然后点击“Load”加载练习参数;
  • 最后点击“Start training”开端练习。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

练习的进展需求去 JupterLab 中检查,大约需求8分钟,当看到 steps 显示 100%的时分就阐明练习完结了,模型现已保存到目录:/root/autodl-tmp/train/dudu/model

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

练习进程中会生成几张采样图片,保存在 /root/autodl-tmp/train/dudu/model/sample ,能够打开看看练习的作用:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

为了实践领会,需求把模型文件先下载到本地,然后再上传到 Stable Diffusion WebUI,运用文生图生成图片,参阅参数:

  • 大模型:realisticVisionV51_v51VAE,其它实在模型也能够试试。
  • 提示词:masterpiece, best quality, 1dog, solo, sitting, looking at viewer, outdoor, the background is egyptian pyramids,tall pyramids lora:dudu_log:0.8
  • 反向提示词:low quality, worst quality, harness, tree, bad anatomy,bad composition, poor, low effort
  • 图片尺度:768*768

留意:假如你要重新练习这个项目,需求先删去 model 目录下的内容,然后再重新开端练习。


快速领会只能让咱们简要领会炼丹的魅力。然而,要炼就一颗完美的丹药,还需备足图片素材、洞悉东西参数设置,以及不断测验优化模型。接下来,我将为咱们详细解析如何稳扎稳打,精心打造你的Lora模型。

预备

首要便是预备好要练习的图片,以及为图片生成提示词。然后才能把它们送进丹炉进行炼制。

挑选图片

练习Lora模型到底需求几张图片?我没找到具体要求,主张至少10张以上,而且要求图片明晰有质感,假如是针对某种个体的,拍照目标的视点要多样,这样才或许练习出比较好的模型。

假如你手头没有适宜的图片,能够自己拍照,也能够去百度图片等图片网站找高清大图。

网上的教程大多是练习美人脸的,估计咱们也都看烦了,所以我挑选了一个狗子的图片进行练习,它的名字叫dudu,姿态大概是下图这样的。我预备的图片数量有20张,现已内置到我发布的 AutoDL 镜像中。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

切图

图片需求处理成相同的尺度,尺度能够是 512512、512768,512*640,都是64的倍数。显存低的能够用 512,显存高的能够用 768。这儿给咱们共享一个裁切图片的网站:www.birme.net/ ,操作办法如下图所示:

  • 左面挑选本地要裁切的图片。
  • 右边是裁切设置,能够设置裁切的尺度等。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

留意 RENAME 能够让输出的图片名称更加有序,便利练习程序运用,xxx 代表三位数字,下边的 starting number 代表从哪个数字开端排序。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

部署图片

图片处理成功后,需求放到特定的目录中。

咱们先在 /root/autodl-tmp/train 下创立一个项目目录,我这儿就用狗子的名字:dudu,然后在这个目录下再创立一个 img 目录,用于放置处理好的图片,不过图片还不能直接放到 img 下,还需求创立一个子目录:100_dudu,这个目录的名字是有讲究的,前边的100代表每张图片需求学习100次,后边的 dudu 便是图片的主题名字。

这儿的学习次数没有固定的规范,实在图片主张50-100,二次元15-30。假如终究练习出的模型出现过拟合的问题,比方生图提示词写了蓝眼睛可是生成的都是黑眼睛,能够下降下学习次数试试。

把裁切好的图片上传到 /root/autodl-tmp/train/dudu/img/100_dudu 这个目录,如下图所示:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

图片打标

所谓打标便是给图片编写提示词,一般先运用提示词反推东西生成提示词,然后再依据实践状况修正生成的提示词。

发动 kohya_ss 后,进入打开的 Web 页面,依次进入“Utilities”->“Captioning”->”BLIP Captioning”。

“Image folder to caption”中输入待打标的图片目录,我这儿便是:/root/autodl-tmp/train/dudu/img/100_dudu。

“Caption file extension”是生成的提示词文件的后缀名。

“Prefix to add to BLIP caption”是添加到生成提示词中的固定前缀,练习中假如运用了这些前缀,生成图片时就能够运用这些前缀比较便利的触发Lora模型,可是依据经历也不能保证一定触发。后边还有一个参数“Postfix to add BLIP caption”,这个是固定后缀。前缀在处理图片时的优先级更高一些。

其它参数都用默许就好了,有兴趣的能够研讨下,我这儿就不展开了。

最后点击“Caption images”。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

留意这个东西的页面中都没有进展盯梢,需求到 shell 或许操控台界面检查,看到 100% 的进展条,以及“captioning done”的提示就阐明打标完结了。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

此时咱们进入待练习的图片目录,就能够看到这些打标文件了。能够看到,每张图片都生成了对应的打标文件。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

咱们能够双击打开这些 txt 文件,检查其间的内容;假如感觉写的欠好,能够修正它。

生成的提示词一般多多少都会有些问题。

  • 对于画风类型的Lora,能够保存全部生成的标签,可是在练习时要多练习几轮,练习时间或许比较长。
  • 对于特定人物的Lora,假如咱们想保存某个特征作为人物的自带特征,就把对应的标签删去,比方长头发,这样Lora中就会保存长头发作为人物的特征。不过这也是有缺点的,或许导致生成图片时过拟合:提示词不收效,比方输入短发生成的还是长发,严重的还或许导致画面崩坏、模糊不清。

修正提示词是个大工程,这儿为了赶快演示,就不修正提示词了。

别的在这个东西中,咱们能够看到,除了 BLIP,还有三个给图片打标的办法,不过我都没有跑成功,有兴趣的能够一同研讨下。

假如你不运用 kohya_ss 自带的打标东西,也是完全能够的,比方 SD WebUI 的“练习”功用中也能够裁切图片并反推提示词,仅仅需求手动上传打标文件到这儿的练习目录中。这儿再引荐一个提示词编辑东西:github.com/starik222/B…,有兴趣的能够去试试。

练习

参数设置

练习模型的参数许多,还会涉及到深度学习的一些概念,之前没触摸过的同学或许会感觉头疼,不过没关系,我会尽量把首要的参数说清楚。

kohya_ss 发动后,依次进入“LoRA”->“Training”。

Source Model

设置练习运用的 Stable Diffusion 大模型,“Model Quic Pick”这儿能够挑选一些 SD 的基础大模型,练习的时分会先去 HuggingFace 下载,不过我实践测验跑不同,所以这儿挑选 custom,然后自己上传一个模型,由于练习图片是实在世界的狗子,所以这儿运用了realisticVisionV51(运用AutoDL镜像的同学不必再上传,现已内置了),这是一个实在视觉模型。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

Folders

设置练习模型时的输入输出目录。

  • Image folder 是练习数据集的目录,也便是原图片的目录,留意只到 img 这一级,不是直接存放图片的目录,这儿的完整途径是:/root/autodl-tmp/train/dudu/img 。
  • Output folder 是练习出的Lora模型保存的目录,练习进程中的采样图片也保存在这个目录下,和 Image folder 运用同一个上级目录就行了,这儿的完整途径是:/root/autodl-tmp/train/dudu/model 。
  • Logging folder 望文生义,便是练习的日志目录,和 Image folder 运用同一个上级目录就行了,这儿的完整途径是:/root/autodl-tmp/train/dudu/log 。
  • Model output name 是练习出的Lora模型的文件名前缀。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

Parameters

进入到真实的参数设置环节了,前边仅仅些开胃小菜。

先来看基本参数(Basic):

  • Train batch size:一起练习的样本图片数,默许为1,显存 12G 以上能够设置为2-6,请依据实践显存运用状况设置,数值越大练习速度越快。
  • Epoch:练习的轮数,一轮便是把所有的样本图片完结一次练习。一般需求练习多轮,然后依据实践生图状况挑选适宜的次序模型。轮数越大,练习需求的时间越多。
  • Save every N epochs:每隔几轮保存一次练习出的模型,咱们想要测验每一轮输出的模型,所以这儿填写1。
  • Caption Extension:样本图片对应的打标文件的后缀名,之前打标用的是 .txt,这儿填上就行了。
  • Mixed precision 和 Save precision:计算运用的浮点数精度操控,都挑选fp16就好了,能够节约内存运用。bf16精度略低,可是表明的整数范围更大,数据类型转化也更简单,不过要看显卡能不能支撑。
  • Number of CPU threads per core:单个CPU核心的线程数,能够理解为一个CPU核心能够一起干两件事。一般都是2,我租借的这台服务器也是2,能够用 lscpu 等指令检查。不确定的设置为1。
  • Seed:练习运用的随机数,随便填一个就行。假如需求提高之前构建过的模型(在 LoRA network weights 中填写之前构建过的模型),运用相同的随机数。
  • Cache latents:勾选上,能够让练习速度更快。
  • Learning rate:学习率,能够理解为每次学习走过的长度,值越小,练习的越慢,值越大,步子越大,就不简单找到规则,模型难以收敛。所谓收敛便是经过练习让模型不断得到优化的进程,难以收敛便是无法优化模型,模型生成的图片和样本图片偏差过大。

这一行都是有关学习率的参数设置,也便是怎样让模型收敛的又快又好,都是一些算法,先用我这儿默许的吧,欠好使再换。

    • LR Scheduler:学习率调度器,它会主动调整学习率,我一般运用constant。
    • LR warmup (% of steps):升温步数,仅在“LR Scheduler”为“constant_with_warmup”时设置,用来操控模型在练习前逐渐添加学习率的步数。
    • Optimizer: 首要用来更新模型中的权重和偏差等参数,以便更好的拟合数据。有的优化器也能够直接影响学习率。先试试 AdamW8bit 吧。
  • Max resolution:练习的最大分辨率,设置为样本图片的分辨率即可。
  • Enable buckets:发动后支撑多种分辨率的样本图片,程序会主动裁切,这儿我现已都裁切成768了,勾不勾选无所谓了。
  • Text Encoder learning rate:文本编码器的学习率,主张从0.00005开端,后面的Unet learning rate要比前面的大,设置成 0.0001,设置这个值会导致疏忽上面的 Learing rate,保持一致吧。
  • Network Rank:模型的神经网络参数维度,默许是8,主张 32、64、128,值越大模型越精细,生成的模型文件也越大。 Network Alpha 保持相同的值就好。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

高级参数(Advanced)中咱们看下这几个:

  • Clip skip:默许为1。设置为大于1的数时,在练习时能够跳过一些处理,进而能够避免过拟合,增强模型的泛化能力,但也不易过大,会丢掉特征。最好与对应大模型在练习时设置的参数相同。
  • Memory efficient attention:能够优化显卡内存的运用,但会导致学习速度变慢。
  • CrossAttention:用于相关图画和提示词的加速算法,一般就挑选 xformers,加速图片生成并下降显存占用,xformers只适用于N卡,未来或许应用于其它显卡。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

最后还有个采样参数(Samples),运用它能够盯梢练习作用:

Sample every n steps:每学习N步,生成一张图片。

Sample every n epochs:每学习N轮,生成一张图片,实测敞开这个会覆盖 Sample every n steps。

Sample sampler:采样器,和SD WebUI中默许的采样器相同。

Sample prompts:采样提示词,这儿包括了提示词、反向提示词、图片尺度、采样步数等。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

完结练习

点击“Start Training”之后,还是到操控台中检查处理进展。

由于每张图片学习100步,一起练习的数量是1,所以25张图片练习一次就要学习2500步,一起指定了次序是3,所以总计是7500步。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

练习完结后,能够看到 100% 的提示,模型现已保存到相应的目录。

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

测验

模型练习好了,怎样知道好欠好使呢?那当然要做测验时,实践抽抽卡。

笨点的办法便是挨个测验,测验不同权重、提示词、大模型等状况下的体现。

这儿共享一个快速比照测验的办法,运用 X/Y/Z图表。

提示词中添加变量,如下图所示的姿态引用Lora模型:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

留意这儿的:lora:dudu_log-NUM:WEIGHT ,NUM和WEIGHT是两个变量。

  • NUM:由于我运用了多次序的练习,获得了多个Lora模型,所以需求测验不同练习次序的模型体现,这些模型的名字是有规则的:dudu_log-000001、dudu_log-000002、… ,每添加一轮练习,生成的模型名字序号就会加1。NUM 便是代表 000001、000002 的变量。
  • WEIGHT 是运用当前 Lora 模型的权重变量,这儿要测验不同权重下模型的体现。

X/Y/Z图表在文生图、图生图页面的最下方:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

脚本类型挑选:X/Y/Z图表

X轴类型挑选:Prompt S/R,X轴值填写:NUM,000001,000002

Y轴类型挑选:Prompt S/R,Y轴值填写:WEIGHT,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1

空格边距填写:2,生成的图片之间做个切割。

然后咱们去生成图片,生成图表如下:

手把手教你在云环境炼丹:Stable Diffusion LoRA 模型保姆级炼制教程

然后咱们就能够比照不同模型、权重下的出图作用,我这儿模型 000002 更挨近实在图片,权重 0.5-0.9 作用会比较好,1.0就有点过拟合了。

X/Y/Z图表中还有许多的维度能够测验,比方大模型、迭代步数、采样器、提示词引导体系等等,有兴趣的能够多去测验下。

优化

仅共享我的一点经历和领会。上面也提到了一些,这儿做个总结。

  • 练习用的图片一定要高清,不要模糊,人物尽量多视点,原图对练习结果的差异特别大。假如没有高清的图,能够去 SD WebUI 的图生图中重绘模糊的图片,或许运用其它的软件高清化图片。
  • 练习用的提示词:在提示词中去掉你想在生成图片时保存的人物特征,添加你答应生成图片时替换的人物特征。比方你想保存人物的长头发,那就在提示词中去掉长头发,这样生成图片时就有很大的概率都是长头发;假如你想要人物的眼睛色彩能够替换,就在练习提示词中写上黑色眼睛,这样生成图片时就能够运用蓝色眼睛的提示来替换人物的眼睛色彩。
  • 多次序练习:练习一轮的作用或许欠好,成本答应的话,主张多练习几轮,然后比照不同次序下的模型出图作用,挑选最适宜的那个。
  • 练习步数:每张图片练习多少次才适宜?练习的少了提取的特征不够,练习多了简单过拟合。二次元主张15-30次,其它图片50-100次。练习的图片少,每张图就能够多练习几回,练习的图片多,每张图就能够少练习几回。

相关下载

本文运用的模型、插件,生成的图片,都现已上传到了我整理的SD绘画资源中,后续也会持续更新,如有需求,请关/注/公/众/号:萤火遛AI(yinghuo6ai),发消息:SD,即可获取下载地址。


以上便是本文的首要内容,如有问题欢迎沟通!