今話題のkohya版LoRAの記事です。
少し前までキャラ学習ではDreamBoothを使うことが多かったですが、手軽に出来て配布にも向いているということで、最近ではkohya版のLoRAを用いることが多いようです。
LoRAは低VRAMでも出来るためローカルで行う人が多いようですが、中にはゲームをやりながら学習を進めたいという方もいるでしょう。というか私がそのタイプです。
なので今回はkohya版LoRAをpaperspaceで動かす方法を書いていきます。
この記事に来ている方のほとんどはpaperspaceは登録済みだと思いますが、登録していない方は以下のURLからpaperspaceのページに飛べるので登録してください。
paperspace
また、paperspaceでAUTOMATIC1111版web-uiを導入する方法は以下の記事で解説しています。
【Novel AI】stable diffusionの追加学習をpaperspaceで月額たった8ドルで行う為のweb-ui導入方法【DreamBooth】
ローカルで学習する為のPCは以下の記事を参考にしてください。
SDXL 1.0も動かせる!AIイラストの生成・学習におすすめのPCを紹介【Stable Diffusion】
それではpaperspaceで環境を構築していきましょう。
kohya版LoRAの環境をpaperspaceに構築する
使用リポジトリと参考ページ
今回使用するリポジトリはこの2つです。
https://github.com/kohya-ss/sd-scripts
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts
また、環境構築の為に参考にしたページは以下になります。
LoRA導入参考(Twitter)
基本的にこの方が公開しているコードをコピペで良いのですが、paperspaceを初めて触る人や、触り始めて間もない方だと少し躓くポイントがあったため、この記事はその補足のようなものと考えてください。
プロジェクトの作成
まずはCREATE A PROJECTでプロジェクトを作成します。プロジェクト名は自由に決めてください。
プロジェクトを作成したらNotebooksを作成します。
次はNotebooksの設定です。
Select a runtimeは赤丸で囲ったStart from Scratchを選択します。
その下にあるSelect a machineは使用したいGPUを選択します。8ドルプランならVRAMが16GBあるA4000かRTX5000を選択しとけばOKです。P5000でもいけるかもしれませんが、前にP5000でDreamBoothしたら学習速度がものすごく遅かったので満足に学習できるかは分かりません。
Auto-shutdown timeoutは自動でランタイムが切断される時間です。どれでも良いですが、大は小を兼ねるとも言いますし6時間を選択しておきましょう。
スポンサーリンク
初回起動
それでは、初回起動で必要なデータを取得していきます。
前項の手順が終わった状態だと以下のような画面になっていると思います。
以下の画像のように、左側のアイコン一覧から赤枠で囲ったTerminalsをクリックし、青枠で囲った”+”ボタンをクリックします。
すると、以下のようにターミナルが追加され、赤枠で囲ったコンソールが開きます。(呼び方がコンソールで合ってるか分かりませんが、ここではコンソールと呼びます)
web-uiの導入ではJupyterLabを開きましたが、kohya版LoRAの導入はこのターミナルから実行していきます。たぶんここが一番の躓きポイントです。JupyterLabからノートブックを作ってやってみましたが、「accelerate config」で先に進むことが出来ませんでした。
あとは参考にしたTwitterで公開されているコードをコピペするだけですが、一応こちらにもコードを載せておきます。また最初のmkdirコマンドは参考Twitterでは”mk”と”dir”の間にスペースが空いていますが、そのままだとエラーが出るのでスペースを空けずに“mkdir”としてください。
もう1つ、最後辺りに”lora_train_command_line.py”というファイルをsd-scriptsフォルダへコピーするコード“LoRA_Easy_Training_Scripts\lora_train_command_line.py sd-scripts”ですが、こちらも参考Twitterのままコピペするとエラーが出るので以下のコードでは修正してあります。
mkdir LoRA
cd LoRA
apt update -y
apt upgrade -y
git clone https://github.com/kohya-ss/sd-scripts.git
git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git
cd sd-scripts
apt -y install python3.10
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -U -r requirements.txt
pip install -U --pre triton
pip install -U -I --no-deps (xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl)
cd ..
accelerate config
cp LoRA_Easy_Training_Scripts/lora_train_command_line.py sd-scripts
cd sd-scripts
mkdir LoRA
cd LoRA
apt update -y
apt upgrade -y
git clone https://github.com/kohya-ss/sd-scripts.git
git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git
cd sd-scripts
apt -y install python3.10
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -U -r requirements.txt
pip install -U --pre triton
pip install -U -I --no-deps (xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl)
cd ..
accelerate config
cp LoRA_Easy_Training_Scripts/ArgsList.py sd-scripts
cd sd-scripts
コメントにて、初回のコードが執筆時より変更があったと指摘を頂いたので追記。
コメントありがとうございました。
上記のコードを以下のようにターミナルに打ち込んでいきます。
ちなみに、mkdirコマンドはフォルダ作成用のコマンドで、この場合は「LoRA」というフォルダを作成しています。フォルダ名を変えたい場合はLoRAの部分を編集してください。
また、次のコードの入力タイミングですが、コンソールに「root@~~~~~」と表示されていると思います。表示されている文の一番下にそれがあるときに入力してください。
それでは、あとは上記のコードをコピペしていくだけです。ここで注意点が2つあります。まず1つ目が一気にコピペではなく、1文ずつコピペしてくさださい。表示している端末によってはpipコマンドの一部が改行されていると思いますが、次のpipコマンドの前までが1文となります。
例 : pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 –extra-index-url https://download.pytorch.org/whl/cu116 ここまでが1文。
2つ目は“pip install -U -I –no-deps (xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl)”のコード実行時、エラーが出てインストールできない可能性があります。私の環境ではインストール出来ませんでした。ですがそれでも動いたのでエラー出ても無視して進めてください。
時間がかかる部分もありますが、「root@~~~~~~」が表示されるまでは次のコードは入力しないようにしてください。
“accelerate config”で聞かれる問いに対してはkohyaさんのREADMEを参考にしてください。
これで環境構築は終了です。あとは必要素材を用意して“accelerate launch”とオプションを付けて実行すれば学習が始まります。
参考Twitterでは実行時のコードは以下のようになっています。
accelerate launch --num_cpu_threads_per_process 12 train_network.py --pretrained_model_name_or_path=/notebooks/stable-diffusion-webui/models/Stable-diffusion/Evt_M.ckpt --train_data_dir=/notebooks/LoRA/Training --reg_data_dir=/notebooks/LoRA/reg --output_dir=/notebooks/LoRA/testLoRA --resolution=320,960 --train_batch_size=4 --learning_rate=8e-5 --max_train_epochs=10 --save_every_n_epochs=1 --save_model_as=safetensors --clip_skip=2 --seed=42 --color_aug --network_module=networks.lora --keep_tokens=7 --enable_bucket
絶対に変更しなければならない部分は“–pretrained_model_name_or_path=”と “–train_data_dir=” と “–reg_data_dir=”と “–output_dir=” の4つです。
“–pretrained_model_name_or_path=”は使用するモデル名です。モデルファイルまでのパスを拡張子を含めて記入してください。
“–train_data_dir=” は学習用素材のフォルダを指定します。
“–reg_data_dir=” は正則化画像のフォルダを指定します。
“–output_dir=” は学習結果を保存するフォルダを指定します。
あとは必要に応じて変更してください。
学習用素材用フォルダの命名規則などは、作者であるkohyaさんのnoteを参考にしてください。
DiffusersベースのDreamBoothについて
これで初回起動時の説明は終わりです。
次の項では、2回目以降の起動について説明します。
スポンサーリンク
2回目以降の起動
2回目以降の起動でも、一部のデータは取得しなければなりません。
以下が必要なコードになるので、初回起動時と同じようにコピペしてください。
cd LoRA
apt update -y
apt upgrade -y
cd sd-scripts
apt -y install python3.10
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -U -r requirements.txt
pip install -U --pre triton
pip install -U -I --no-deps (xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl)
cd ..
accelerate config
cd sd-scripts
私は上記のコード全てを実行して起動していますが、もしかするといらないコードもあるかもしれません。
あとは“accelerate launch”で学習開始するだけです。
最後に
いかがでしたか?
今回はpaperspaceでkohya版LoRAを動かす方法を記事にしてみました。
と言ってもほとんどコピペしたコードをコピペしろって内容でしたけどね。
それでは!
コメント
すごく勉強させていだたいてます!一ヶ月ほど前にStable DIffusionを始めたものです。Paperspaeceで主に動かせていただき、とても参考にさせていただいてます。今回特定キャラの学習のためLoraにたどりつき、こちらのサイトでインストールまでさせていただきました!大変ありがとうございます。
ただそれに際して、
> これで環境構築は終了です。あとは必要素材を用意して“accelerate launch”とオプションを付けて実行すれば学習が始まります。
ここ以降が理解できず…。
学習画像は理解できるのですが、
・「正則化画像」という言葉の意味が分からない
・フォルダ構造をどうやってpaperspaceで作っていくのか分からない(普通にコンソールで同じ構造でフォルダを作ればいいんでしょうか?)
という点でつまずいております。
何にせよこれからも楽しみにしております!読んでくださってありがとうございました。
フォルダはmkdirコマンドで作成、または左側のファイル一覧の上の方に プラスマークが描かれたフォルダアイコンがあるので、そこから作成のどちらでも大丈夫です。
フォルダ構造については、–train_data_dir= で学習用のフォルダを指定するので、どこでも大丈夫です。
私の場合は “/notebooks/LoRA/sd-scripts/learningimage/学習データを入れるフォルダ” という風にしています。
正則化画像は、同じカテゴリで学習データとは違う画像の事。例えばAという女性キャラを学習させる場合、A以外の女性キャラの画像を用意する。
という理解でいます。
ただ、正則化画像については透明画像を使うと良い、という情報もあったりするのでハッキリとした正解がないのが現状です。また正則化画像は使わなくても学習することが出来るので、
3種類とも試して結果が良かったのを残すのも手かと思います。
大変ご親切にありがとうございます…!試してみます!
mkdirコマンド、というレベルからはじめて聞いたレベルで、教えていただき大感謝です。
正則化画像、たしかに他で透明とお聞きしたことがあります、なるほど、詳しい方でも理解が異なってくるものなのでしょうか。そして使わなくても良いのですね…! ちょっと三種試してみます。
ちなみに
“–output_dir=” は学習結果を保存するフォルダを指定します。
その結果、こちらに出てくるファイルを保存しておき、今後使用して(モデルとは別の調味料のように?)、そのキャラを生成すればいい、ということになりますでしょうか…。
何にせよ本当にありがとうございました。
そういうことです。
.safetensorsというファイルが学習結果用のファイルなので、それを使えばキャラ再現などが可能です。
ご丁寧に本当にありがとうございました!
これからも勉強させてください。大感謝です!
解説すごく分かりやすいです、ありがたいです。
質問なのですが、WebUI(Automatic1111)をインストール済みのプロジェクトに、この手順でkohya版LoRAを導入しても大丈夫でしょうか?
私はプロジェクトを分けていますが、恐らくNotebooksを複数用意しても大丈夫だとは思います。
念のため、1度テスト用のプロジェクトを作り、そこで動作確認をしてから本番用のプロジェクトで行うことをおすすめします。
素早いご対応ありがとうございます。
無事、同じプロジェクト内で展開・実行できました!
一点、初回入力コードの
“cp LoRA_Easy_Training_Scripts/lora_train_command_line.py sd-scripts”
でエラーが出たため調べると、今は
“cp LoRA_Easy_Training_Scripts/ArgsList.py sd-scripts”
で通るようです。
何にせよ、勉強になりました。ありがとうございます!
はじめまして!とんでもないど素人なのですが、教えて頂けませんでしょうか…?
初回起動時のcp LoRA_Easy_Training_Scripts/ArgsList.py sd-scriptsが通せません…
上記5月に対応いただいてる方が仰っているcp LoRA_Easy_Training_Scripts/ArgsList.py sd-scriptsでも通せず、どうすればよいか分かれば教えて頂けませんでしょうか…?
何卒よろしくお願いします><
私も最近はLoRAは触っていないので合っているか分かりませんが、ファイル名やフォルダ名が変わっているかもしれません。
もしかすると、最新バージョンでは”ArgsList.py”ファイル自体がなくなっているかもしれないので、不都合がないようなら過去のバージョンを試してみてください。
丁寧なご返信ありがとうございます!あのあと別の名前のタグ使ったら進めたようだったのですが、結局最後のaccelerate launchの学習開始を押すとエラーで止まってしまいました…悔しい…。上から順にコピペで進んだのですが、[‘/usr/bin/python3.9’…といった表示が出て…初めからやり直してもダメでした。3.10にアップデート?出来てないということでしょうか…?度々すみませんが原因分かりますでしょうか…?
もしかすると、”pip”を”pip3″に置き換えて実行すると出来るかもしれません。
xformersインストール出来ました。
–xformesのコマンドを入れても”xformersは入ってません”みたいな表示は出ず、有効化出来て学習はできます。
pip install -U -I –no-deps (xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl)
↓
pip install xformers==0.0.14 -U (0.0.18とかでも可)
のように変えるとxformersインストールできます
ProプランでA4000とRTX5000使っていまして、知り得る限りのxformers以外の省メモリ化のコマンド加えても768,768の学習がVRAM不足になって出来ませんでした(学習始めたら”すでに16GB中14GBくらい使ってて、VRAM足りません”みたいな表示が出ます)。
上記の方法でxformers有効化したらVRAM不足は突破出来て、学習自体は出来るようになりました
ただ手持ちの3060tiよりも学習速度がはるかに遅くて、768,768でより早くLora作成するという目的はかないませんでした…
512,512であればxformers使わずとも3060tiよりも速く学習できるのですが…
学習開始のコマンドを実行すると、なぜそんなにVRAMを学習開始前から使っていることになってるのかも調べたいところです。