stablediffusion训练LoRA模型

共计 2964 个字符,预计需要花费 8 分钟才能阅读完成。

stablediffusion 训练 LoRA 模型

LoRA(Low-rank adaptation)是一种用于微调大型模型的技术。通过使用 LoRA,生成的模型训练时间更短,生成的文件更小。

DreamBooth 中的 LoRA

DreamBooth 集成了 LoRA,可以作为 Stable Diffusion WebUI 的扩展功能进行安装。

LoRA_Easy_Training_Scripts

LoRA_Easy_Training_Scripts 是一种本地训练工具,支持 Linux 和 Windows 系统。

对于使用 Google Colab 的用户,可以使用 Linaqruf/kohya-trainer 来更轻松上手。Reddit 上有一张图解教程。

安装环境

以下以 Ubuntu 为例,介绍如何安装 LoRA Easy Training Scripts。

    1. 安装 Anaconda,并创建虚拟环境:

conda create --name loratraining python=3.10.6

conda activate loratraining

    1. 拷贝保存库:

git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git

cd LoRA_Easy_Training_Scripts

git submodule init

git submodule update

cd sd_scripts

pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116

pip install --upgrade -r requirements.txt

pip install -U xformers

    1. 设置加速选项:

accelerate config

依次回答以下问题:

– This machine

– No distributed training

– NO

– NO

– NO

– all

– fp16

    1. 创建 LoRA 的训练数据目录结构:

LoRA 的训练数据目录结构与常规训练不同,需要按照以下方式创建目录结构:

将已经添加好提示词的训练数据放在 img_dir 目录下,目录名称取名为数字_概念,数字代表要重复的步数。

    1. 添加训练设置档 trainingconfig.json:

在 LoRA_Easy_Training_Scripts 目录下创建 trainingconfig.json 文件,并填入以下内容:

{
"pretrained_model_name_or_path": "/home/user/ 桌面 /heralora/anything-v4.5-pruned.ckpt",
"v2": false,
"v_parameterization": false,
"logging_dir": "/home/user/ 桌面 /heralora/log_dir/",
"train_data_dir": "/home/user/ 桌面 /heralora/image_dir/",
"reg_data_dir": "/home/user/ 桌面 /heralora/reg_dir/",
"output_dir": "/home/user/ 桌面 /heralora/output_dir",
"max_resolution": "512,512",
"learning_rate": "1e-5",
"lr_scheduler": "constant_with_warmup",
"lr_warmup": "5",
"train_batch_size": 3,
"epoch": "4",
"save_every_n_epochs": "","mixed_precision":"fp16","save_precision":"fp16","seed":"",
"num_cpu_threads_per_process": 32,
"cache_latents": true,
"caption_extension": ".txt",
"enable_bucket": true,
"gradient_checkpointing": false,
"full_fp16": false,
"no_token_padding": false,
"stop_text_encoder_training": 0,
"use_8bit_adam": true,
"xformers": true,
"save_model_as": "safetensors",
"shuffle_caption": true,
"save_state": false,
"resume": "","prior_loss_weight": 1.0,"text_encoder_lr":"1.5e-5","unet_lr":"1.5e-4","network_dim": 128,"lora_network_weights":"",
"color_aug": false,
"flip_aug": false,
"clip_skip": 2,
"mem_eff_attn": false,
"output_name": "","model_list":"",
"max_token_length": "150",
"max_train_epochs": "","max_data_loader_n_workers":"",
"network_alpha": 128,
"training_comment": "","keep_tokens": 2,"lr_scheduler_num_cycles":"",
"lr_scheduler_power": "","persistent_data_loader_workers": true,"bucket_no_upscale": true,"random_crop": false,"caption_dropout_every_n_epochs": 0.0,"caption_dropout_rate": 0
}

开始训练

在开始训练之前,有些系统需要指定 CUDA 安装路径:

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

输入以下指令,加载 json 设置档。忽略“libnvinfer.so.7: cannot open shared object file”警告。

accelerate launch main.py --load_json_path "/home/user/trainingconfig.json"

之后会自动开始训练。训练好的模型位于训练设置档所写的 output_dir 目录。将.safetensors 档移动至 SD WebUI 根目录下的 /models/Lora。

LoRA 模型使用方式

在 SD WebUI 右上角点击“Show extra networks”。

点击要使用的 LoRA,将其加入到提示词字段中。

再加上训练时使用的提示词,即可生成使用 LoRA 风格的人物。

结语

LoRA 是一种用于微调大型模型的技术,通过 LoRA Easy Training Scripts 可以快速进行训练,并在 SD WebUI 中使用 LoRA 生成风格化人物。希望本文对您有所帮助。

正文完