
PyTorchが2.7.0から2.7.1になったせいでKohya_ssのセットアップでエラーが出るようになった。
サクッと解決できた。イチからセットアップ手順をメモしておく。
すでにStable Diffusionはインストール済みの状態。すなわち、Python3.10.9やGit、CUDA12.8がインストールできていることを前提にKohya_ssのセットアップをする。
※Stable Diffusionで使っているPyTorch2.7.1やxformersは、venvでインストールしているはずなので、SDの方で使っているPyTorchなどを削除する必要はない。
Windows11のターミナル(Powershell)ではなくコマンドプロンプトを使う。venv有効の確認などコマンドプロンプトの方が見やすい。
Linux Mintでも、Venvを有効化し、pipコマンドでバージョンを指定してPyTorchなどをインストールする手順は共通している。Linux でのKohya_ssのポート変更については、前の記事でふれている。
ホームフォルダにKohya_ssセットアップ
コマンドプロンプトを念のため管理者権限で起動し、ホームフォルダに移動する。
僕は C:\users\satoleus なので、
cd c:\users\satoleus
git clone https://github.com/bmaltais/kohya_ss.git
gitコマンドでkohya_ssをクローン。ホームフォルダにkohya_ssフォルダが作成される。

作成されたフォルダの中身はこんな感じ。まだvenvなどがない。
setup.bat
setup.batを起動し必要なファイルを作成する。
選択肢が出てきたら 1(Install kohya_ss GUI) を選んでセットアップ開始。

コマンドプロンプトの場合、しれっとインストールが完了している場合がある。
status 'done'
となっていたらOKだ。
コマンドプロンプトは起動したまま作業を続けてもいいが、「これどうやって次行くの?」みたいな人は、めんどうだけど閉じて再び起動しkohya_ssへ移動した方が安全だと思う。
venvフォルダなどができている。
venv有効化
コマンドプロンプトで kohya_ssフォルダへ移動し、
.\venv\Scripts\activate.bat
Kohya_ss専用の仮想環境を有効にする。
プロンプトの頭に (venv) がつけばvenvが有効になった。
PyTorchなどインストール
venvが有効状態で、バージョンを指定してPyTorchやxformersをインストールする。
pip3 install torch==2.7.0 torchvision==0.22.0 torchaudio --index-url https://download.pytorch.org/whl/cu128
最新のPyTorch 2.7.1ではエラーが出るので、CUDA12.8に合わせたPyTorch 2.7.0とtorchversion 0.22.0を指定してインストールするわけだ。
pipバージョンアップ

PyTorchなどインストールを終えると僕の場合は最後にこのように pipを新しくしなさいよ というメッセージが出る。
python.exe -m pip install --upgrade pip
メッセージのとおりのコマンドでpipをバージョンアップしておく。
pip install xformers==0.0.22.post7 --no-deps
kohya_ssを起動する
gui.bat で起動するか、gui.batをダブルクリックしてKohya_ssを起動する。
僕の場合は、依存モジュールファイルがないというエラーが出た。

No module named 'gradio'
gradioがないんだとさ。pipでインストールする。
pip install gradio
このあと、同じようにあれもないこれもないと言われたので、No module named 後ろの点の中身をpipでインストールしていく。
pip install 点の中身名
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
コマンドプロンプトの最後にこのように表示され、この 127.0.0.1:7860 をGoogle ChromeのURL欄に貼り付ければKohya_ssが起動する。
しかし、Stable Diffusionと同じポート(127.0.0.1:7860)を使って起動するため、使い勝手が悪い。
kohya_ssを使おうと思ったらStable Diffusionを閉じなければいけないからだ。
最後に、kohya_ssの起動ポートを変更しておきたい。
kohya_ssの起動ポート変更
kohya_ssが起動済みであればすべて終了しておく。
kohya_ssフォルダ内の gui.bat ファイルをメモ帳などで開いて編集する。

開くとこんな感じのはず。
ここに、起動ポートを指定する記述を追記する。
起動ポートを 7860 から 7865 に変更するなら --server_port 7865 などで指定する。
文章より視覚的に見た方が早いと思うので、

つまり、指定箇所と追記文はこうなる。
IF文のPythonとKohya読み込みの行(kohya_gui.pyの後ろと%*の間)にポート指定を追記する。2ヶ所編集する必要がある。ここは、コマンドなら~ダブルクリックなら~という指定なので。
編集したら保存してOK。
kohya_ssを起動して、コマンドプロンプトの最後が、

このように、127.0.0.1:7865 と起動ポートの変更が反映されていれば成功だ。
Kohya_ssのおすすめ設定(エラー対策含む)
SD1.0などの古いAIモデル(Checkpoint)だとLoRA学習ができるが、SDXLなどの最近のモデルを使うと学習できない現象が起きる。
Kohya_ssの設定を変える必要があるようだ。
LoRA学習するときの [LoRA]タブ→[Training]
・Configuration
・Accelerate launch
・Model
・Folders
・Metadata
・Dataset Preparation
・Parameters
と大きな項目がある。
そのなかのParametersタブ → [Advanced] へ。
Gradient checkpointing にチェックが入っていなければチェックをして有効にする。
その下付近にある CrossAttention が xformers になっているので、sdpa に変更する。
同じParametersタブ → [Basic]タブ → [Optimizer] が AdamW8bit などになっていたら、RAdamschedulefree に変更する。
[LR Scheduler] は constand に、
[Unet learning rate]は 0.0001〜0.01くらい。
[Text Encorder learning rate]を半分(0.5)から5分の1くらいにする。
これで良いLoRAが作れるようだ。
友達に教えてもらった。まじ感謝ッ(๑•̀ㅂ•́)و✧ぐっ♡