You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DreamBooth训练SD 1.5时必填参数缺失报错求助

DreamBooth训练SD 1.5提示必填参数缺失的排查与解决

错误信息

运行训练脚本时出现以下报错:

train_dreambooth.py: error: the following arguments are required: --pretrained_model_name_or_path, --instance_data_dir, --instance_prompt
Traceback (most recent call last):
File "/home/myuser/miniconda3/envs/dbooth/bin/accelerate", line 10, in <module>
sys.exit(main())
File "/home/myuser/miniconda3/envs/dbooth/lib/python3.7/site-packages/accelerate/commands/accelerate_cli.py", line 45, in main
args.func(args)
File "/home/myuser/miniconda3/envs/dbooth/lib/python3.7/site-packages/accelerate/commands/launch.py", line 1104, in launch_command
simple_launcher(args)
File "/home/myuser/miniconda3/envs/dbooth/lib/python3.7/site-packages/accelerate/commands/launch.py", line 567, in simple_launcher
raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['/home/myuser/miniconda3/envs/dbooth/bin/python3.7', 'train_dreambooth.py']' returned non-zero exit status 2.

用户训练脚本

#!/bin/bash
export MODEL_NAME="v1-5-pruned.ckpt"
export INSTANCE_DIR="retocadas"
export CLASS_DIR="person_ddim"
export OUTPUT_DIR="salida"

accelerate launch train_dreambooth.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--instance_data_dir=$INSTANCE_DIR \
--class_data_dir=$CLASS_DIR \
--output_dir=$OUTPUT_DIR \
--with_prior_preservation --prior_loss_weight=1.0 \
--instance_prompt="AnUniqueExample" \
--class_prompt="person" \
--resolution=512 \
--train_batch_size=1 \
--gradient_accumulation_steps=2 --gradient_checkpointing \
--use_8bit_adam \
--learning_rate=5e-6 \
--lr_scheduler="constant" \
--lr_warmup_steps=0 \
--num_class_images=200 \
--max_train_steps=800

排查与解决步骤

1. 检查脚本续行符(反斜杠)

这是最常见的原因:bash脚本中,用于续行的\必须是该行的最后一个字符,后面不能有任何空格、制表符或其他字符。如果反斜杠后有额外字符,bash会将其视为普通字符,导致后续行的参数无法传递给train_dreambooth.py,从而引发必填参数缺失的错误。

解决:逐行检查脚本中每一个\的位置,确保它后面直接换行,没有任何多余字符。

2. 确保工作目录正确

即使文件和脚本在同一目录,如果执行脚本时当前工作目录不是脚本所在目录,相对路径会失效,导致参数无法被正确识别。

解决:在脚本开头添加切换目录的命令,确保脚本执行时自动切换到自身所在目录:

#!/bin/bash
# 切换到脚本所在目录
cd "$(dirname "$0")"

export MODEL_NAME="v1-5-pruned.ckpt"
# ... 其余脚本内容不变

3. 用双引号包裹参数

虽然当前变量没有空格,但为了避免路径或参数中出现特殊字符时导致的展开错误,建议给所有变量参数加上双引号:

accelerate launch train_dreambooth.py \
--pretrained_model_name_or_path="$MODEL_NAME" \
--instance_data_dir="$INSTANCE_DIR" \
--class_data_dir="$CLASS_DIR" \
--output_dir="$OUTPUT_DIR" \
--with_prior_preservation --prior_loss_weight=1.0 \
--instance_prompt="AnUniqueExample" \
# ... 其余参数同理

4. 调试变量展开

可以在accelerate launch命令前添加调试输出,确认环境变量是否正确展开:

echo "MODEL_NAME: $MODEL_NAME"
echo "INSTANCE_DIR: $INSTANCE_DIR"
echo "INSTANCE_PROMPT: $INSTANCE_PROMPT"

accelerate launch train_dreambooth.py \
# ... 其余参数

执行脚本后查看输出,确认变量值是否和预期一致。

5. 指定train_dreambooth.py的绝对路径

如果脚本执行时找不到train_dreambooth.py,会默认执行空参数的命令,引发错误。可以直接指定该文件的绝对路径或相对路径:

accelerate launch ./train_dreambooth.py \
# ... 其余参数

内容的提问来源于stack exchange,提问作者mcventur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:25:26