5分鐘使用EAS一鍵部署Kohya SD模型微調(diào)應用
通過EAS,您可以一鍵部署開源Kohya_ss服務并訓練LoRA模型。在AI繪畫場景中,您可以將經(jīng)過訓練的LoRA模型應用于Stable Diffusion(SD)服務,作為輔助模型,以提升SD繪畫的效果。
前提條件
已開通EAS并創(chuàng)建默認工作空間,詳情請參見開通PAI并創(chuàng)建默認工作空間。
如果使用RAM用戶來部署模型,需要為RAM用戶授予EAS的管理權限,詳情請參見云產(chǎn)品依賴與授權:EAS。
已在同地域下創(chuàng)建OSS存儲空間和目錄,用來存放訓練素材、輸出的模型文件、日志等。如何上傳文件請參見控制臺上傳文件。
準備工作
登錄OSS管理控制臺,進入某個同地域下的Bucket路徑內(nèi)。例如:
oss://kohya-demo/kohya/
。在當前Bucket路徑下新建項目文件夾。例如:
KaraDetroit_loar
。同時,在此項目文件夾下新建Image
、Log
、Model
3個文件夾,如有JSON配置文件也可上傳至此項目文件夾。Image:存放訓練素材源文件。
Model:存放訓練完成后的模型文件。
Log:存放日志。
SS_config.json:JSON文件,用于批量配置參數(shù),非必需。使用時可在JSON配置中修改相關參數(shù),如文件夾路徑、輸出模型命名等。具體配置詳情可參考GitHub。文本示例請參考SS_config.json。
將準備好的圖片打包成壓縮文件上傳至
Image
文件夾下。本文使用的圖片及描述文件示例:100_pic.tgz。重要圖片文件夾命名必須符合格式:數(shù)字+下劃線+名稱。例如:100_pic。
圖片僅支持格式:
.png
,.jpg
,.jpeg
,.webp
,.bmp
。每張圖片必須提供一個同名的描述文件,格式可為
.txt
,描述信息必須放在第一行,如有多個描述信息,可使用逗號分隔。
參數(shù)
描述
數(shù)字
每張圖片重復訓練次數(shù),一般要求大于等于100。總訓練次數(shù)一般要求大于1500。
若文件夾內(nèi)包含10張圖片,則每張圖片訓練
1500/10=150
次,圖片文件夾名數(shù)字部分可為“150”。若文件夾內(nèi)包含20張圖片,則每張圖片訓練
1500/20=75(<100)
次,圖片文件夾名數(shù)字部分可為“100”。
下劃線
固定值,必填。
名稱
符合OSS文件名稱規(guī)則的任意字符串,本例中為“pic”。
部署Kohya_ss服務
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側(cè)選擇目標工作空間,然后單擊進入EAS。
單擊部署服務,然后在自定義模型部署區(qū)域,單擊自定義部署。
在自定義部署頁面,可通過表單或JSON配置相關參數(shù)。
通過表單配置參數(shù)
參數(shù)
描述
基本信息
服務名稱
自定義服務名稱。本案例使用的示例值為:kohya_ss_demo。
環(huán)境信息
部署方式
選擇鏡像部署,并選中開啟Web應用。
鏡像配置
在官方鏡像列表中選擇kohya_ss>kohya_ss:2.2。
說明由于版本迭代迅速,部署時鏡像版本選擇最高版本即可。
模型配置
選擇OSS類型的掛載方式,并配置以下參數(shù):
OSS:選擇同地域下的OSS路徑。本文為
oss://kohya-demo/kohya/
。掛載路徑:可自定義。本文為
/workspace
。重要是否只讀必須將開關關閉。否則模型文件無法輸出到OSS中。
運行命令
選擇鏡像后系統(tǒng)會自動配置運行命令。本文為:
python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless
。--listen
:用于將本程序綁定到指定的本機IP地址上,接收外部請求并進行處理。--server_port
:監(jiān)聽端口號。
資源部署
資源類型
選擇公共資源。
部署資源
資源規(guī)格推薦使用GPU>ml.gu7i.c16m60.1-gu30(性價比最高)。本文選擇了當前最小規(guī)格ml.gu7i.c8m30.1-gu30。
通過JSON配置參數(shù)
在服務配置中單擊編輯,并設置JSON格式數(shù)據(jù)。
JSON參考示例如下。
重要以下示例第4行"name",第18行"oss"等配置請按實際情況修改。
{ "metadata": { "name": "kohya_ss_demo", "instance": 1, "enable_webservice": true }, "cloud": { "computing": { "instance_type": "ecs.gn6e-c12g1.12xlarge", "instances": null } }, "storage": [ { "oss": { "path": "oss://kohya-demo/kohya/", "readOnly": false }, "properties": { "resource_type": "model" }, "mount_path": "/workspace" }], "containers": [ { "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:1.2", "script": "python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless", "port": 8000 }] }
單擊確定,然后檢查表單配置,并單擊部署,等待幾分鐘后即可完成模型部署。當服務狀態(tài)為運行中時,服務部署成功。
訓練LoRA模型
單擊目標服務服務方式列下的查看Web應用,進入Kohya_ss服務。
選擇Dreambooth LoRA。
設置Configuration file。可選,若無
SS_config.json
可跳過此步驟。說明配置文件路徑為通過表單配置參數(shù)中的掛載路徑+OSS中創(chuàng)建的文件夾路徑+SS_config.json。在本文中為:
/workspace/KaraDetroit_loar/SS_config.json
。設置SourceModel。本文使用safetensors,相比較checkpoint來說更具有安全性。
設置Folders。填寫前面步驟在OSS中所創(chuàng)建的
Image
、Log
、Model
路徑和輸出文件名。參數(shù)
描述
Image folder
需要訓練的圖片文件夾路徑。設置為通過表單配置參數(shù)中的掛載路徑拼接OSS中創(chuàng)建的
Image
路徑。在本文中為:/workspace/KaraDetroit_loar/Image
。Logging folder
輸出日志的文件夾路徑。設置為通過表單配置參數(shù)中的掛載路徑拼接OSS中創(chuàng)建的
Log
路徑。在本文中為:/workspace/KaraDetroit_loar/Log
。Output folder
輸出模型的文件夾路徑。設置為通過表單配置參數(shù)中的掛載路徑拼接OSS中創(chuàng)建的
Model
路徑。在本文中為:/workspace/KaraDetroit_loar/Model
。Model output name
模型輸出名稱。例如:my_model。
設置Training parameters。示例值見準備工作步驟中的
SS_config.json
內(nèi)容。參數(shù)
描述
LoRA Type
LoRA類型:
LoCON
:可以調(diào)整SD的每一層。如:Res
、Block
、Transformer
。LoHA
:同樣大小處理更多信息。
LoRA network weights
LoRA網(wǎng)絡權重,如果要接著訓練則選用最后訓練的LoRA。選填。
Train batch size
訓練批量大小。該值越大,對顯存的要求越高。
Epoch
訓練輪數(shù),將所有數(shù)據(jù)訓練一次為一輪。需要自行計算。一般情況下:
Kohya中總訓練次數(shù) = 訓練圖片數(shù)量 x 重復次數(shù) x 訓練輪數(shù) / 訓練批量大小
。WebUI中總訓練次數(shù) = 訓練圖片數(shù)量 x 重復次數(shù)
。
使用類別圖像時,在Kohya或在WebUI中總訓練次數(shù)都會乘2,在Kohya中模型存儲次數(shù)會減半。
Save every N epochs
每N個訓練周期保存一次。如設為2,則每完成2輪訓練保存一次訓練結果。
Caption Extension
打標文件擴展名,例如:.txt。選填。
Mixed precision
混合精度。視顯卡性能決定。默認可選no、fp16、bf16。30GB顯存以上的顯卡建議設置為bf16。
Save precision
保存精度,同上。
Number of CPU threads per core
CPU每核線程數(shù)。主要為顯存,根據(jù)所購實例和需求調(diào)整。
Learning rate
學習率。默認0.0001。
LR Scheduler
學習率調(diào)度器。按需選擇
cosine
或cosine with restart
等函數(shù)。LR Warmup(% of steps)
學習預熱步數(shù)。按需調(diào)節(jié),默認為10,無需預熱則可選擇0。
Optimizer
優(yōu)化器。按需選擇,默認
AdamW8bit
,DAdaptation
代表自動操作。Max Resolution
最大分辨率。根據(jù)圖片情況進行設置。
Network Rank(Dimension)
模型復雜度。一般設置為128即可適應大部分場景。
Network Alpha
一般設置為比Network Rank(Dimension)小或者相同,常用的便是Network Rank設置為128,Network Alpha設置為64。
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
使用的CLIP模型的次數(shù),取值范圍是1到12,值越小,生成的圖像就越接近原始圖像或輸入圖像。
寫實模型:選擇1。
二次元:選擇2。
Sample every n epoch
每N輪樣本。每幾輪保存一次樣本。
Sample Prompts
提示詞樣本。需要使用命令,參數(shù)如下:
--n
:提示詞、反向提示詞。--w
:圖片寬度。--h
:圖片高度。--d
:圖像種子。--l
:提示詞相關性(cfg)。--s
:迭代步數(shù)(steps)。
在頁面下方,單擊Train model開始進行訓練。
在模型在線服務(EAS)頁面的服務列表中單擊對應的服務名稱,進入服務詳情。單擊服務日志即可實時查看訓練進度。
當出現(xiàn)
model saved
即表示訓練完成。訓練完成后,在配置的模型目錄(
Model
)中獲取訓練得到的LoRA模型文件。例如:my_model.safetensors
。
使用訓練的LoRA模型進行Stable Diffusion AIGC繪畫
當您訓練好自己的LoRA模型后,可將其上傳到相應的SD WebUI的目錄中進行掛載使用,從而實現(xiàn)利用自己訓練的LoRA模型生成圖片。如何部署Stable Diffusion服務,可參考:5分鐘使用EAS一鍵部署Stable Diffusion實現(xiàn)文生圖能力。
如何在Stable Diffusion WebUI中上傳LoRA模型文件,詳情設置如下:
Stable Diffusion WebUI的集群版(Cluster)
配置Stable Diffusion WebUI鏡像,需選擇-cluster版本(例如stable-diffusion-webui:4.2-cluster-webui)。服務啟動成功后會在掛載的OSS路徑下自動創(chuàng)建
/data-{當前登錄用戶ID}/models/Lora
路徑。在運行命令中添加以下參數(shù):
--lora-dir
,可選參數(shù)。--lora-dir
未指定時,所有用戶的模型文件隔離,只加載{OSS路徑}/data-{當前登錄用戶ID}/models/Lora
下的模型文件。--lora-dir
指定時,所有用戶均會加載該目錄以及{OSS路徑}/data-{當前登錄用戶ID}/models/Lora
目錄下的模型文件。例如:--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora
。
--data-dir {OSS掛載路徑}
,例如:--data-dir /code/stable-diffusion-webui/data-oss
。
將LoRA模型文件上傳到
{OSS路徑}/data-{當前登錄用戶ID}/models/Lora
中。例如:oss://bucket-test/data-oss/data-1596******100/models/Lora
。說明OSS中的
/data-{當前登錄用戶ID}/models/Lora
路徑會在當前服務啟動成功后自動創(chuàng)建,因此需在服務啟動成功后再上傳LoRA模型文件。{當前登錄用戶ID}
可在頁面右上角的個人頭像處查看。
Stable Diffusion WebUI的單機版
配置Stable Diffusion WebUI鏡像,需選擇非
-cluster
版本(例如stable-diffusion-webui:4.2-standard)。服務啟動成功后會在掛載的OSS路徑下自動創(chuàng)建/models/Lora
路徑。在運行命令中添加參數(shù):
--data-dir {OSS掛載路徑}
。例如:--data-dir /code/stable-diffusion-webui/data-oss
。將LoRA模型文件上傳到
{OSS路徑}/models/Lora
下。例如:oss://bucket-test/data-oss/models/Lora
。說明掛載的OSS中的
/models/Lora
路徑會在當前服務啟動成功后自動創(chuàng)建,無需自行創(chuàng)建。因此需要在服務啟動成功后再上傳LoRA模型文件。