stablediffusion训练LoRA模型

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生成风格化人物。希望本文对您有所帮助。

原创文章,作者:SD中文网,如若转载,请注明出处:https://www.stablediffusion-cn.com/sd/sd-model/1669.html