国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【stable diffusion LORA訓練】改進lora-scripts,命令行方式訓練LORA,支持SDXL訓練

這篇具有很好參考價值的文章主要介紹了【stable diffusion LORA訓練】改進lora-scripts,命令行方式訓練LORA,支持SDXL訓練。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

分享下自己改進的一個lora訓練腳本,在ubuntu下如果SD-WEBUI的環(huán)境已經(jīng)搭好的話,只需要下載lora-script就可以支持訓練了,直接命令行方式訓練。

首先,我們需要克隆下項目:

git clone https://github.com/Akegarasu/lora-scripts

其次,更改項目里的train.sh腳本如下

#!/bin/bash
# LoRA train script by @Akegarasu

# Train data path | 設置訓練用模型、圖片
#pretrained_model="/data/models/checkpoint/theAllysMixXSDXL_v10.safetensors" # base model path | 底模路徑 #繪畫風XL
pretrained_model="/data/models/checkpoint/hellopure_V30a.safetensors" # base model path | 底模路徑 #繪畫風
#pretrained_model="/data/models/checkpoint/orangechillmix_v70Fixed.safetensors" # base model path | 底模路徑 #真實風

is_v2_model=0                             # SD2.0 model | SD2.0模型 2.0模型下 clip_skip 默認無效
parameterization=0                        # parameterization | 參數(shù)化 本參數(shù)需要和 V2 參數(shù)同步使用 實驗性功能
train_data_dir="/data/models/Train/image/"              # train dataset path | 訓練數(shù)據(jù)集路徑
reg_data_dir=""                           # directory for regularization images | 正則化數(shù)據(jù)集路徑,默認不使用正則化圖像。

# Network settings | 網(wǎng)絡設置
network_module="networks.lora" # 在這里將會設置訓練的網(wǎng)絡種類,默認為 networks.lora 也就是 LoRA 訓練。如果你想訓練 LyCORIS(LoCon、LoHa) 等,則修改這個值為 lycoris.kohya
network_weights=""             # pretrained weights for LoRA network | 若需要從已有的 LoRA 模型上繼續(xù)訓練,請?zhí)顚?LoRA 模型路徑。
network_dim=128                 # network dim | 常用 4~128,不是越大越好
network_alpha=128               # network alpha | 常用與 network_dim 相同的值或者采用較小的值,如 network_dim的一半 防止下溢。默認值為 1,使用較小的 alpha 需要提升學習率。
#network_dim要和network_alpha一致,network_dim默認32,角色可以到96。畫風可以到128,影響最終輸出的模型文件尺寸

# Train related params | 訓練相關參數(shù)
resolution="768,768"  # image resolution w,h. 圖片分辨率,寬,高。支持非正方形,但必須是 64 倍數(shù)。
batch_size=4          # batch size
max_train_epoches=8  # max train epoches | 最大訓練 epoch,5~10,一般為6
save_every_n_epochs=2 # save every n epochs | 每 N 個 epoch 保存一次

#train_unet_only=1            # train U-Net only | 僅訓練 U-Net,開啟這個會犧牲效果大幅減少顯存使用。6G顯存可以開啟,訓SDXL可以考慮開啟
train_unet_only=0            # train U-Net only | 僅訓練 U-Net,開啟這個會犧牲效果大幅減少顯存使用。6G顯存可以開啟
train_text_encoder_only=0    # train Text Encoder only | 僅訓練 文本編碼器
stop_text_encoder_training=0 # stop text encoder training | 在第N步時停止訓練文本編碼器

noise_offset="0" # noise offset | 在訓練中添加噪聲偏移來改良生成非常暗或者非常亮的圖像,如果啟用,推薦參數(shù)為0.1
keep_tokens=0    # keep heading N tokens when shuffling caption tokens | 在隨機打亂 tokens 時,保留前 N 個不變。
min_snr_gamma=0  # minimum signal-to-noise ratio (SNR) value for gamma-ray | 伽馬射線事件的最小信噪比(SNR)值  默認為 0

# Learning rate | 學習率
lr="1e-4" # learning rate | 學習率,在分別設置下方 U-Net 和 文本編碼器 的學習率時,該參數(shù)失效
unet_lr="1e-4" # U-Net learning rate | U-Net 學習率
text_encoder_lr="1e-5" # Text Encoder learning rate | 文本編碼器 學習率
lr_scheduler="cosine_with_restarts" # "linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup", "adafactor"
lr_warmup_steps=0                   # warmup steps | 學習率預熱步數(shù),lr_scheduler 為 constant 或 adafactor 時該值需要設為0。
lr_restart_cycles=1                 # cosine_with_restarts restart cycles | 余弦退火重啟次數(shù),僅在 lr_scheduler 為 cosine_with_restarts 時起效。

# 優(yōu)化器設置
optimizer_type="AdamW8bit" # Optimizer type | 優(yōu)化器類型 默認為 AdamW8bit,可選:AdamW AdamW8bit Lion Lion8bit SGDNesterov SGDNesterov8bit DAdaptation AdaFactor prodigy

# Output settings | 輸出設置
output_name="tblife-dzpg3"           # output model name | 模型保存名稱
save_model_as="safetensors" # model save ext | 模型保存格式 ckpt, pt, safetensors

# Resume training state | 恢復訓練設置
save_state=0 # save state | 保存訓練狀態(tài) 名稱類似于 <output_name>-??????-state ?????? 表示 epoch 數(shù)
resume=""    # resume from state | 從某個狀態(tài)文件夾中恢復訓練 需配合上方參數(shù)同時使用 由于規(guī)范文件限制 epoch 數(shù)和全局步數(shù)不會保存 即使恢復時它們也從 1 開始 與 network_weights 的具體實現(xiàn)操作并不一致

# 其他設置
min_bucket_reso=256              # arb min resolution | arb 最小分辨率
max_bucket_reso=1024             # arb max resolution | arb 最大分辨率
persistent_data_loader_workers=1 # persistent dataloader workers | 保留加載訓練集的worker,減少每個 epoch 之間的停頓
clip_skip=2                      # clip skip | 玄學 一般用 2
multi_gpu=0                      # multi gpu | 多顯卡訓練 該參數(shù)僅限在顯卡數(shù) >= 2 使用
lowram=0                         # lowram mode | 低內存模式 該模式下會將 U-net 文本編碼器 VAE 轉移到 GPU 顯存中 啟用該模式可能會對顯存有一定影響

# LyCORIS 訓練設置
algo="lora"  # LyCORIS network algo | LyCORIS 網(wǎng)絡算法 可選 lora、loha、lokr、ia3、dylora。lora即為locon
conv_dim=4   # conv dim | 類似于 network_dim,推薦為 4
conv_alpha=4 # conv alpha | 類似于 network_alpha,可以采用與 conv_dim 一致或者更小的值
dropout="0"  # dropout | dropout 概率, 0 為不使用 dropout, 越大則 dropout 越多,推薦 0~0.5, LoHa/LoKr/(IA)^3暫時不支持

# 遠程記錄設置
use_wandb=0         # use_wandb | 啟用wandb遠程記錄功能
wandb_api_key=""    # wandb_api_key | API,通過 https://wandb.ai/authorize 獲取
log_tracker_name="" # log_tracker_name | wandb項目名稱,留空則為"network_train"

# 根據(jù)參數(shù)決定輸出的文件和訓練參數(shù)
# 參數(shù)1為output_name 參數(shù)2不輸則訓練1.5的模型,輸入"xl"則訓練xl的模型,輸入錯誤也還是訓練1.5模型

if [ -n "$1" ]; then  
  output_name="$1" 

  pretrained_model="/data/models/checkpoint/hellopure_V30a.safetensors" # 25D模型
  resolution="768,1024"
  train_unet_only=0
  batch_size=3
  xl_flag=0
fi

if [ "$2" = "xl" ]; then
  pretrained_model="/data/models/checkpoint/theAllysMixXSDXL_v10.safetensors" #25DXL模型
  resolution="768,896" #使用768,1024都會爆顯存,催悲
  train_unet_only=1
  batch_size=1
  xl_flag=1
fi

echo "extend by @Jim[231203]"
echo "==========將以以下參數(shù)訓練模型=========="  
echo "輸出文件:$output_name"
echo "底模模型:$pretrained_model"
echo "分辨率:$resolution"
echo "批量大小:$batch_size"
echo "訓練深度:$network_dim"
echo "總epoch:$max_train_epoches"
echo "僅訓練UNET:$train_unet_only"
echo "========================================"

# ============= DO NOT MODIFY CONTENTS BELOW | 請勿修改下方內容 =====================
export HF_HOME="huggingface"
export TF_CPP_MIN_LOG_LEVEL=3

extArgs=()
launchArgs=()
if [[ $multi_gpu == 1 ]]; then launchArgs+=("--multi_gpu"); fi

if [[ $is_v2_model == 1 ]]; then
  extArgs+=("--v2")
else
  extArgs+=("--clip_skip $clip_skip")
fi

if [[ $parameterization == 1 ]]; then extArgs+=("--v_parameterization"); fi

if [[ $train_unet_only == 1 ]]; then extArgs+=("--network_train_unet_only"); fi

if [[ $train_text_encoder_only == 1 ]]; then extArgs+=("--network_train_text_encoder_only"); fi

if [[ $network_weights ]]; then extArgs+=("--network_weights $network_weights"); fi

if [[ $reg_data_dir ]]; then extArgs+=("--reg_data_dir $reg_data_dir"); fi

if [[ $optimizer_type ]]; then extArgs+=("--optimizer_type $optimizer_type"); fi

if [[ $optimizer_type == "DAdaptation" ]]; then extArgs+=("--optimizer_args decouple=True"); fi

if [[ $save_state == 1 ]]; then extArgs+=("--save_state"); fi

if [[ $resume ]]; then extArgs+=("--resume $resume"); fi

if [[ $persistent_data_loader_workers == 1 ]]; then extArgs+=("--persistent_data_loader_workers"); fi

if [[ $network_module == "lycoris.kohya" ]]; then
  extArgs+=("--network_args conv_dim=$conv_dim conv_alpha=$conv_alpha algo=$algo dropout=$dropout")
fi

if [[ $stop_text_encoder_training -ne 0 ]]; then extArgs+=("--stop_text_encoder_training $stop_text_encoder_training"); fi

if [[ $noise_offset != "0" ]]; then extArgs+=("--noise_offset $noise_offset"); fi

if [[ $min_snr_gamma -ne 0 ]]; then extArgs+=("--min_snr_gamma $min_snr_gamma"); fi

if [[ $use_wandb == 1 ]]; then
  extArgs+=("--log_with=all")
else
  extArgs+=("--log_with=tensorboard")
fi

if [[ $wandb_api_key ]]; then extArgs+=("--wandb_api_key $wandb_api_key"); fi

if [[ $log_tracker_name ]]; then extArgs+=("--log_tracker_name $log_tracker_name"); fi

if [[ $lowram ]]; then extArgs+=("--lowram"); fi

#SDXL參數(shù):1.train_unet_only必須打開(顯存使用超過16G),(2.使用腳本sdxl_train_network.py),(3.使用參數(shù)--no_half_vae)
#python -m accelerate.commands.launch ${launchArgs[@]} --num_cpu_threads_per_process=8 "./sd-scripts/sdxl_train_network.py" \

if [[ $xl_flag == "1" ]]; then
  extArgs+=("--no_half_vae")
  script_file="sdxl_train_network.py"
else
  script_file="train_network.py"
fi

python -m accelerate.commands.launch ${launchArgs[@]} --num_cpu_threads_per_process=8 "./sd-scripts/$script_file" \
  --enable_bucket \
  --pretrained_model_name_or_path=$pretrained_model \
  --train_data_dir=$train_data_dir \
  --output_dir="./output" \
  --logging_dir="./logs" \
  --log_prefix=$output_name \
  --resolution=$resolution \
  --network_module=$network_module \
  --max_train_epochs=$max_train_epoches \
  --learning_rate=$lr \
  --unet_lr=$unet_lr \
  --text_encoder_lr=$text_encoder_lr \
  --lr_scheduler=$lr_scheduler \
  --lr_warmup_steps=$lr_warmup_steps \
  --lr_scheduler_num_cycles=$lr_restart_cycles \
  --network_dim=$network_dim \
  --network_alpha=$network_alpha \
  --output_name=$output_name \
  --train_batch_size=$batch_size \
  --save_every_n_epochs=$save_every_n_epochs \
  --mixed_precision="fp16" \
  --save_precision="fp16" \
  --seed="1337" \
  --cache_latents \
  --prior_loss_weight=1 \
  --max_token_length=225 \
  --caption_extension=".txt" \
  --save_model_as=$save_model_as \
  --min_bucket_reso=$min_bucket_reso \
  --max_bucket_reso=$max_bucket_reso \
  --keep_tokens=$keep_tokens \
  --xformers --shuffle_caption ${extArgs[@]} 
  

根據(jù)自己機器的顯存適當調整下參數(shù),例如我的16G顯存的3070,就只能訓練768x896的,然后根據(jù)1.5和SDXL的底模分開,這樣就可以訓練兩個不同系列的大模型下的LORA了。區(qū)分起來很簡單,命令行如下:

訓練1.5的
nohup trainlora mylora &

訓練SDXL的
nohup trainlora mylora xl &

對應的trainlora.sh如下(可以放到/usr/sbin下,輸入命令直接啟動):

#!/bin/bash
input_params=$@
cd /root/sd-webui-aki-v4.4
source venv/bin/activate
cd /root/lora-scripts/
./train.sh $input_params

用起來相當方便,在開始訓練時,還可以打印相關的訓練參數(shù),以免弄錯(錯了就是至少半個小時啊。。。)

注意:

1)里面的pretrained_model路徑對應大模型底模,根據(jù)自己的需要修改

2)訓練的素材,是放到/data/models/Train/下的,所有的大模型數(shù)據(jù)等被我單獨掛載到一個獨立分區(qū)了,image_bak是備份歷史訓練數(shù)據(jù)

【stable diffusion LORA訓練】改進lora-scripts,命令行方式訓練LORA,支持SDXL訓練,lora-scripts,stable diffusion,sdxl,lora,train

3)訓練完成后,lora文件會輸出到lora-scripts/output/里

4)你可以用tail -f命令查看nohup.out了解訓練進度文章來源地址http://www.zghlxwxcb.cn/news/detail-775419.html

到了這里,關于【stable diffusion LORA訓練】改進lora-scripts,命令行方式訓練LORA,支持SDXL訓練的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • stable diffusion(Lora的訓練)

    stable diffusion(Lora的訓練)

    以坤坤為例,上網(wǎng)隨便找了幾個坤坤的人臉圖像,作為訓練的數(shù)據(jù)集? 建議看一遍教程,雖然這個up主好像不是很專業(yè)的樣子,不過流程差不多是這樣的,重點關注一下虛擬環(huán)境搭建完之后,在終端選擇配置的操作,就是一堆yes no,的選項,跟著視頻來就行了。 本地找個訓練

    2023年04月12日
    瀏覽(28)
  • Stable Diffusion訓練Lora模型

    Stable Diffusion訓練Lora模型

    以下內容參考:https://www.bilibili.com/video/BV1Qk4y1E7nv/?spm_id_from=333.337.search-card.all.clickvd_source=3969f30b089463e19db0cc5e8fe4583a 第一步,準備訓練要使用的圖片,即優(yōu)質的圖片 第二部,為這些圖片打標,即精準的tag 數(shù)量建議20-50張,最多100張圖片 不好的圖片:模糊的,動作扭曲的,臉部被

    2024年02月12日
    瀏覽(20)
  • Stable Diffusion XL訓練LoRA

    Stable Diffusion XL訓練LoRA

    主要包括SDXL模型結構,從0到1訓練SDXL以及LoRA教程,從0到1搭建SDXL推理流程。? 【一】SDXL訓練初識 Stable Diffusion系列模型的訓練主要分成一下幾個步驟,Stable Diffusion XL也不例外: 訓練集制作:數(shù)據(jù)質量評估,標簽梳理,數(shù)據(jù)清洗,數(shù)據(jù)標注,標簽清洗,數(shù)據(jù)增強等。 訓練文

    2024年02月07日
    瀏覽(26)
  • Stable Diffusion Lora模型訓練詳細教程

    Stable Diffusion Lora模型訓練詳細教程

    通過Lora小模型可以控制很多特定場景的內容生成。 但是那些模型是別人訓練好的,你肯定很好奇,我也想訓練一個自己的專屬模型(也叫煉丹~_~)。 甚至可以訓練一個專屬家庭版的模型(family model),非常有意思。 將自己的訓練好的Lora模型放到stableDiffusion lora 目錄中,

    2024年02月02日
    瀏覽(21)
  • Stable diffusion 訓練lora出現(xiàn)報錯

    Stable diffusion 訓練lora出現(xiàn)報錯

    今天使用kohya_ss訓練lora時出現(xiàn)三個報錯,下面是解決辦法。 一: 報錯 UnboundLocalError: local variable \\\'pipe\\\' referenced before assignment 這個應該是項目的BUG,現(xiàn)在的版本還沒修復,但是可以繞過它。方法如下:去?huggingface 下載預訓練的基礎模型到本地,復制模型的地址到紅色框內并把

    2024年02月13日
    瀏覽(21)
  • LoRa模型訓練教程(煉丹,Stable Diffusion)

    LoRa模型訓練教程(煉丹,Stable Diffusion)

    何為LoRA?LoRA并不是擴散模型專有的技術,而是從隔壁語言模型(LLM)遷移過來的,旨在解決避免將整個模型參數(shù)拷貝下來才能對模型進行調校的問題。因為大型語言模型的參數(shù)量過于恐怖,比如最近新出的GPT-4參數(shù)量約為100 萬億。 LoRA采用的方式是向原有的模型中插入新的數(shù)

    2024年02月10日
    瀏覽(25)
  • 煉丹!訓練 stable diffusion 來生成LoRA定制模型

    煉丹!訓練 stable diffusion 來生成LoRA定制模型

    LoRA,英文全稱Low-Rank Adaptation of Large Language Models,直譯為大語言模型的低階適應,這是微軟的研究人員為了解決大語言模型微調而開發(fā)的一項技術。 比如,GPT-3有1750億參數(shù),為了讓它能干特定領域的活兒,需要做微調,但是如果直接對GPT-3做微調,成本太高太麻煩了。 LoRA的

    2024年03月27日
    瀏覽(25)
  • Stable Diffusion 指定模型人物,Lora 訓練全流程

    Stable Diffusion 指定模型人物,Lora 訓練全流程

    在使用 Stable Diffusion 的時候,可以選擇別人訓練好的 Lora,那么如何訓練自己的 Lora,本篇文章介紹了介紹了如何訓練Lora,如何從訓練的模型中選擇好的模型,如何在 Stable Diffusion 中使用。 閑話不多說,直接實際操作吧,干貨滿滿,記得關注哦,以免找不到了。首先我們來獲

    2024年02月09日
    瀏覽(52)
  • AutoDL 訓練stable-diffusion lora模型

    AutoDL 訓練stable-diffusion lora模型

    1.創(chuàng)建鏡像實例 2. 啟動實例 ?3.啟動服務 4.配置參數(shù) 4.1 基礎模型選擇? ?4.2 文件路徑設置 ?5.點擊打印訓練信息 ?6.訓練模型(點擊Train model) ? ?

    2024年02月16日
    瀏覽(92)
  • 【 stable diffusion LORA模型訓練最全最詳細教程】

    【 stable diffusion LORA模型訓練最全最詳細教程】

    個人網(wǎng)站:https://tianfeng.space/ 其實想寫LORA模型訓練很久了,一直沒時間,總結一下現(xiàn)在主流的兩種LORA模型訓練方式,分別是朱尼醬的賽博丹爐和秋葉大佬的訓練腳本,訓練效果應該是賽博丹爐更好,我個人更推薦朱尼醬的賽博丹爐,界面炫酷,操作簡單,作者也是花了很多

    2024年02月09日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包