中文(新加坡)

目前位置: 首頁> AI 課程> AI 深度學習

如何訓練SDXL LoRA 模型

作者: LoRA 時間: 2025年01月16日 1012

jinx_副本.png

LoRA (Low-Rank Adaptation) 是一種高效的Stable Diffusion 微調技術,尤其適用於SDXL。它允許您使用相對較少的資源和時間,將特定概念、風格或物件注入到SDXL 模型中,而無需重新訓練整個模型。本教學將詳細介紹如何在Windows 系統上使用kohya-ss/sd-scripts訓練SDXL LoRA 模型。

準備工作

  1. 硬體需求

    • 建議使用至少12GB 記憶體的NVIDIA 顯示卡。如果顯存不足,可以嘗試降低訓練解析度或使用其他最佳化技巧。

  2. 軟體環境

    • Python :建議使用Python 3.10.6版本,並確保已正確配置環境變數。

    • Git :用於克隆訓練腳本。

    • Stable Diffusion WebUI (AUTOMATIC1111 或其他) :雖然LoRA 訓練本身不依賴WebUI,但後續使用LoRA 時需要它。

    • 訓練腳本:建議使用kohya-ss/sd-scripts倉庫中的腳本,它功能強大,支援多種訓練方法和參數配置。

  3. 訓練資料

    • 數據品質:使用高品質、清晰且相關的影像。

    • 資料量:50-200 張影像通常足以訓練一個效果不錯的LoRA。

    • 影像尺寸:建議使用1024x1024768x1024的分辨率,必須是64 的倍數。如果顯存有限,可以適當降低解析度。

    • 圖像標註:仔細標註每張圖像,使用簡潔明了的標籤。例如,如果訓練的是人物LoRA,可以使用「person」、「man」、「woman」、「long hair」、「blue eyes」等標籤。

    • 底模選擇:選擇一個與您的訓練資料風格相近的SDXL 模型,以獲得更好的效果。例如,訓練動漫風格的LoRA 時,選擇以動漫風格為主的SDXL 模型。

安裝和配置訓練環境

  1. 克隆kohya-ss/sd-scripts 倉庫: 開啟命令列或PowerShell,執行下列命令複製倉庫:

     git clone https://github.com/kohya-ss/sd-scripts.git
    cd sd-scripts
  2. 安裝依賴: 執行以下命令安裝所需的Python 庫:

     pip install -r requirements.txt
  3. 安裝PyTorch : 根據您的CUDA版本選擇合適的PyTorch版本進行安裝。在sd-scripts目錄下通常會有安裝說明。

準備訓練數據

  1. 建立訓練資料夾: 在sd-scripts目錄外建立一個資料夾用於存放訓練數據,例如my_lora_dataset

  2. 組織資料: 在my_lora_dataset資料夾下建立兩個子資料夾:

    • train :存放訓練影像。

    • log :存放訓練日誌和輸出檔案。

  3. 標註圖像: 將圖像放入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 模型

訓練完成後,LoRA 模型檔案(.safetensors 格式)將保存在log目錄下。將其複製到Stable Diffusion WebUImodels/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技術的專業人士。

AI課程的學習難度如何?

課程內容從基礎到高級不等,初學者可以選擇基礎課程,逐步深入到更複雜的算法和應用。

學習AI需要哪些基礎?

學習AI需要一定的數學基礎(如線性代數、概率論、微積分等),以及編程知識(Python是最常用的編程語言)。

AI課程能學到什麼?

將學習自然語言處理、計算機視覺、數據分析等領域的核心概念和技術,掌握使用AI工具和框架進行實際開發。

AI課程學完後能做什麼工作?

您可以從事數據科學家、機器學習工程師、AI研究員、或者在各行各業應用AI技術進行創新。