78 lines
3.0 KiB
Bash
78 lines
3.0 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# RunPod Secure Cloud 一键引导:Qwen-Image-Edit-2511 脸部 LoRA 训练
|
||
# 用法:pod 启动后,在 web terminal 里执行:
|
||
# cd /workspace && unzip dataset.zip -d train_dataset && bash bootstrap.sh
|
||
# ============================================================
|
||
set -e
|
||
|
||
echo "===== [1/4] 安装 musubi-tuner ====="
|
||
cd /workspace
|
||
if [ ! -d musubi-tuner ]; then
|
||
git clone --depth 1 https://github.com/kohya-ss/musubi-tuner.git
|
||
fi
|
||
cd musubi-tuner
|
||
pip install -e . --quiet
|
||
pip install --quiet huggingface_hub hf_transfer
|
||
export HF_HUB_ENABLE_HF_TRANSFER=1
|
||
|
||
echo "===== [2/4] 下载模型(Qwen-Image-Edit-2511,机房网速约2-5分钟)====="
|
||
mkdir -p /workspace/models/qwen-edit-2511/{transformer,text_encoder}
|
||
hf download Qwen/Qwen-Image-Edit-2511 \
|
||
--include "transformer/*" \
|
||
--local-dir /workspace/models/qwen-edit-2511
|
||
hf download Qwen/Qwen-Image-Edit-2511 \
|
||
--include "text_encoder/*" \
|
||
--local-dir /workspace/models/qwen-edit-2511
|
||
hf download Qwen/Qwen-Image-Edit-2511 \
|
||
--include "vae/diffusion_pytorch_model.safetensors" \
|
||
--local-dir /workspace/models/qwen-edit-2511
|
||
# VAE 路径兼容(musubi 参数直接指到文件)
|
||
find /workspace/models/qwen-edit-2511 -name "*.safetensors" | head -20
|
||
|
||
echo "===== [3/4] 数据集配置 ====="
|
||
mkdir -p /workspace/train_dataset /workspace/config /workspace/ckpt
|
||
cat > /workspace/config/dataset.toml <<'EOF'
|
||
[general]
|
||
resolution = 1024
|
||
caption_extension = ".txt"
|
||
batch_size = 1
|
||
enable_bucket = true
|
||
bucket_no_upscale = false
|
||
|
||
[[datasets]]
|
||
image_directory = "/workspace/train_dataset"
|
||
num_repeats = 1
|
||
EOF
|
||
cp /workspace/sample_prompts.txt /workspace/config/ 2>/dev/null || true
|
||
|
||
echo "===== [3.5] 续炼 checkpoint 就位 ====="
|
||
# 续炼起点:本地 scp 上传的 myface_lora-000060.safetensors 在 /workspace/
|
||
# (1.1GB,dim32 版本),移到 /workspace/ckpt/ 供 --network_weights 使用
|
||
if [ -f /workspace/myface_lora-000060.safetensors ]; then
|
||
cp /workspace/myface_lora-000060.safetensors /workspace/ckpt/
|
||
echo "checkpoint 就位: $(ls -la /workspace/ckpt/myface_lora-000060.safetensors)"
|
||
else
|
||
echo "WARNING: /workspace/myface_lora-000060.safetensors 不存在!续炼会失败(除非从头训练)"
|
||
fi
|
||
|
||
echo "===== [4/4] 预缓存(VAE latent + TextEncoder)====="
|
||
MODELS=/workspace/models/qwen-edit-2511
|
||
DIT=$MODELS/transformer/$(ls $MODELS/transformer | grep '00001-of' | head -1)
|
||
TE=$MODELS/text_encoder/$(ls $MODELS/text_encoder | grep '00001-of' | head -1)
|
||
VAE=$(find $MODELS/vae -name "*.safetensors" | head -1)
|
||
echo "DIT: $DIT"
|
||
echo "TE: $TE"
|
||
echo "VAE: $VAE"
|
||
|
||
python src/musubi_tuner/qwen_image_cache_latents.py \
|
||
--dataset_config /workspace/config/dataset.toml \
|
||
--vae "$VAE" --device cuda --model_version edit-2511
|
||
|
||
python src/musubi_tuner/qwen_image_cache_text_encoder_outputs.py \
|
||
--dataset_config /workspace/config/dataset.toml \
|
||
--text_encoder "$TE" --fp8_vl --device cuda --model_version edit-2511
|
||
|
||
echo ""
|
||
echo "===== 全部就绪!启动训练执行:bash train.sh ====="
|