[Docker] Kohya_ss GUI 設定

Kohya 原本是一套在 CLI 底下的訓練工具,後來有人把他做成 GUI,然後又有人把他 Docker 化,對我來說其實在 CLI 底下也沒有不方便。不過,既然有提供 Docker 化的 GUI 介面,那麼用這個來做設定也是挺方便的。


Kohya_ss 前言

原始作者是一位日本人,這裡有一些他相關的文章,

kohya_ss

Github, kohya-ss

然後後來這個人做出了 GUI 介面,

kohya's GUI

接著又有人把他 Docker 化,

kohya-ss docker

雖然說在 CLI 底下並沒有不方便的地方,不過由於 Docker 那邊在單純安裝 sd-scripts 有點小麻煩(畢竟套件問題很惱人),再加上 GUI 介面也跟 sd-scripts 一樣需要解決一些套件狀況,所以,如果真的需要用 Docker 還是使用最後一個 Docker 化的比較方便。


Kohya-ss GUI Docker

其實沒有太多要準備的東西,唯一比較麻煩的是,在 kohya-ss docker 當中,你需要去準備他必要的一些元件庫。

首先,你必須先找到這些東西,

連結我都附上了,可以自行下載,放到相對的資料夾裡面。

另外,還需要準備這些,

大部分的檔案你可以在 python, pytorch 的地方找到,唯獨 最後一個 有點麻煩。作者在 Github 當中 給的建議是,

You should compile yourself xformer, torchvision, torch and tensorflow for your architecture and GPU capabilities and put the wheels here.
You can also simply download them from the pip repository and use the default one (too bad...you are leaving performance behind...).

Open the .tensorflow, .torch, .torchvision, .xformers to find the tested and approved for stability versions. Use the PyPi website to search and download the library is you're not willing to compile them by yourself, then put the *.whl here and compile the docker image.

當然,我就是懶得在自己的環境中去重新編譯這些檔案,所以就盡可能試試看能否有現成的可以使用。最後,我在 Stable Diffusion WEBUI docker 當中的 AUTOMATIC1111 的 Dockerfile 裡面找到,

xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl

經過實際測試,這個版本是可以運作的,所以放心使用沒有問題。

接著,因為是跑在容器裡面,所以 kohya_ss/scripts/run.sh 需要加一點料,你不改也沒關係(我只是不想看到啟動的時候有一些煩人的警告)。

diff --git a/kohya_ss/scripts/run.sh b/kohya_ss/scripts/run.sh
index d33e04e..ebd6406 100644
--- a/kohya_ss/scripts/run.sh
+++ b/kohya_ss/scripts/run.sh
@@ -34,7 +34,7 @@ cd "${ROOT}" && git pull
 if [[ -n "${ACCELERATE}" ]] && [[ "${ACCELERATE}" = "True" ]] && [[ -x "$(command -v accelerate)" ]]
 then
     echo "Accelerating SD with distributed GPU+CPU..."
-    accelerate launch --num_cpu_threads_per_process=6 $@
+    accelerate launch --mixed_precision=bf16 --num_machines=1 --num_processes=4 --num_cpu_threads_per_process=8 $@
 else
     python -u $@
 fi

請留意! 如果你的機器不支援 bf16 的話,上面的那段請把 bf16 改成 fp16。另外,這個 Dockerfile 對外的 PORT 是 7680,這一點要記得,不然你會連不上。


建立 Image

請留意,這個 Dockerfile 需要挺多硬碟空間來運作。我在整個實驗過程中,由於一直嘗試不同的 torch, torchvision 及 xformers 版本,最終導致用掉將近 300GB 的硬碟空間。所以,如果想要嘗試新版本,或是想要測試的人,請確保做完之後清除一下 Docker 本身的快取資料,不然硬碟會默默的被塞滿。

基本上準備好上述的資料後,你就可以放心的讓他去建立映象檔案了。

docker compose --profile kohya up --build

然後,你可以去吃個飯之類的,他跑起來相當久。整個映象檔建立完成之後,大概會需要 30GB 以上的空間來放,而建立的過程中,你可能會需要 100GB 的硬碟空間來讓他建立需要的環境。所以,當你完成所有的映象檔案建立後,建議你清除一下 Docker 的快取,來釋放掉建立過程中所產生的快取檔案。


GUI 介面

主要是我要拿 Dreambooth Lora 來用,所以其實剩下的就是去網路上參考教學文件就好。或者是你要參考 我之前寫的文章 也是可以。

Kohya_ss GUI

由於是 Docker 環境的關係,所以你的 Start tensorborad 可能會無法啟動,像我放在遠端伺服器上面,所以這上面跟 Host 有關的操作我都無法使用。

docker logs 輸出

訓練開始跑的時候,可以用 docker logs 來看看狀況。


結語

這個 GUI 啟動本身不會占用任何運算資源,基本上就是提供一個算是方便的 GUI 給你操作(比較不需要花腦筋記憶那些參數)。如果不跑 GUI 的話,倒是可以試著把 kohya-ss 包裝成容器就是。

我幫各位踩過雷了,改天再寫吧。

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