0xSoul 发表于 2023-4-9 12:00:15

LoRA(kohya-ss)AutoDL Linux 训练端部署教程

前言

本教程适用于在AutoDL上的Linux系统内部署LoRA的训练端kohya-ss/sd-scripts(https://github.com/kohya-ss/sd-scripts),用于训练LoRA模型。训练出的模型适用于stable-diffusion-webui的插件kohya-ss/sd-webui-additional-networks(https://github.com/kohya-ss/sd-webui-additional-networks)。

在AutoDL上的测试结果,3090、A5000上均成功进行训练。


1. 选择conda镜像

使用干净的miniconda镜像,便于切换python版本,并且可以避免容量不够;版本选择3.8(ubuntu20.04);cuda版本为11.6,因为kohya-ss安装的pyTorch适用的cuda版本为cu116。如果和webui安装在一台服务器,通过conda虚拟环境区分,理论上可行,未进行试验。

2. 构建conda虚拟环境

# 构建一个python3.10的conda虚拟环境my-env,并激活,必须3.10

# 保证之后所有python相关的安装均会在这个虚拟环境下进行

conda create -n my-env python=3.10 -y
conda init bash && source /root/.bashrc
conda activate my-env
3. 安装LoRA相关依赖

# 进入https://www.autodl.com/docs/network_turbo/

# 参考自己服务器所在区域,设置学术资源加速,加速github下载

# export http_proxy=http://xxxx && export https_proxy=http://xxxx


git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts

# 设置pip清华源,加速pip下载

pip config set global.index-url

4. 安装xformers(可选)

cd ../
# 返回到sd-scripts的上一级目录

git clone https://github.com/facebookresearch/xformers/
cd xformers
# 回退到0.0.4dev0版本,保持和kohya-ss使用的windows预编译版本一致,避免可能的兼容问题

git reset --hard 3633e1afc7bffbe61957f04e7bb1a742ee910ace
git submodule update --init --recursive

# 强制使用CUDA,不开启可能会导致xformers未和CUDA一起编译
export FORCE_CUDA="1"
# 进入https://developer.nvidia.com/cuda-gpus#compute

# 设置所用显卡对应的Compute Capability,3090和A5000都是8.6

export TORCH_CUDA_ARCH_LIST=8.6
# PATH环境变量中追加cuda目录,确保编译时能识别镜像预置的cuda11.6

export PATH=$PATH:/usr/local/cuda
# 确保gcc编译时能够识别cuda的头文件


export CPATH=/usr/local/cuda/targets/x86_64-linux/include
pip install -r requirements.txt
pip install -e .
说明:

xformers可以选择不安装,训练时不使用--xformers参数即可,此时可使用--mem_eff_attn降低显存占用,但速度极慢。xformers极大压缩了显存的使用,个人实测3090上512*768可训练,但显存占用达到18G,640*960即使24G也会炸显存。开启xformers后显存占用只有8G不到。如果对训练集有大分辨率的要求建议安装。

自行下载代码并编译的过程可能需要1-2个小时,在A5000上实测编译将近2小时,并且没有进度提示,需要耐心等待。编译过程不需要显卡,确保能认到cuda即可,所以在AutoDL可以使用无卡模式进行编译来节省费用。

自行编译的原因:根据pytorch作者的回答,xformers的预编译包只有在CUDA/pytorch/python版本一致的情况下才能分享使用,xformers官方在conda的linux预编译包只有最新版,大概率不兼容;pip install xformers实际等于编译安装,而且由于包本身的问题也可能会报错。所以最终还是使用最为稳妥的自行下载代码编译。
民间的预编译包如果要找对版本异常困难,需要保证CUDA/pytorch/python版本一致。如果恰好能找到,或者相同环境编译后自行打包成whl,可自行研究如何安装。

xformers正确编译特别参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/3525

5. 首次设置和启动

accelerate config
# 选择选项

# This machine

# No distributed training

# NO

# NO

# NO

# all

# fp16
# accelerate launch xxx                # 启动命令或使用其他启动脚本不再赘述


6. 以后启动

cd sd-scripts
conda activate my-env
# accelerate launch xxx                # 启动命令或使用其他启动脚本不再赘述
页: [1]
查看完整版本: LoRA(kohya-ss)AutoDL Linux 训练端部署教程