Fw: [AI] 如何訓練LoRA? 猴子都學得會的手把手教學!已刪文

看板Test作者 (永恆夢魘)時間1年前 (2023/02/10 05:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 C_Chat 看板 #1ZvMm1yc ] 作者: wres666 (永恆夢魘) 看板: C_Chat 標題: [AI] 如何訓練LoRA? 猴子都學得會的手把手教學! 時間: Fri Feb 10 05:56:12 2023 先附上預覽圖,幼妲貼貼: 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的顯卡隨便煉,也就忘了dre ambooth這件事。 但前陣子漸漸覺得遇到瓶頸,為了複雜的場景prompt下太多,角色的特徵很容易會被抹掉, 原本就不是很準確的特徵在複雜prompt下更難骰出好圖。想起還有比較準確的dreambooth可 以用,想說也許經過幾個月的發展dreambooth能在低顯存的環境下訓練,一開始的確有在re ddit看到去年十月的文章說dreambooth可以在8g vram顯卡上訓練,但我試了無法,而且近 期的文章也都說要求10g顯存。那本地不能訓練,但我又不想在colab上跑,除了要掛載雲端 硬碟然後還要清空間放模型很煩之外,邪惡的東西也不能在上面訓練,於是dreambooth這件 事又被我放置了。 直到最近聽說有個新技術,LoRA,不僅訓練出來的模型很小對硬碟空間很友善,效果貼近dr eambooth的同時,重點是,真的能在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 http s://download.pytorch.org/whl/cu116 pip install --upgrade -r requirements.txt pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-w ebui/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\ce xtension.py cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_set up\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/LoR A_Easy_Training_Scripts/main/lora_train_popup.py 將腳本下載下來 *如果沒有wget,去用chocolatey裝一個,或是 https://github.com/derr ian-distro/LoRA_Easy_Training_Scripts/blob/main/lora_train_popup.py 文件右上角Ra w右鍵->另存連結 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
記憶體<16g 設為1 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", "pol ynomial", "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加上--deepdanbooru參數 開啟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
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.218.206.38 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1675979777.A.F26.html ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: wres666 (124.218.206.38 臺灣), 02/10/2023 05:58:48
文章代碼(AID): #1ZvMoPUY (Test)