LoRA (Low-Rank Adaptation) 是一種高效的Stable Diffusion 微調技術,尤其適用於SDXL。它允許您使用相對較少的資源和時間,將特定概念、風格或物件注入到SDXL 模型中,而無需重新訓練整個模型。本教學將詳細介紹如何在Windows 系統上使用kohya-ss/sd-scripts
訓練SDXL LoRA 模型。
硬體需求:
建議使用至少12GB 記憶體的NVIDIA 顯示卡。如果顯存不足,可以嘗試降低訓練解析度或使用其他最佳化技巧。
軟體環境:
Python :建議使用Python 3.10.6版本,並確保已正確配置環境變數。
Git :用於克隆訓練腳本。
Stable Diffusion WebUI (AUTOMATIC1111 或其他) :雖然LoRA 訓練本身不依賴WebUI,但後續使用LoRA 時需要它。
訓練腳本:建議使用kohya-ss/sd-scripts倉庫中的腳本,它功能強大,支援多種訓練方法和參數配置。
訓練資料:
數據品質:使用高品質、清晰且相關的影像。
資料量:50-200 張影像通常足以訓練一個效果不錯的LoRA。
影像尺寸:建議使用1024x1024或768x1024的分辨率,必須是64 的倍數。如果顯存有限,可以適當降低解析度。
圖像標註:仔細標註每張圖像,使用簡潔明了的標籤。例如,如果訓練的是人物LoRA,可以使用「person」、「man」、「woman」、「long hair」、「blue eyes」等標籤。
底模選擇:選擇一個與您的訓練資料風格相近的SDXL 模型,以獲得更好的效果。例如,訓練動漫風格的LoRA 時,選擇以動漫風格為主的SDXL 模型。
克隆kohya-ss/sd-scripts 倉庫: 開啟命令列或PowerShell,執行下列命令複製倉庫:
git clone https://github.com/kohya-ss/sd-scripts.git cd sd-scripts
安裝依賴: 執行以下命令安裝所需的Python 庫:
pip install -r requirements.txt
安裝PyTorch : 根據您的CUDA版本選擇合適的PyTorch版本進行安裝。在sd-scripts目錄下通常會有安裝說明。
建立訓練資料夾: 在sd-scripts目錄外建立一個資料夾用於存放訓練數據,例如my_lora_dataset
。
組織資料: 在my_lora_dataset
資料夾下建立兩個子資料夾:
train :存放訓練影像。
log :存放訓練日誌和輸出檔案。
標註圖像: 將圖像放入train資料夾,並建立對應的文字檔案(.txt),檔案名稱與圖像檔案名稱相同,文字檔案中包含圖像的標籤,以逗號分隔。例如,如果圖片檔案名稱為image001.jpg
,則建立image001.txt
,內容為1girl, long hair, blue eyes
。
使用sd-scripts提供的訓練腳本sdxl_train_network.py
進行訓練。你需要建立一個設定檔(例如my_lora_config.toml
)來指定訓練參數。以下是一個範例配置:
[general] output_dir = "log" # 輸出目錄pretrained_model_name_or_path = "path/to/your/sdxl_base_model.safetensors" # SDXL 底模路徑train_data_dir = "path/to/my_lora_dataset/train" # 訓練資料路徑 resolution = "path/to/my_lora_dataset/train" # 訓練資料路徑resolution = "path/to/10104"解析度output_name = "my_lora" # LoRA 模式名稱[training] network_module = "networks.lora" # 使用LoRA 訓練network_dim = 128 # LoRA 維度,影響模型大小和效果network_alpha = 64 # LoRA alpha,影響訓練速度和效果learning_rate = 1e-4 # 學習率train_batch_size = 1 # 批次訓練大小,根據顯存調整max_train_steps = 1000 #最大訓練步數save_every_n_steps = 500 # 每多少步驟儲存一次模型[optimizer] optimizer_type = "AdamW" # 優化器類型
在sd-scripts目錄下,使用以下指令啟動訓練:
python sdxl_train_network.py --config=my_lora_config.toml
訓練完成後,LoRA 模型檔案(.safetensors 格式)將保存在log目錄下。將其複製到Stable Diffusion WebUI的models/Lora資料夾中,然後在提示詞中使用<lora:模型文件名:权重>
語法呼叫。
關鍵參數解釋:
network_dim :LoRA 的維度,值越大模型越大,效果可能更好,但訓練時間和檔案大小也會增加。
network_alpha :LoRA alpha,影響訓練速度和效果,通常設定為network_dim的一半。
learning_rate :學習率,影響模型收斂速度與效果。
train_batch_size :訓練批次大小,依顯示記憶體調整。
max_train_steps :最大訓練步數,決定訓練時長。
resolution :訓練解析度。
正規化影像:為了防止過擬合,可以使用正規化影像。這些圖像是使用相同的底模產生的,但不包含您要訓練的概念。
使用TensorBoard 監控訓練:可以使用TensorBoard 監控訓練過程,以了解模型的收斂性。
多機分散式訓練:對於大規模資料集,可以使用多機分散式訓練來加速訓練過程。
希望以上步驟能幫助您成功訓練SDXL LoRA 模型。如有其他問題,歡迎繼續提問。
AI課程適合對人工智能技術感興趣的人,包括但不限於學生、工程師、數據科學家、開發者以及AI技術的專業人士。
課程內容從基礎到高級不等,初學者可以選擇基礎課程,逐步深入到更複雜的算法和應用。
學習AI需要一定的數學基礎(如線性代數、概率論、微積分等),以及編程知識(Python是最常用的編程語言)。
將學習自然語言處理、計算機視覺、數據分析等領域的核心概念和技術,掌握使用AI工具和框架進行實際開發。
您可以從事數據科學家、機器學習工程師、AI研究員、或者在各行各業應用AI技術進行創新。