
Lambda LabsでControlNet-LLLiteを学習する
タイトル通りです。自分用環境構築メモなので説明は簡素です。
①データセットとベースモデルをGoogleドライブにアップロードする
学習用データセットをzipにまとめ、Googleドライブに配置し、共有リンクにします。

https://drive.google.com/file/d/XXXXXXXXXXXXXXXXXXXXXXXXX/view?usp=sharing
という共有リンクなら、『XXXXXXXXXXXXXXXXXXXXXXXXX』という文字列を控えておきます
同じ流れでベースとなるモデル(今回はsd_xl_base_1.0_0.9vae.safetensors)もGoogleドライブに配置しましょう。
②インスタンスを立てる
とりあえず1xA10で。安いので。


③必要なライブラリをインストール
Jupyter LabではTerminalを選択。

CUDAはあらかじめインストールされている。
git clone -b sdxl https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
pip install -U xformers
pip install --upgrade -r requirements.txt
pip install bitsandbytes==0.41.1
pip install scipy
sudo apt-get update
sudo apt-get install nano
sudo apt-get install -y libgl1-mesa-dev
sudo apt-get install unzip
accelerate config
- This machine
- No distributed training
- NO
- NO
- NO
- all
- bf16
④ベースとなる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
⑤データセットを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 lllite_normalmap.zip
unzip lllite_normalmap.zip
rm lllite_normalmap.zip
⑥設定ファイルを作成する。
nano normalmap_dataset.toml
[general]
flip_aug = false
color_aug = false
resolution = [1024,1024]
[[datasets]]
batch_size = 16
enable_bucket = false
[[datasets.subsets]]
image_dir = "lllite_normalmap/Normal"
caption_extension = ".txt"
conditioning_data_dir = "lllite_normalmap/Line"
nano normalmap_config.toml
pretrained_model_name_or_path = "sd_xl_base_1.0_0.9vae.safetensors"
max_train_epochs = 70
max_data_loader_n_workers = 4
persistent_data_loader_workers = true
seed = 42
gradient_checkpointing = true
mixed_precision = "bf16"
save_precision = "bf16"
full_bf16 = false
optimizer_type = "adamw8bit"
learning_rate = 2e-4
xformers = true
output_dir = "models"
output_name = "normalmap"
save_every_n_epochs = 5
save_state = true
save_model_as = "safetensors"
vae_batch_size = 4
cache_latents = true
cache_latents_to_disk = true
cache_text_encoder_outputs = true
cache_text_encoder_outputs_to_disk = true
network_dim = 64
cond_emb_dim = 32
dataset_config = "normalmap_dataset.toml"
出力先フォルダを作る
mkdir models
⑦学習を実行
accelerate launch --num_cpu_threads_per_process 1 sdxl_train_control_net_lllite.py --config_file normalmap_config.toml
6時間位待つ!!!!!!!!
ちなみに今回はnormalmapと線画を紐づけて覚えるかの実験です。うまくいくかは予定は未定。


SDXLだけではノーマルマップ概念を覚えないので、事前にノーマルマップLoRAを作ってあります。