見出し画像

Lambda Labsでコピー機LoRAを学習する

もしかしたらSDXLでコピー機LoRA作るのってめちゃくちゃ時間かかるのでは!?という仮説を元にラムダをぶん回してみる。自前の鯖だと部屋が暑い&うるさくてかなわん。

以下自分用の環境セットアップメモ。
自分用環境構築メモなので説明は簡素です。

①ベースモデルをGoogleドライブにアップロードする

今回はsd_xl_base_1.0_0.9vae.safetensors)もGoogleドライブに配置。

https://drive.google.com/file/d/XXXXXXXXXXXXXXXXXXXXXXXXX/view?usp=sharing

という共有リンクなら、『XXXXXXXXXXXXXXXXXXXXXXXXX』という文字列を控えておきます

②インスタンスを立てる

とりあえず1xA10で。安いので。

③必要なライブラリをインストール

Jupyter LabではTerminalを選択。

git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.10
sudo apt-get install -y python3.10-venv
python3.10 -m venv venv
source venv/bin/activate
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
python -m pip install --upgrade pip
rm get-pip.py
deactivate
./setup.sh
sudo apt-get update
sudo apt-get install nano
sudo apt-get install -y libgl1-mesa-dev
sudo apt-get install unzip
sudo apt-get install python3.10-tk
sudo apt-get install -y tk-dev

※unzipは今回(コピー機LoRA作成)の用途だといらないが複数の画像データをまとめたzipを解凍する時に使う(厳格にはコピー機学習法でなくなる)
sudo apt-get install python3.10-tk
sudo apt-get install -y tk-dev
もGUIを使わないからいらんかも(うろ覚え)

④ベースとなるSDモデルをDLする

curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=①で控えておいた文字列" > /dev/null
CODE=$(awk '/_warning_/ {print $NF}' /tmp/cookie)
curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=①で控えておいた文字列" -o sd_xl_base_1.0_0.9vae.safetensors

⑤コピー機LoRA用の元画像をアップする

左側のファイルエディタからフォルダを作成し、手動でファイルをアップロード。
kohya_ss/Line/384/00030-1752019098.png
kohya_ss/Line/384/00030-1752019098.txt
をそれぞれ配置する。

⑥設定ファイルを作る。

nano copi-ki.toml
pretrained_model_name_or_path = "sd_xl_base_1.0_0.9vae.safetensors"
output_dir = "models/Line"
sample_prompts = "prompts.txt"
seed = 42
xformers = true
max_data_loader_n_workers = 4
persistent_data_loader_workers = true
gradient_checkpointing = true
resolution = "1024,1024"
train_batch_size = 12
mixed_precision = "bf16"
save_precision = "bf16"
save_every_n_epochs = 10
sample_every_n_epochs = 10
sample_sampler = "k_euler_a"
optimizer_type = "adamw8bit"
unet_lr = 1e-3
network_train_unet_only = true
network_module = "networks.lora"
network_dim = 32
network_args = ["conv_dim=16"]
cache_latents = true
cache_text_encoder_outputs = true
caption_extension = ".txt"

サンプル出力時のpromptファイルも作る

nano prompts.txt
 , --w 1024 --h 1024 --d 1
 , --w 1024 --h 1024 --d 2

⑦学習を開始

出力先フォルダを作る

mkdir models
mkdir models/Line
source venv/bin/activate
accelerate launch \
  --num_cpu_threads_per_process 1 \
  "./sdxl_train_network.py" \
  --config_file="copi-ki.toml" \
  --train_data_dir="Line" \
  --output_name="sdxl-copi-ki-Line" \
  --max_train_epochs 500

こんだけ回せば少し位は元の絵に近づいてくれる筈・・・!(祈り

結果

しかし・・・

というオチでした。ちゃんちゃん!!!!!!!!

この記事が気に入ったらサポートをしてみませんか?