- 前提: メインメモリを64GB以上に造設
- VRAMも16GB以上ほしい
使用マシン:Corei5 64GB RX7800XT 16GB Ubuntu22.04
まず Flux.1 学習のために kohya sd-scriptsをインストール
# sd-scripts の sd3ブランチを clone git clone -b sd3 https://github.com/kohya-ss/sd-scripts/ cd sd-scripts
このブランチではpytorch>=2.4.0 らしいので、g-pc.info様のプリコンパイルされた pytorch/torchvision/bitsandbytesが使えない
venvの作成とアクティベーション
python3 -m venv venv source venv/bin/activate
- rocm6.1公式バージョンのpytorchインストール
pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm6.1 export HSA_OVERRIDE_GFX_VERSION=11.0.0
- pipのアップグレード
python3 -m pip install --upgrade pip wheel
- req のインストール
- 必要ならdadaptationもインストールしておく
pip install -r requirements.txt pip install dadaptation
- rocm用のbitsandbytesをソースからインストールする
- ただし bitsandbytes is fully supported from ROCm 6.1 onwards (currently in alpha release). アルファリリース
# bitsandbytes を https://huggingface.co/docs/bitsandbytes/main/en/installation#amd-gpu を参考に入れ替える # AMD GPU以下を見ること # 下記のgfx1100;1101の部分は自分のGPUに合わせて書き換えてください pip uninstall bitsandbytes git clone --depth 1 -b multi-backend-refactor https://github.com/TimDettmers/bitsandbytes.git && cd bitsandbytes/ pip install -r requirements-dev.txt apt-get install -y build-essential cmake # install build tools dependencies, unless present cmake -DCOMPUTE_BACKEND=hip -DBNB_ROCM_ARCH="gfx1100;gfx1101" -S . make pip install -e . # `-e` for "editable" install, when developing BNB (otherwise leave that out)
- accelerate config
accelerate config ... bf16選ぶ
- 実際にちょっとLORA効果があったかな、、ってサンプル
- Lion optimizerを使ってみて epoch 50まで回している
#!/bin/bash # よりよい設定がわかったら教えてほしい # dataset.tomlは # [general] # caption_extension = ".txt" # enable_bucket = true # [[datasets]] # batch_size = 1 # resolution = 768 #1024だとOutOfMemory # [[datasets.subsets]] # image_dir = "/hogehoge/2_sls_hogehoge" # num_repeats = 2 # となっている accelerate launch --mixed_precision bf16 \ --num_cpu_threads_per_process 2 \ flux_train_network.py \ --enable_bucket \ --max_bucket_reso 2048 \ --min_bucket_reso 512 \ --mixed_precision bf16 \ --pretrained_model_name_or_path ${sdmodel}/Stable-diffusion/flux1-dev.safetensors \ --clip_l ${sdmodel}/VAE/clip_l.safetensors \ --t5xxl ${sdmodel}/VAE/t5xxl_fp16.safetensors \ --ae ${sdmodel}/VAE/ae.safetensors \ --cache_latents \ --cache_latents_to_disk \ --save_model_as safetensors \ --sdpa \ --optimizer_type "Lion" \ --optimizer_args "weight_decay=0.01" \ --learning_rate 0.00015 \ --persistent_data_loader_workers \ --max_data_loader_n_workers 1 \ --seed 42 \ --gradient_checkpointing \ --noise_offset=0.0 \ --save_precision fp16 \ --network_module networks.lora_flux \ --network_dim 8 \ --network_alpha 8 \ --logging_dir ${traindir}/log \ --bucket_reso_steps=64 \ --network_train_unet_only \ --cache_text_encoder_outputs \ --cache_text_encoder_outputs_to_disk \ --fp8_base \ --max_train_epochs 50 \ --save_every_n_epochs 10 \ --dataset_config ${traindir}/dataset.toml \ --output_dir ${traindir}/outputFlux/ \ --output_name goro_FluxDev \ --guidance_scale 1.0 \ --loss_type l2 \ --timestep_sampling sigmoid \ --model_prediction_type raw \ --lr_scheduler cosine_with_restarts \ --lr_scheduler_num_cycles 1 \ --lr_scheduler_power 1