Kohya使用方法與實(shí)踐案例
本文為您介紹如何訓(xùn)練LoRA模型。
背景信息
Stable Diffusion(下文簡稱SD)是深度學(xué)習(xí)文生圖的一個模型,相對Midjourney,其顯著優(yōu)勢在于開源性。SDWebUI是SD的一個可視化瀏覽器操作界面,它集成了豐富的功能,不僅可以在網(wǎng)頁端進(jìn)行文生圖、圖生圖等操作,還可以通過安裝各類插件以及導(dǎo)入多種模型等方式,滿足更高程度的定制化的繪圖需求,從而生成一個較為可控的結(jié)果。
通過SDWebUI服務(wù)生成各種圖片需要使用多種模型,模型的能力直接決定生成圖片的效果。不同的模型具有不同的側(cè)重點(diǎn),不同模型有各自的特色與適用領(lǐng)域,需要針對性地采用不同的訓(xùn)練數(shù)據(jù)集及訓(xùn)練策略來培養(yǎng)。其中,LoRA是一種輕量化的模型微調(diào)訓(xùn)練方法,在原大模型的基礎(chǔ)上對模型微調(diào),生成特定的角色或畫風(fēng)。LoRA模型訓(xùn)練方式速度較快,模型文件大小適中,對訓(xùn)練的配置要求較低。
Kohya是當(dāng)前應(yīng)用比較廣泛的訓(xùn)練LoRA模型的開源服務(wù)。Kohya's GUI是一個程序包,整合了訓(xùn)練需要用到的環(huán)境,提供可以用于模型訓(xùn)練的用戶界面,所有動作都在自身環(huán)境中運(yùn)行,不會干擾其他的程序。在SDWebUI里也可以使用一些擴(kuò)展插件去做模型訓(xùn)練,但如果都在SD中操作有時候會互相干擾,產(chǎn)生報錯 。
其他模型微調(diào)方法請參見模型介紹。
準(zhǔn)備LoRA訓(xùn)練數(shù)據(jù)集
確定LoRA類型
首先您需要確定希望訓(xùn)練的LoRA模型的類型,比如是角色類型還是風(fēng)格類型。
例如,需要訓(xùn)練一個阿里云進(jìn)化設(shè)計(jì)語言體系下的阿里云3D產(chǎn)品圖標(biāo)風(fēng)格的風(fēng)格模型。
數(shù)據(jù)集內(nèi)容要求
數(shù)據(jù)集由圖片和圖片對應(yīng)的文本描述標(biāo)注兩種文件組成。
準(zhǔn)備數(shù)據(jù)集內(nèi)容:圖片
圖片要求
數(shù)量:15張以上(一般不小于10張)。
質(zhì)量:分辨率適中,畫質(zhì)清晰。
風(fēng)格:需要一套統(tǒng)一風(fēng)格的圖片內(nèi)容。
內(nèi)容:圖片需凸顯要訓(xùn)練的主體物形象,不宜有復(fù)雜背景以及其他無關(guān)的內(nèi)容,尤其是文字。
尺寸:分辨率是64的倍數(shù),顯存低可以裁剪為512*512,顯存高可以裁剪為768*768。
圖片預(yù)處理
質(zhì)量調(diào)整:圖片分辨率適中即可,保證畫質(zhì)清晰,但也無需太大。畫質(zhì)會影響模型訓(xùn)練的結(jié)果。如果自己準(zhǔn)備的圖片分辨率比較小,不是很清晰,可以使用SD WebUI中Extras頁面中進(jìn)行分辨率放大,也可以使用其他圖像處理工具去處理圖像的分辨率。
尺寸調(diào)整量調(diào)整:可以前往像birme這種站點(diǎn)批量裁剪后批量下載,也可以使用SDWebUI裁剪或手動裁剪。
圖片部分準(zhǔn)備完畢示例
將圖片存放至本地文件夾中。
創(chuàng)建數(shù)據(jù)集并上傳文件
上傳前需要注意文件的屬性和命名要求,如果只是用平臺管理數(shù)據(jù)集文件或者給圖片打標(biāo),直接上傳文件或文件夾都可以,對這些文件和文件夾的命名沒有特殊要求。
如果數(shù)據(jù)集打標(biāo)完之后,需要用平臺的Kohya做LoRA模型訓(xùn)練,對于上傳的文件屬性和命名要求如下。
命名格式:數(shù)字+下劃線+任意名稱
命名含義:自定義。
數(shù)字:每張圖片重復(fù)訓(xùn)練次數(shù),一般要求≥100。總訓(xùn)練次數(shù)一般要求>1500,因此若文件夾內(nèi)包含10張圖片,則每張圖片訓(xùn)練1500/10=150次,圖片文件夾名數(shù)字部分可為150;若文件夾內(nèi)包含20張圖片,則每張圖片訓(xùn)練1500/20=75(<100)次,圖片文件夾名數(shù)字部分可為100。
任意名稱:本文以100_ACD3DICON為例,您可以根據(jù)實(shí)際情況自定義。
創(chuàng)建數(shù)據(jù)集
在數(shù)據(jù)集頁面,單擊新建數(shù)據(jù)集,并輸入數(shù)據(jù)集名稱,此處以acd3dicon為例。
上傳數(shù)據(jù)集文件
單擊已創(chuàng)建的數(shù)據(jù)集,將整理好的數(shù)據(jù)集圖片文件夾從本地拖拽上傳。
上傳成功。
進(jìn)入到文件夾里可以查看到已上傳的圖片。
準(zhǔn)備數(shù)據(jù)集內(nèi)容:圖片標(biāo)注
圖片標(biāo)注是指每張圖片對應(yīng)的文字的描述,文字描述的標(biāo)注文件,是與圖片同名的TXT格式的文件。
圖片標(biāo)注要求
例如,針對這類3D圖標(biāo)畫面打標(biāo)的信息維度的拆分。
分類
關(guān)鍵詞
業(yè)務(wù)
產(chǎn)品/業(yè)務(wù)
數(shù)據(jù)庫、云安全、計(jì)算平臺、容器、云原生等(英文)
云計(jì)算元素
Data processing、Storage、Computing、Cloud computing、Elastic computing、Distributed storage、Cloud database、Virtualization、Containerization、Cloud security、Cloud architecture、Cloud services、Server、Load balancing、Automated management、Scalability、Disaster recovery、High availability、Cloud monitoring、Cloud billing
設(shè)計(jì)(質(zhì)感)
環(huán)境&構(gòu)圖
viewfinder、isometric、hdri environment、white background、negative space
材質(zhì)
glossy texture、matte texture、metallic texture、glass texture、frosted glass texture
照明
studio lighting、soft lighting
色彩
alibaba cloud orange、white、black、gradient orange、transparent、silver
情緒
rational、orderly、energetic、vibrant
質(zhì)量
UHD、accurate、high details、best quality、1080P、16k、8k
設(shè)計(jì)(氛圍)
...
...
給圖片添加標(biāo)注
您可以手動為每個圖片添加對應(yīng)的文字描述,但當(dāng)圖片量非常大的情況下,手動打標(biāo)非常耗時耗力。此時您可以選擇借助神經(jīng)網(wǎng)絡(luò),完成對所有圖片批量生成文本描述的工作。您也可以在Kohya中選擇使用一個叫做BLIP的圖像打標(biāo)模型。
打標(biāo)數(shù)據(jù)集
在Kohya-SS頁面,選擇Utilities>Captioning>BLIP Captioning。
選擇已創(chuàng)建的數(shù)據(jù)集里面上傳的圖片文件夾。
輸入一些預(yù)置詞,這是讓機(jī)器給每一張圖片都批量加上您輸入的標(biāo)注文本。您可以結(jié)合自己對數(shù)據(jù)集圖片拆分的維度去添加預(yù)置詞,不同類型的圖片打標(biāo)的維度也不同。
單擊Caption Image即可開始打標(biāo)。
在下方的日志里可以查看打標(biāo)的進(jìn)度和打標(biāo)完成的提示。
再返回到數(shù)據(jù)集里面,可以看到剛才上傳的圖片已經(jīng)有對應(yīng)的標(biāo)注文件。
(可選)對于不合適的標(biāo)注可以手動修改。
kohya實(shí)操:LORA模型訓(xùn)練
在Kohya-SS頁面,選擇LoRA>Training>Folders。
選擇已上傳了數(shù)據(jù)集文件夾的數(shù)據(jù)集。
說明數(shù)據(jù)集文件打標(biāo)時,要選到數(shù)據(jù)集下面圖片的文件夾;做模型訓(xùn)練時,要選擇放置數(shù)據(jù)集文件夾的數(shù)據(jù)集。
設(shè)置訓(xùn)練參數(shù)。
單擊Start training。
在下方的日志里可以查看模型訓(xùn)練進(jìn)度和模型訓(xùn)練完成的提示。
Training Parameters 部分常用訓(xùn)練參數(shù)介紹說明
參數(shù) | 功能 | 設(shè)置說明 |
LoRA Type | 選擇LoRA類型 |
|
LoRA network weights | LoRA網(wǎng)絡(luò)權(quán)重,如果要接著訓(xùn)練則選用最后訓(xùn)練的LoRA | 選填。 |
Train batch size | 訓(xùn)練批量大小 | 根據(jù)顯卡性能,12 GB顯存最大為2,8 GB顯存最大為1。 |
Epoch | 訓(xùn)練輪數(shù)——將所有數(shù)據(jù)訓(xùn)練一次為一輪 | 自行計(jì)算。一般: Kohya中總訓(xùn)練次數(shù)=訓(xùn)練圖片數(shù)量x重復(fù)次數(shù)x訓(xùn)練輪數(shù)/訓(xùn)練批量大小。 WebUI中總訓(xùn)練次數(shù)=訓(xùn)練圖片數(shù)量x重復(fù)次數(shù)。 使用類別圖像時,在Kohya或在WebUI中總訓(xùn)練次數(shù)都會乘2;在Kohya中模型存儲次數(shù)會減半。 |
Save every N epochs | 每N個訓(xùn)練周期保存一次 | 如設(shè)為2,則每完成2輪訓(xùn)練保存一次訓(xùn)練結(jié)果。 |
Caption Extension | 打標(biāo)文件擴(kuò)展名 | 選填。 訓(xùn)練圖集中注解/提示文件的格式,.txt。 如圖: |
Mixed precision | 混合精度 | 視顯卡性能決定。默認(rèn)可選no、fp16、bf16。30以上顯卡可選bf16。 |
Save precision | 保存精度 | 同上。 |
Number of CPU threads per core | CPU每核線程數(shù) | 主要為顯存,根據(jù)所購實(shí)例和需求調(diào)整。 |
Learning rate | 學(xué)習(xí)率 | 默認(rèn)0.0001。 |
LR Scheduler | 學(xué)習(xí)率調(diào)度器 | 下拉列表,按需選擇cosine或cosine with restart等函數(shù)。 |
LR Warmup(% of steps) | 學(xué)習(xí)預(yù)熱步數(shù) | 按需調(diào)節(jié),默認(rèn)為10,可以選不要(0)。 |
Optimizer | 優(yōu)化器 | 按需選擇,默認(rèn)AdamW8bit,DAdaptation自動操作。 |
Max Resolution | 最大分辨率 | 根據(jù)圖片情況。 |
Network Rank (Dimension) | 模型復(fù)雜度 | 一般默認(rèn)可設(shè)64能適應(yīng)大部分場景。 |
Network Alpha | 網(wǎng)絡(luò)Alpha | 建議可以設(shè)小,rank和alpha設(shè)置影響最終輸出lora大小。 |
Convolution Rank (Dimension) & Convolution Alpha | 卷積度 | Lora對模型的微調(diào)涵蓋范圍。根據(jù)LoRA Type不同做調(diào)整。 Kohya官方建議: LoCon:dim<=64,alpha=1(或更低) LoHA:dim<=32,alpha=1 |
clip skip | 文本編碼器跳過層數(shù) | Clip跳過,二次元選2,寫實(shí)模型選1,動漫模型訓(xùn)練最初就有跳過一層,如使用訓(xùn)練素材也是二次元圖像,再跳一層=2。 |
Sample every n epoch | 每n輪樣本 | 每幾輪保存一次樣本。 |
Sample Prompts | 提示詞樣本 | 提示詞樣本。需要使用命令,參數(shù)如下:
|