gikoha’s blog

個人的メモがわり

flux.1 sd-scripts

  • 前提: メインメモリを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
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