[TensorArt] Lora 訓練筆記

AIGC

對於硬體需求比較高的訓練,利用第三方平台算是一個不錯的選擇。當然,若你是有一些工程背景知識,使用 Colab 或是 Runpod 也是一個選項。但倘若是訓練入門的人,使用 TensorArt 所提供的工具也是不錯。


TensorArt

TensorArt 是一個線上產圖的平台,跟 Civitai 是類似的。前些日子他們推出了訓練工具,所以,我們現在可以在 TensorArt 上面訓練我們自己的 Lora 模型。

如果你沒有註冊過帳號的話,先去註冊一個帳號再來看看如何使用訓練方式吧。


TensorArt 訓練介面說明

首先我們先熟悉一下介面,在登入後右上角選單中,會有一個 Training 的選項,

TensorArt Training

進入之後,會看到一個空的訓練清單,這個時候我們點一下 Online Training 就會進入訓練設定。

TensorArt Online Training

進入訓練設定後,分成兩個區域,一個是放置你的訓練資料集的地方,另一個則是關於訓練方面的設定。

TensorArt New Training

左邊就是上傳資料集的部分,我們這邊暫時先跳過,我後面會再補充說明。右邊則是訓練參數設定,跟常用的 Kohya-ss 比起來,他的設定參數就少了很多。

在介面的右上角,有一個 Professional Mode 可以切換,上面圖片所顯示的是 Basic Mode 也就是基礎模式。

在基礎模式的狀態下,我們有幾件事情可以做,

  1. 選擇訓練的基礎模型。
  2. 設定 RepeatEpoch 數量。
  3. 設定這個 Lora 模型的觸發詞(Trigger words)。
  4. 設定模型訓練時,用來產出範例圖片的提示詞(Preview Prompt)。

全部設定好之後就能開始訓練,夠簡單吧!


進階模式 Professional Mode

如果你切換到進階模式(Professional Mode),那麼你可以設定的東西會多很多。

TensorArt Professional Mode 1
TensorArt Professional Mode 2
TensorArt Professional Mode 3

在進階模式下,你可以設定的項目有,

  1. 選擇模型與設定觸發詞的部分,與基本模式相同。
  2. 設定 RepeatEpoch 數量,並且設定多少個 Epoch 要儲存一次訓練結果模型。
  3. 設定採樣種子(這個種子說明請參考我 之前的文章)。
  4. 設定 Text Encoder 學習率,UNet 學習率與學習率排程(LR Scheduler)。
  5. 設定排程重起次數與預熱步數。
  6. 設定優化器(_Optimizer)。
  7. 設定 DIM(Rank)Alpha
  8. 可以決定是否開啟打亂標籤(Shuffle caption)。
  9. 可以設定保持幾個標籤不被打亂(Keep n tokens)。
  10. 設定噪聲偏移(Noise offset),或多重噪聲偏移參數(Multries noise)。
  11. 設定卷積(Conv)的 DIM(Rank)Alpha
  12. 設定模型訓練時,用來產出範例圖片的提示詞(Prompt)與負面提示詞(Negative Prompt)。
  13. 選擇產出範例圖片的圖片尺寸與採樣(Sampler)方式。

根據之前測試的結果,目前可以確定優化器的部分,僅有 AdamWAdamW8bit 會比較順利,其他的優化器我全部都跑過一次,全部都失敗收場(笑)。

TensorArt Training Optimizer

至於學習率排程(LR Scheduler)的選擇,基本上跟學習率、優化器方式比較相關。如果你不確定的話,可以先用常用的 constant 來做訓練。

TensorArt Training LR Scheduler

如果你真的不理解上面那些設定,你先試試看基本模式就好了。或者,你可以去看看我之前所寫的關於 Kohya_ss GUI 的介紹文章。


資料集的準備

要訓練總是要準備資料集,在 TensorArt 的訓練介面上,他允許你直接上傳圖片,或是上傳一個壓縮檔(zip)。

在直接上傳圖片的部分,由於是直接上傳,所以他會自動幫你把圖片的標籤做好。

TensorArt Training Add Dataset with upload image

你的圖片上傳後,他就會自動幫圖片下好標籤,你可以點擊那張圖片來查看他加入了哪些標籤。另,圖片打開後,如果你發現會破圖(圖片無法顯示),這個時候你重新整理一下瀏覽器應該就會正常。

TensorArt Training Add Dataset with tag editor

打開後你可以在這邊編輯這張圖片的標籤,看你是要刪除,或是要新增都可以。


上傳壓縮檔案

一張一張上傳實在太慢,那麼你可以把圖片壓縮後上傳,建議的作法如下:

  1. 利用流水號編排圖片檔案名稱,例如 img_0001.png, img_0002.png 依此類推。
  2. 如果有標記檔案,請跟圖片檔名對齊,例如 img_0001.txt, img_0002.txt 依此類推。

將上述檔案打包成一個壓縮檔案(zip),請勿包含任何資料夾,把壓縮檔案上傳上去即可。


回到圖片清單介面上,你還有三個功能可以使用。

  1. 批次裁切圖片(_Batch Cutting)。
  2. 自動標籤(Auto Labeling)。
  3. 批次加入標籤(Batch Add Labes)。

批次裁切圖片(_Batch Cutting)

在批次裁切圖片的功能裡,你可以針對訓練模型的版本(SD 1.5SDXL)來選擇裁切的尺寸。

TensorArt Training Batch Cutting

其中裁切模式(Cutting Method)有兩種可以選擇,官方並沒有特別說明兩者的差異,但依據常見訓練方式的裁切方法來看,個人猜測可能是這樣的裁切方式:

  1. Focus Cut 針對臉部做裁切。
  2. Center Cut 直接由圖片中央裁切。

確定之後他就會依據你設定好的尺寸來裁切你的圖片。


自動標籤(Auto Labeling

在自動標籤的功能中,你可以選擇哪一種語言演算法來標籤你的圖片。

TensorArt Training Auto Labeling
TensorArt Training Auto Labeling Algorithm

底下的標籤過濾基本上沒有什麼功用,除非你上傳的是壓縮檔,檔案內沒有附帶標籤文件的話,這邊就能選擇要自動標籤的對象是誰。


批次加入標籤(Batch Add Labes

最後一個是可以針對圖片作批次加入標籤的功能。

TensorArt Training Batch add Labels

你可以輸入你想要加入的標籤,並選擇要加在開頭(Beginning of Line)還是結尾(End of Line)。

請注意!在這邊不要輸入你的觸發詞(Trigger word),觸發詞在這個訓練器當中,會自動加在所有訓練提示詞的最前面。


開始訓練

請留意 TensorArt 會依照你的訓練集、訓練參數設定,而有不同的點數(Credits)需求。

TensorArt Training Credits

如果你的點數(Credits)不夠的話,可能會需要額外購買。一切的數據都設定好之後,就可以開始跑訓練了。

TensorArt Training Progress

當你訓練完成後,你就能點進去看看訓練的結果。由於我當初使用的是進階模式,所以會儲存每次 Epoch 的結果,而這四張圖片就是當初所設定的範例圖片提示詞,所產出的結果。

TensorArt Training Completed

你可以挑選你覺得結果比較好的 Epoch 的模型來下載使用。

請注意!在我測試的期間,TensorArt 官方表示,僅會儲存 10 個 Epoch 結果,而我此次的測試 Epochs 是 12 個,所以最終只會儲存 3~12 個 Epoch 而已。

上面的圖片從 2 開始,是官方的 Bug,因為他幫我儲存了 2~11,並不是 3~12,已經回報給 TensorArt 官方,後續他們會修復這個問題。


訓練失敗?

跑訓練總是會失敗的,

TensorArt Training Failed

失敗的部分我就不多說了,大抵上就是超參數錯誤之類的,詳細的資訊你也無法得知就是。


重新訓練

在訓練記錄的清單中,可以利用 Retrain 按鈕來重新訓練相同的資料集。

TensorArt Training Retrain

當你點擊 Retrain 的時候,如果你當初的資料集很多,就稍等他一下,他會把所有的資料都讀取進來。接著你就重複設定,或是增加、刪減你的資料集圖片,然後進行重新訓練。

介面上的 View Parameters 則是可以察看該次訓練的參數,

TensorArt Training View Parameters

訓練完成之後

你的訓練記錄會保留 15 天,如果你想要繼續保留,那麼你就按一下 Retrain 讓他複製一份新的出來。

TensorArt Training Retrain to clone training task

當你挑選好你覺得不錯的訓練結果(通常會是最後一個),你可以選擇發佈到 TensorArt 上面,或是下載他。

TensorArt Training Publish or Download

當你選擇發佈時,如果你已經發佈過其他的 Lora 專案,他會要你選擇你想要發佈到哪一個專案下,或者是,你可以選擇建立一個全新的專案(Create a project)。

TensorArt Publish Lora

結語

其實 TensorArt 這樣的工具算是相當方便,對於手邊沒有足夠的硬體資源的人來說,想要訓練一些小的模型來練練手感,又不想要設定那些複雜的超參數,這確實是一個入門的好工具。

最後,希望官方能把 Prodigy 優化器修好,畢竟這個東西在本地端要跑起來難度很高啊(笑)。

Hina Chen
偏執與強迫症的患者,算不上是無可救藥,只是我已經遇上我的良醫了。
Taipei