[AI] 如何訓練LoRA? 猴子都學得會的手把手教學!
先附上預覽圖,幼妲貼貼:
https://truth.bahamut.com.tw/s01/202302/a2c1b53fb942cba44f6ae71c514e82bb.JPG
網頁好讀版:
https://home.gamer.com.tw/creationDetail.php?sn=5657565
前言都是一些廢話,如果只是想知道如何訓練LoRA,可以直接往下跳至分隔線。
*本文只是個人訓練LoRA的經驗分享,因為還沒有人做相關教學,所以寫這篇文章來看看能不能拋磚引玉,如果有任何問題歡迎大佬補充
在一開始AI繪剛紅的時候,是看西洽有人分享用AI畫大奶維多利亞美女,當時就有跟著教學把stable diffusion弄來玩玩了,但除了抄抄大奶維多利亞美女的咒文之外,其他自己想畫的圖並不怎麼樣。後來在西洽看了cybermeow大的文章,覺得能煉出特定角色的模型很實用,可以拿來畫我推的V,於是跟著YT教學一步步學著怎麼用dreambooth,然而顯存不夠只好去租3090,還因為國外網站卡在卡刷不過,跑去試用台智雲,搞到台智雲打給我們教授推銷ww,那時好像只有sd1.3跟wd幾版我忘了,反正用dreambooth fine-tune wd出來的結果不是很好,雖然還是有搞了張幼妲下蛋。後來novel ai模型洩漏出來以後台智雲的試用期也過了,加上訓練embedding內建在webui以後太方便,用我這3070 8g的顯卡隨便煉,也就忘了dreambooth這件事。
但前陣子漸漸覺得遇到瓶頸,為了複雜的場景prompt下太多,角色的特徵很容易會被抹掉,原本就不是很準確的特徵在複雜prompt下更難骰出好圖。想起還有比較準確的dreambooth可以用,想說也許經過幾個月的發展dreambooth能在低顯存的環境下訓練,一開始的確有在reddit看到去年十月的文章說dreambooth可以在8g vram顯卡上訓練,但我試了無法,而且近期的文章也都說要求10g顯存。那本地不能訓練,但我又不想在colab上跑,除了要掛載雲端硬碟然後還要清空間放模型很煩之外,邪惡的東西也不能在上面訓練,於是dreambooth這件事又被我放置了。
直到最近聽說有個新技術,LoRA,不僅訓練出來的模型很小對硬碟空間很友善,效果貼近dreambooth的同時,重點是,真的能在8g顯存的顯卡上訓練了。LoRA(Low-rank Adaptation)這個技術到底是什麼呢?我們來看一下原github上的"簡單"解釋:
https://i.imgur.com/FltrSEe.png
簡單來說,不直接微調模型權重,而是訓練一個偏移量作用於於模型上,而且重要的是將這個高秩的模型權重偏移量拆開,用低維度的矩陣相乘去近似它,因此可以節省空間,而且能以比dreambooth更快的速度進行微調。
===================================
正題開始,如何訓練LoRA?我知道現在webui的dreambooth插件也可以進行LoRA的訓練,但除了requirements容易衝突之外,重點是當我選了7.多g的模型要創建dreambooth模型時,直接CUDA OOM (吐血,第一步都做不了,所以這裡不使用webui插件訓練LoRA。
首先,安裝python 3.10.6與git,相信有裝webui的各位都有了,如果沒有可以去官網抓,或是用包管理器chocolatey直接安裝。
接著一步一步手把手教學
git clone https://github.com/kohya-ss/sd-scripts.git
將庫clone下來
cd sd-scripts
進入資料夾
python -m venv --system-site-packages venv
開一個獨立的虛擬python環境
.\venv\Scripts\activate
啟動虛擬環境 *之後每次要訓練,記得都要先啟動虛擬環境
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
安裝依賴項
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
複製庫文件
accelerate config
設定完成
接下來要用 https://github.com/derrian-distro/LoRA_Easy_Training_Scripts 提供的腳本進行訓練
wget -O lora_train_popup.py https://raw.githubusercontent.com/derrian-distro/LoRA_Easy_Training_Scripts/main/lora_train_popup.py
將腳本下載下來 *如果沒有wget,去用chocolatey裝一個,或是 https://github.com/derrian-distro/LoRA_Easy_Training_Scripts/blob/main/lora_train_popup.py 文件右上角Raw右鍵->另存連結
accelerate launch --num_cpu_threads_per_process 12 lora_train_popup.py
開始訓練
接下來會彈出一系列視窗,可以調整選項
Do you want to load a json config file?
是否載入設定,否
Select your base model
選擇基底模型,如anything-v4.5.ckpt
Select your image folder
選擇訓練圖像資料夾 *如何準備訓練資料等等會說
Select your output folder
選擇儲存LoRA輸出資料夾
Do you want to save a json of your configuration?
可以儲存設定檔以供第一步使用
https://i.imgur.com/M91Xpa8.png
Do you want to use regularization images?
是否使用正則化訓練圖片 *一樣等等講
Do you want to continue from an earlier version?
可以從中斷的訓練中回復,否
https://i.imgur.com/KzUWvcD.png
只有8g,Cancel使用預設為1
https://i.imgur.com/62tnNug.png
訓練次數,200或更高,訓練圖片少者適量調高
https://i.imgur.com/Y4wtNYI.png
還記得前面說過LoRA將高秩矩陣近似成低維矩陣相乘嗎? 這就是矩陣相乘中間的維度,可以視為LoRA模型的深度/複雜度,可以視情況調整,通常保持預設即可
https://i.imgur.com/tAPF9pS.png
訓練的參數,保持預設即可
https://i.imgur.com/7eCQ29d.png
訓練圖片的解析度
https://i.imgur.com/YG39Hyc.png
學習率,保持預設即可
https://i.imgur.com/1db1cRU.png
8g顯存,保持預設即可 *我不是很確定這是幹嘛的,也許可以微調CLIP使LoRA的效果更好,歡迎大佬補充
https://i.imgur.com/IBLcgu1.png
8g顯存,保持預設即可 *我不是很確定這是幹嘛的,也許可以微調unet使LoRA的效果更好,歡迎大佬補充
https://i.imgur.com/upMdQJn.png
學習率調整策略,保持預設即可 *有"linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup" 這些可以選
https://i.imgur.com/9h9fDex.png
前一步的依賴選項,保持預設即可
Do you want to save epochs as it trains?
是否儲存中途訓練結果,是
https://i.imgur.com/Z6Q2NQN.png
多久儲存一次訓練結果,根據自己的硬碟空間作調整,通常設10、20或50
Do you want to shuffle captions?
是否將訓練資料的tag(prompt)打亂順序,是
Do you want to keep some tokens at the front of your captions?
是否保留前幾個tag不打亂順序,是
https://i.imgur.com/Hurfs5D.png
保留多少個tag,通常設定1~3
Do you want to have a warmup ratio?
學習率調整策略,否
Do you want to change the name of output checkpoints?
是否更改輸出模型檔名,否
接下來就會開始訓練,等待訓練完成吧
https://i.imgur.com/CNDFeCU.png
如何準備訓練資料
先貼一張圖
https://i.imgur.com/UnnBT7P.png
子資料夾的名稱為"重複次數_關鍵字"***重要:日後使用LoRA的關鍵字在此設定
可以為一個LoRA模型訓練不同概念,重複次數可以調整資料平衡,圖越少適當調高
子資料夾內的圖片與文檔怎麼來? 去蒐集要訓練角色的圖片吧,少至10張,多至上百上千張都可以。
訓練圖片預處理使用webui來做,如果之前有訓練過embedding應該不陌生
https://i.imgur.com/h1NVCSp.png
開啟webui之後 訓練->圖像預處理
指定來源目錄、輸出目錄與解析度
底下選項
建立鏡像副本
-> 勾,訓練圖片越多越好,但如果訓練的人物有標誌性特定方向的頭飾、配件,別勾
分割過大的圖像、自動焦點裁切、Auto-sized crop
-> 處理圖片大小,擇一,如果圖片長寬比不符再使用。推薦可以先使用Brime手動裁切就不必使用。
使用 BLIP 生成說明文字(自然語言描述)
使用 deepbooru 生成說明文字(標記)
-> 自動給圖片上tag(prompt),擇一,通常二次元圖片使用deepbooru比較好。 tag會存進同名.txt檔
像這樣子:
https://i.imgur.com/1iIRfZv.png
另外還有正則化圖片,如果圖片太少(20張以內),或是圖片視角不夠多樣化,通常會準備正則化圖像幫助訓練,例如你要訓練一個女V,那麼你就去收集動漫女孩的圖,那如果你不想自己找怎麼辦?也可以直接用生成的。那要準備幾張正則化圖片呢?根據網路上各式各樣的教學,我看過說準備1:1,也看過說要10倍的,我在這部分沒有太多經驗可以推薦。
===================================
教學完成啦,可以開始訓練自己的LoRA模型了!
在這邊推薦各位一個網站,civitai,上面可以找到很多別人訓練完的LoRA模型,可以拿來混搭。
接下來分享一些我產的圖吧,各種LoRA模型混搭真是好玩。另外,這位是我的推,ReLive_灰妲,講話風趣,雜談之鬼,總是不知不覺就到三點,雖然平時沒什麼氣質,只有炸雞腿的香味,但氣質來的時候超婆的,重點是還有我真正的主推,幼妲,幼妲簡直就是天使,蘿莉真是太棒了!!
大波鸚灰妲
https://i.imgur.com/oNJB01X.png
幼妲抱著小小妲
https://i.imgur.com/lXSwDOK.png
幼妲妮亞
https://i.imgur.com/4KrVvH8.png
幼妲,孤獨搖滾ed ver.
https://i.imgur.com/6qQmVSY.png
迷之陰影(X
https://i.imgur.com/mfYUahk.png
--
02/10 05:58
※ wres666:轉錄至看板 AI_Art02/10 05:59
推!很詳細的教學
推
推
好文先推
不要這麼認真好嗎
推,之後來試試
推
好詳細
推 晚點來玩玩看
大師
最少顯存要多少才能跑訓練?
推
可以
看來我比猴子還爛
感謝 正好需要 晚點來拜讀一下
推
謝謝你讓我知道自己是草履蟲
推
推教學
推教學!
推教學
酷
如果有需要 這裡有Colab版本的
推
也感謝FoxWu
這邊說說有多少猴子
假日研究
猴子....好強....
推整理!LoRA問世後各種模型真的如雨後春筍
這迭代越來越快了吧 什麼時後能突破限制自由探索性癖
我不當人了 吱吱
猴子... 也太強 了吧...
爆
[奶子] AI畫的婚紗大奶(圖多)爆
[賽事] 第17回維多利亞一哩賽 出馬表第17回維多利亞一哩賽將於5月15日,亦即本週日的台灣時間14:40開賽。 --------------------------------------- 維多利亞一哩賽的歷史,詳見我去年在本板發布的出馬表,此處不多贅述。 文章代碼:#1Wdewcg7 (UmaMusume) 網頁好讀版:62
[討論] AI作畫之維多利亞時代的巨乳?@ChromedSets AI作畫 維多利亞時代的巨乳會是什麼樣子呢?44
[閒聊] 林則徐為何敢對英國維多利亞女王大小聲?林則徐與英國維多利亞女王 是維多利亞3的角色, 遊戲中也有鴉片戰爭歷史劇情事件。19
[閒聊] 用AI畫出手繪風的金髮少女(多圖)前陣子看到維多利亞風大奶 完全打中我 忍不住裝來玩玩看 也算是緩解考研的壓力QQ 我用的是stable diffusion + waifu diffusion 金髮少女的圖我是參考這位17
[問題] 維多利亞3 VS 文明6 哪個更好?就直接比較 最近發行的維多利亞3 和幾年前的神座文明帝國6 大家覺得哪個更耐玩 維多利亞3有一大缺點是戰爭系統太簡陋 希望以後DLC能補足這一點 維多利亞3 VS 文明6 你選哪個?
83
[GBF] 合作活動 魔法老師57
[生日] 今天是聲優「楠木燈」的25歲生日!56
[閒聊] alp 宅友3 1 0 2 P56
[閒聊] 無限暖暖:三件以上是指至少四件52
[Vtub] LIVE是真的LIVE嗎?57
[沒倒] 鎖鏈戰記 出大事啦!!!!!!76
[閒聊] 鍾培生:規則絕對是統神有利,但裁判不48
[閒聊] 無嘴貓是怎麼走下神壇的?☺43
[閒聊] 統神復胖需要多久37
[問題] 芙莉蓮這樣的結局算完美嗎?42
[蔚藍] 4周年紀念曲&PV公開40
[閒聊] 碧藍航線 7年的變化爆
[活俠] 小梅…噢…我的小梅……38
[蔚藍] 聖誕之前! SP! 生放集錦(圖極多注意)36
[情報] 間諜家家酒108話33
[PTCGP] 1529人參賽出輪32強牌組71
[討論] 今年最好看的動畫要推哪部31
[妮姬] 紅拉毗造型484有點土?28
[問題] 怪獸8號這部高潮是第幾本?26
[問題] 台灣日系文化是不是快超越韓系了32
[閒聊] 黑白妹作者:放心吧28
[情報] GBF11週年活動預告 十二神將演義28
[蔚藍] 睡衣真紀21
[閒聊] 統神現在是台灣實況圈最大咖嗎23
[繪圖] 黑白(葉)妹爆
[蔚藍] 聖誕SP生放98
[問題] 在宿舍怎麼玩黑白妹 急22
[PTCGP]遇到對面天胡該怎麼應對21
[情報] 噗妮露是可愛史萊姆 二期決定21
[MHG] 燃油車鬥魂三期製作決定,PV公開