lora定制化训练及使用云端部署教程(从部署到使用经验总结)

文本主要介绍利用云端算力,定制化lora生成图片。通过广泛浏览和借鉴多人的文档,借鉴经验,找到的一种最快速最全面的方案。能够完成从lora训练,到模型使用,再到炼丹经验的整个过程。

镜像一键式部署

其实部署不难,主要是需要找到能匹配的环境(cuda,python等其他依赖)比较麻烦。所以直接找到了一种方案,能够直接启动,不必浪费任何时间到部署上
相关开源项目:
1.koyha_ss_GUI: https://github.com/bmaltais/kohya_ss
2.LoRA_Easy_Training_Scripts:https://github.com/derrian-distro/LoRA_Easy_Training_Scripts
3.秋叶大佬的:https://github.com/Akegarasu/lora-scripts / https://gitcode.com/mirrors/akegarasu/lora-scripts/blob/main/README.md
他们底层都是用的:https://github.com/kohya-ss/sd-scripts

视频教程参考(youtube寒彬):
1.sd文生图工具讲解
2.lora定制化训练讲解

前置依赖

  1. AutoDL
    国内性价比比较高的gpu租赁平台,按小时收费,并且里面有现成的大量镜像资源和数据资源。

lora定制化训练部署(autodl+秋叶镜像)

1. 服务器租赁

3090都可以满足需求,一小时1.6

在这里插入图片描述

2. 选择镜像

镜像名称:Akegarasu/lora-scripts/lora-train/v1.7.2,目前最好用的是秋叶大佬的镜像,简单好用,适合国人去用,然后就可以创建了
在这里插入图片描述

3. 进入容器实例

状态为运行中表示已经启动,进入容器实例查看(点右侧jupyterlab)。
在这里插入图片描述

有时候不知什么原因,点击进不去,没关系,可以使用vscode直接连接

3.1 vscode远程连接服务器
  1. 创建连接
    在这里插入图片描述
  2. 输入ssh命令
    复制可以得到ssh -p 39279 root@connect.westb.seetacloud.com
    在这里插入图片描述
  3. vscode输入命令在这里插入图片描述
  4. 登录ssh在这里插入图片描述
  5. 复制密码并进入
    在这里插入图片描述
    在这里插入图片描述
  6. 连接成功 在这里插入图片描述
4. 一键启动

进入后点击终端,在终端里输入

sh run_gui.sh

# # 返回如下,启动成功
09:21:31-508592 INFO     Linux Python 3.10.8 /root/miniconda3/bin/python                   
09:21:32-961402 INFO     Torch 2.0.1+cu118                                                 
                         Torch backend: nVidia CUDA 11.8 cuDNN 8700                        
                         Torch detected GPU: NVIDIA GeForce RTX 3090 VRAM 24260 Arch (8, 6)
                         Cores 82                                                          
09:21:32-969870 INFO     Starting tensorboard...                                           
09:21:33-005458 INFO     Server started at http://127.0.0.1:6006                           
TensorFlow installation not found - running with reduced feature set.

NOTE: Using experimental fast data loading logic. To disable, pass
    "--load_fast=false" and report issues on GitHub. More details:
    https://github.com/tensorflow/tensorboard/issues/4784

TensorBoard 2.10.1 at http://127.0.0.1:6236/ (Press CTRL+C to quit)

这一步看起来很容易,但是如果第一次使用这个方法的人肯定会存在问题,只需要使用以下方法,将能一一解决以下几个问题。
网址输入http://127.0.0.1:6006 即可打开训练加速器。

4.1 端口透出

启动后是一个webui的服务,需要用页面打开,所以需要知道怎么使用公网打开服务。很简单,只需要打开自定义服务就行。
注意!!注意!!!
非常重要的一个问题,autodl能透出的端口只有6006,所以需要在容器实例内保证透出的服务端口是6006.
在这里插入图片描述

4.2 更改服务透出端口

4.1的注意里介绍的很明白,透出的服务端口要是6006,那我们怎么才能改成6006端口呢?
在容器实例左侧找到gui.py,改两个端口。
(1)把原来6006的改成其他(这个是启动tensorbord的服务,暂时用不到,改成其他的端口,但一定不要改成其他的常用端口,不然可能被其他服务占用了)
(2)–port那里改成6006
在这里插入图片描述

4.3 下载huggingface显示网络超时
  1. 官方方案(不知道为什么,没有解决问题)
    启动时候还会遇到的问题就是下载huggingface模型时候因为网络问题显示超时,先来看官方推荐方案:学术资源加速,还可以借鉴下别人使用学术资源加速的案例,不过我没怎么细看
# 在终端中使用
source /etc/network_turbo

# 在Notebook中使用
import subprocess
import os

result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
output = result.stdout
for line in output.splitlines():
    if '=' in line:
        var, value = line.split('=', 1)
        os.environ[var] = value
# 取消学术加速
unset http_proxy && unset https_proxy
  1. 国内站点下载huggingface模型
    参考:国内站点下载huggingface模型
# 方法一
使用 huggingface 官方提供的 huggingface-cli 命令行工具。
# 1. 安装相关依赖 
pip install -U huggingface_hub
# 2. 基本命令示例
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download --local-dir-use-symlinks False facebook/musicgen-small --local-dir musicgen-small

# 方法二 通过设置环境变量来解决
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
source ~/.bashrc

python your_script.py 


# 方法三 代码直接修复
# 本项目解决案例,优点是不需要改代码,速度如果慢再引用学术科学上网加速试试
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
  1. 项目案例展示

在这里插入图片描述

lora定制化训练器使用

参考资料

  1. lora训练流程讲解
    文字介绍的挺详细的,但是没有实例展示
  2. lora训练干货整理
    这里介绍了很多数据收集的渠道,网上打标工具,还整理了不同大佬们git地址,可以借鉴的地方不少。并且介绍了图片预处理使用训练器处理的办法
  3. lora训练实例1
    这里举了一个实际的应用(一个女生的单人写真图片),在这里可以借鉴下别人是怎么实现炼丹的
  4. lora训练实例2
    这里举了一个实际应用(用ldh举例),可以借鉴下。另外这里提出了koya_ss的打标工具的使用,也可以借鉴

数据准备整理

这里整好了下上面几个参考资料提出来的要求,借鉴经验,可以按这个要求准备数据。

1.经验总结
  1. 训练集应当能尽量涵盖训练对象的“多样化样本”,图像人物尽量多角度,多表情,多姿势。如角色立绘图,各个角度不同的图片。
    1.1 照片人像要求多角度,特别是脸部特写(尽量高分辨率),多角度,多表情,不同灯光效果,不同姿势等
    1.2 建议多个角度、表情,以脸为主,全身的图几张就好,这样训练效果最好
  2. 提高训练集的质量:1.减少背景多余的元素。抠低使用纯白底产品图效果更佳。(后期处理的RemBg的智能抠图插件)
  3. 规范图片尺寸1:1
  4. 训练集为训练物品:可以使用更少的训练集。
  5. 图片构图尽量简单,避免复杂的其他因素干扰(白墙或绿幕方式实拍也可)
  6. 数量几十张即可(至少15张图片,每张图片的训练步数不少于100)
  7. 分辨率适中,勿收集极小图像(尽量大一些,但也不要太大)
  8. 数据集需要统一的主题和风格的内容,图片不宜有复杂背景以及其他无关人物
  9. 凸显面部的图像数量比例稍微大点,全身照的图片数量比例稍微小点
  10. 可以单张脸部特写+单张服装按比例组成的一组照片
  11. 减少重复或高度相似的图片,避免造成过拟合

图片收集渠道:
一般情况下,首先会想到去Google的图片中进行搜索,但有时候搜索到的图片分辨率较小,且质量也不是很高。这里Post其他博主推荐的一些图片的网站,仅供参考:
堆糖:https://www.duitang.com
花瓣:https://huaban.com
pinterest:https://www.pinterest.com

分辨率重建方法:
如果收集到的图片过小,可以使用超分辨率重建的方式将图片的方式扩大;然后将所有图片都裁剪成512x512像素大小(虽然SD2.x支持了768x768的输入,但考虑到显存限制,这里选择裁剪到512x512)。对于超分辨率重建,可以使用SD WebUI中Extra页面中进行分辨率放大。详情请参考:https://ivonblog.com/posts/stable-diffusion-webui-manuals/zh-cn/features/upscalers/

图片预处理

1. 数据裁剪工具

这个是在线图片处理网站:https://www.birme.net/

2. 尺寸参数介绍

尺寸须知:
SD 1.4/1.5 :512512
SD 2.0/2.1 :768
768
SD (0.9/1.0) : 1024*1024

数据打标

1. 使用WD 1.4标签器

在这里插入图片描述
存在问题:
模型可能需要科学上网的方式加速,参考4.3下载huggingface显示网络超时的方法解决问题

2. 打标经验总结

2.1 原则
标注里所描绘的标注在生成图片时,如果没有再一次使用对应关键词,则均会在生成时被“AI”剔除。但如果一点标签也不给,AI的学习效果会变差。越希望AI学习的东西越不能出现在标注里。比如如果标记过于全面,则不得不在每次生成时,都将”白头发,红眼睛”加进去。如果你想保留人物的某个特征,那就要把对应的标签删掉,这样AI就会默认这个人就是有这个特征如果你想灵活调整某个特征,那就要把这个特征打上标签。
2.2 打标流程
(1)一句话描述
(2)不希望出现的元素
(3)包含细节的关键词(描述整体的词,角度,颜色等)
(4)对标签进行“清洗”与“纠正”(使用Dataset Tag Editor进行标签纠正)
2.3 实例
(1)对于白墙或绿幕方式实拍的,在标签里加入“白色背景墙的”关键词以及拍摄照片的角度,大段描述词。
(2)假如现在我要训练这个动漫人物的Lora,粉色头发和绿色眼睛就是这个人物的特征,如果你后续在SD里做这个动漫人物的照片希望可以保留她的特征那我们就要把粉色头发和绿色眼睛的标签删掉这样不管我们输入的关键词是白头发或者黑头发,出来的都会是粉色头发,如果你想在SD里自定义头发的颜色,那这里的标签就要打上"粉色头发,所有标签处理好了就可以点击右下角的开始训练啦。
(3)白头发和红裙子是后台加上去的关键词,可以测试Lora的泛化性,泛化性就是看这个Lora能不能自由的去更换照片里的东西,比如发型、发色、服装之类的
2.4 删除标签类型:明确不符合角色特质的错词。

参数学习

秋叶版的训练器里有参数详解,在这里可以详细了解下各个参数的作用
在这里插入图片描述

训练内容输入

参考资料说的很明确了,这里就不过过多介绍,只说几处容易出问题的细节。

  1. 路径需要自己输入。这个路径指/root/lora-scripts下的位置,所以如果全连接是/root/lora-scripts/trains/imgs在这里就换成./trains/imgs。
  2. 模型需要自己提前下载好,提前放到具体的位置。
  3. 分辨率和自己挑选的保持一致。
  4. 下图的4个选项为必写。
  5. 数据集路径。这个路径下放的是图片和打标的文件。
    在这里插入图片描述

训练参数输入

参考资料说的很明确了,这里就不过过多介绍,可以在参数学习的章节里具体看怎么选择,一开始就默认这些选择就好。
在这里插入图片描述
在这里插入图片描述

训练结果输出

结果输出在./output这里

sd部署(autodl+秋叶镜像)

选择autodl服务器

上面讲了不再重复,这里使用3090或者更便宜的都可以满足

镜像选择

上面讲了不再重复,这里使用
AUTOMATIC1111/stable-diffusion-webui/tzwm_sd_webui_A1111 / v18

一键部署启动

一键启动,启动器上直接按这个
在这里插入图片描述
或者终端输入这两行命令效果一样

bash /root/tzwm-autodl-sd-webui/common/scripts/init-download.sh

source /root/tzwm-autodl-sd-webui/common/scripts/init-proxy.sh global && \
bash /root/tzwm-autodl-sd-webui/a1111-pack/scripts/restart-webui.sh

# 结果返回
DiffusionWrapper has 859.52 M params.
Applying attention optimization: xformers... done.
Model loaded in 4.5s (load weights from disk: 1.0s, create model: 0.4s, apply weights to model: 1.0s, apply half(): 1.7s, move model to device: 0.2s).
Running on local URL:  http://127.0.0.1:6006

To create a public link, set `share=True` in `launch()`.
[AgentScheduler] Task queue is empty
[AgentScheduler] Registering APIs
Startup time: 96.1s (launcher: 1.1s, import torch: 2.3s, import gradio: 1.4s, setup paths: 0.9s, other imports: 0.7s, load scripts: 55.9s, create ui: 32.5s, gradio launch: 0.3s, app_started_callback: 0.7s).

登录http://127.0.0.1:6006打开sd页面

点击自定义服务打开页面在这里插入图片描述
在这里插入图片描述

sd结合lora输出定制化训练结果

模型结果转过来

1.跨实例导数据

注意:

  1. 数据源所在服务器需要关机,数据需求所在服务器需要开机
  2. 数据需要提前放到/root/autodl-tmp 进行相互转移
    在这里插入图片描述
    在这里插入图片描述
2.lora模型需要放到指定位置

模型一定要放到指定位置才可以使用。lora模型一定要放到/root/autodl-tmp/models/lora,这个位置下,如果没有lora文件夹就自己创建个,不然sd里就找不到模型了
在这里插入图片描述

3.探查lora模型是否可以显示出来

如图,已经显示出来了
在这里插入图片描述

4.输入提示词及参数设置
1. 训练图片中找一个文本描述作为例子

在这里插入图片描述
如果选这个图片测试,就找他对应的文本标签

cluo, 1boy, male focus, solo, shirt, pants, sitting, blue shirt, denim, stairs, white footwear, shoes, jeans, realistic, short hair, looking at viewer, black hair

在这里插入图片描述

2. 在sd中输入文本标签

3. 参数选择

参数可以选择默认,根据实际结果调整,但是为了验证模型结果,有几个参数需要按要求填写,拉到最下面
X轴值/X values:000002,000004,000006,000008,000010,000012,000014,000016,000018
注意:这个数字是和lora模型对应上
在这里插入图片描述
Y轴值/Y values(这个表示的是权重):0.2,0.4,0.6,0.8,1
在这里插入图片描述

4. 重置输入词

现在在拐回去看输入词
在这里插入图片描述
后面多了个尾巴,其实这个分别是在点击lora模型(点哪个都行)和xy的时候产生的
注意!!!
需要注意的点来了,这个数也不能乱填,需要和xy照应上,不如x第一个是000002,y第一个是0.2,那么这个尾巴就应该是 lora:cluo-000002:0.2
至于为什么这么搞,我们看下一步去展示!

5. 结果展示,生成图片

点击生成图片,这时候应该知道上面是干什么的了吧,是为挑选权重和模型的最优组合,找一下这么多的数据哪个组合和标签对应的图片像,哪个就是结果。
在这里插入图片描述

6. 多来几次,找到最优的模型和权重的组合

感觉最后效果还可以,多调整,多修改,效果肯定会更好
在这里插入图片描述

lora优化

前提是确保我们的喂给AI的素材是高质量的!不然不管怎么修改参数,出来的Lora都是不合格的,这里我们就把炼Lora会遇到的问题分成两种情况。
1.Lora出来的照片不像本人:AI没学好
2.Lora过拟合,甚至出来的照片崩了:AI学过头了
过拟合就是不管输入什么关键词,出来的照片都是你喂给AI的照片
没办法自由控制人物的服装、发型、发色等,点击"参数调优"我们就可以自行设置参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值