训练Lora

本文介绍LoRA训练的完整流程:包括清理旧CUDA/NVIDIA驱动,安装CUDA Toolkit和NCCL,配置me.toml数据集文件(分辨率512,batch_size=4等),并使用accelerate launch命令启动训练,详细解释各参数含义(模型路径、学习率、LoRA维度等),附参考链接。

作者:zhuge···预计阅读 11 分钟·762 阅读·0 评论
训练Lora

删除现有的cuda
vcc
ccl
vidia*

sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*" libnccl-dev libnccl2 -y
sudo apt-get --purge remove "*nvidia*" -y
sudo apt autoremove -y
sudo rm -rf /usr/local/cuda*

准备工作【可以不做】 设置apt源 清华 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/ 阿里 https://developer.aliyun.com/mirror/ubuntu


cuda-toolkit下载入口 https://developer.nvidia.com/cuda-toolkit-archive nccl下载入口https://docs.nvidia.com/deeplearning/nccl/install-guide/#down


apt-get update
#如果遇到包损坏的问题,可以修改apt的sources.list,注释掉NVIDIA网址

从上面的cuda-toolkit进去找到适合的版本并安装cuda-keyring*.deb

apt-get update
sudo apt-get -y install cuda
#中途输入18和1
sudo apt-get -y install libnccl2 libnccl-dev

me.toml

[general]
enable_bucket = true

[[datasets]]
resolution = 512
batch_size = 4

  [[datasets.subsets]]
  image_dir = '/root/train'
  class_tokens = 'zg'
  num_repeats = 20
accelerate launch --num_cpu_threads_per_process 4 $WORK_DIR/sd-scripts/train_network.py \
    --pretrained_model_name_or_path="/root/share/majicMIX_realistic_v7.safetensors" \
    --dataset_config="/root/me.toml" \
    --output_dir="/root/lora_out" \
    --output_name="cyberdragon" \
    --save_model_as=safetensors  \
    --clip_skip=2  \
    --prior_loss_weight=1.0  \
    --max_train_steps=4000  \
    --learning_rate=1e-4  \
    --unet_lr=1e-4  \
    --text_encoder_lr=1e-5  \
    --optimizer_type="AdamW"  \
    --xformers  \
    --mixed_precision="no"  \
    --cache_latents  \
    --gradient_checkpointing \
    --save_n_epoch_ratio=8  \
    --network_module=networks.lora  \
    --network_dim=64  \
    --network_alpha=32
  

# --pretrained_model_name_or_path:指向基底模型的路径,支持 .ckpt、.safetensors 和 Diffusers 格式。可以考虑使用与数据集画风接近的基底模型。
# --output_dir:指定模型保存的路径。
# --output_name:指定模型保存的文件名(不含扩展名)。
# --save_model_as:模型保存格式,ckpt, safetensors, diffusers, diffusers_safetensors.
# --dataset_config:指向 TOML 配置文件的路径。
# --max_train_steps / --max_train_epochs:指定训练的 steps 数或者 epochs 数。
# --save_every_n_steps / --save_every_n_epochs:每隔多少 steps 或者 epochs 保存模型。
# --mixed_precision:使用混合精度来节省显存。
# --gradient_checkpointing:用于节省显存,但是会增加训练时间。
# --xformers / --mem_eff_attn:用于节省显存。
# --clip_skip:使用 CLIP 的倒数第几层特征,最好与基底模型保持一致。
# --network_dim: 指定 LoRA 的秩(即网络维度),默认为 4. 值越大网络越大、参数越多、能力越强,但是不应盲目增大。训练人物可以考虑设为 16/32/64.
# --network_alpha: 用于保证训练过程的数值稳定性,防止下溢,默认为 1.
# --network_weights: 加载预训练的 LoRA 模型并继续训练。
# --network_train_unet_only: 只训练 U-Net 的 LoRA. 也许对 fine-tuning-style 有用。
# --network_train_text_encoder_only: 只训练 Text Encoder 的 LoRA. 类似于 Textual Inversion 的效果。
# --optimizer_type:选择优化器。
# --learning_rate:设置学习率。
# --unet_lr: 对 U-Net 的 LoRA 单独设置学习率,一般可以设为 1e-4,覆盖 --learning rate 的设置。
# --text_encoder_lr: 为 Text Encoder 的 LoRA 单独设置学习率,一般可以设为 5e-5,覆盖 --learning rate 的设置。
# --lr_scheduler / --lr_warmup_steps / --lr_scheduler_num_cycles / --lr_scheduler_power:设置学习率 scheduler、warmup. 

links: https://zhuanlan.zhihu.com/p/628398504

https://zhuanlan.zhihu.com/p/640144661?utm_id=0 https://www.bilibili.com/read/cv21373135/ https://www.skycaiji.com/aigc/ai2014.html

相关文章

评论

加载中...