人工知能と親しくなるブログ

人工知能に関するトピックを取り上げるブログです

誰でもわかるStable Diffusion LoRAを作ってみよう(導入編)

Stable Diffusionはそのままでも十分きれいな画像を描いてくれますが、自分の好みに合った画風の絵を描いてくれなかったり、特殊な構図を指定しても理解してくれなかったり、いまいちかゆいところに手が届かない、と思うことがあるでしょう。

そんな時、Stable Diffusionに新たな絵柄や構図を教えて、自分の好みに近い絵柄や構図の画像を生成させることができます。

その仕組みが「追加学習」です。

追加学習の方法はいくつかありますが、今回は、現在主流になっている「LoRA」という手法について簡単に解説し、LoRA学習を行うのに必要なプログラムを導入する方法を説明します。

注意:

今回の解説にあるKohya_ssのインストール手順はWindow向けです。Mac/Linuxと共通する部分もありますが、手順はWindowsマシンにインストールすることを想定しています。

 

Loraとは

Loraとは「Low-Rank Adaptation」の略です。

以下がLoRAの仕組みの概要です。

  • 「テキスト処理」の部分だけ追加学習する。
  • 他の学習法と違ってベースモデルにはまったく手を加えずに、その代わり「小さなニューラルネットワーク」をベースモデルに新しく追加する。
  • 「テキスト処理」を行う部分はStable Diffusion内にいくつもあるので、それぞれの部分に「小さなニューラルネットワーク」を追加する。
  • 追加学習はこの複数の「小さなニューラルネットワーク」たちに対して行われる。

 

LoRAは以下のような素晴らしい特徴を持っています。

  • 学習に使う画像の枚数が少なくてもかなり精度よく再現してくれる。
  • 学習時間が他の方法よりも短い。10~20分程度で学習させることも可能。
  • 学習された「小さなニューラルネットワーク」だけ配布できるので、サイズがとても小さい

 

これらの利点があるので、現在は「追加学習」といえばLoRAが主流になっています。

 

Lora学習環境の導入

Kohya氏が公開しているKohya_ssを使うのが簡単だと思いますので、この導入法を解説します*1

Kohya_ssはウェブブラウザからアクセスする追加学習実行環境です。ウェブブラウザで動くといっても実行に必要なファイルはすべて自分のPCの中にあるので、追加学習を行うときにネット環境は不要です。

 

インストール前の準備

Pythonをインストール

まずここからPython(ぱいそん)のインストーラをダウンロードし、インストールしましょう。バージョンは3.10です。

Pythonは「実行環境」です。Kohya_ssやStable Diffusion WebUIは「Pythonコード」で書かれたファイルの集まりです。このままではただのテキストファイルにすぎませんが、Pythonがインストールされていると、これがコードを読み込んでプログラムとして実行してくれます。

 

Kohya-ssのファイルを自分のPCにコピー

Kohya_ssはGithubというサイトでソースコードが公開されていますので、そこにあるソースコードを自分のPCにコピーします。

そのために、ここから「Git」をダウンロードし、インストールしてください。

Gitとは、いわゆる「バージョン管理システム」で、プログラムの開発過程をすべて管理してくれるしくみです。多くのプロジェクトがGitを利用していて、Kohya_ssもGithubというサイトでGit管理されています(Gitは「仕組み」で、Githubは「Gitを導入しているサービスの名前」です)。

 

Gitのインストールが終わったら、Kohya_ssを自分のPCに持ってきます。

 

まず「コマンドプロンプト」を開きます。Windowsの画面の左下にある「ここに入力して検索」と表示されている検索欄に「cmd」と打ち込むと「コマンドプロンプト」がリストに現れるので実行しましょう。

実行したら、プロンプト内で「Kohya_ssのフォルダを置きたい場所」に移動します。

移動には「cd」というコマンドを使います。

Kohya_ssを置く場所はどこでも構いません。例えば「C:\application」というフォルダの中に置きたい場合は以下のようにコマンドをタイプします。

 

cd c:\application

 

すると現在位置が指定されたフォルダに移ります(フォルダ場所はお好みに応じて変えてください)。

次に、Kohya-ssのファイルをサーバから持ってきて、そこに置きます。

Gitには、Github上で公開されているソースコードを自分のPCに丸ごとコピーする機能があります。それが「git clone」というコマンドです。

コマンドプロンプトに以下のように入力しましょう。

 

git clone https://github.com/bmaltais/kohya_ss.git

 

ファイルのダウンロードが始まるはずです。しばらく待ちましょう。

ダウンロードが終わったら、コマンドプロンプトは閉じてかまいません。

 

Kohya_ssのインストール

コマンドプロンプトで指定したフォルダの中を見ると、「kohya_ss」というフォルダができているはずです。

そのフォルダの中の「setup.bat」というファイルをダブルクリックすると、再びコマンドプロンプトが開き、インストールが始まります。

 

インストール中、設定に関していくつか質問されます。以下は質問の内容と、おすすめの回答です。特にこだわりがない場合は以下のように回答してください。

 

1.もしpytorchが既にインストールされているなら、最初に以下のような質問があります。これはインストールされているtorchをアンインストールするかという質問です。

Do you want to uninstall previous versions of torch and associated files before installing? Usefull if you are upgrading from torch 1.12.1 to torch 2.0.0 or if you are downgrading from torch 2.0.0 to torch 1.12.1.

No」を選んでください

 

2.インストールするtorchのバージョンを聞かれます。

Please choose the version of torch you want to install

v1 (torch 1.12.1)」を選んでください

 

ここまで回答すると、必要な外部プログラムをダウンロードし始めます。しばらく待ちましょう。

外部プログラムをインストールし終わると、次の質問が表示されます。

 

3.kohya-ssをどの環境で実行するか聞かれます。

In which compute environment are you running?

This machine」を選んでください

 

4.実行するマシンのタイプを聞かれます。

Which type of machine are you using?

No distributed training」を選んでください

 

5.GPUを使わず、CPUのみで実行するかどうか聞かれます。

Do you want to run your training on CPU only (even if a GPU is available)?

no」とタイプして決定キーを押してください

 

6.torch dynamoを使って実行高速化のための最適化を行うか聞かれます。

Do you wish to optimize your script with torch dynamo?

no」とタイプして決定キーを押してください

 

7.実行高速化のためDeepSpeedを使いたいか聞かれます。

Do you want to use DeepSpeed?

no」とタイプして決定キーを押してください

 

8.マシン上のどのGPUを使うか指定するよう求められます。

What GPU(s) (by id) should be used for training on this machine as a comma-seperated list?

all」または「0」とタイプして決定キーを押してください。ほとんどの場合「all」で問題ないでしょう。

※「all」を選んでインストールをした場合、GPUがうまく認識されずにエラーになる事があります。その時は、もしGPUNVIDIA製なら、「コマンドプロンプト」を新たに開き「nvidia-smi」というコマンドを打ってGPUのIDを確認してください。多くの場合「0」だと思いますが、そうでない可能性もあります。確認後、再び「setup.bat」ファイルをダブルクリックし、インストール作業をやり直します。この選択肢まできたら、先ほど調べたGPUのIDをタイプします。

 

9.処理データタイプをfp16にするかbf16にするか聞かれます。

Do you wish to use FP16 or BF16 (mixed precision)?
Please select a choice using the arrow or number keys, and selecting with enter

fp16」を選んでください

 

ここまで来たら、インストールは完了です。

コマンドプロンプトを閉じてください(または、勝手に閉じます)。

 

Kohya_ssを立ち上げてみよう

再びkohya_ssフォルダ内を見ると「gui-user.bat」というファイルがあるはずです。

これをダブルクリックすればコマンドプロンプトが開き、しばらくすると以下のように表示されます。

 

Kohya_ssが立ち上がりました

ここに表示されるURL(環境によって変わります。上の例の場合は「http://127.0.0.1:7860」です)をウェブブラウザのURL欄に入力すると、kohya_ssの画面がブラウザ上に表示されます。

 

Kohya_ssをブラウザ上で実行したところ

 

まとめ

今回はStable Diffusionの追加学習の主流であるLoRAについて紹介しました。

また、LoRA学習環境として人気の高いKohya_ssの導入について解説しました。

LoRA学習法の詳細はまた別の記事で解説するつもりです。

*1:Kohya_ssはLoRA学習専門というわけではなく、ほかの追加学習手法にも対応しています