记录一下那天晚上的排查过程。启动训练脚本时报 OSError,提示找不到指定的底模文件,路径里明明有中文目录。
刚开始盯着「配置文件里的路径与命令行参数冲突」,折腾了半个多小时,排掉了。
原因不止一个,得分开看。路径含中文或空格,命令行解析失败。也可能是用了相对路径,工作目录不是脚本所在目录。
另外,模型是分片格式,需要先合并成单文件。
动手时先确认文件存在并打印绝对路径
python -c "import os;print(os.path.abspath('sd_xl_base_1.0.safetensors'))"
再往下改用英文目录并传绝对路径
accelerate launch sdxl_train_network.py --pretrained_model_name_or_path=D:/models/sd_xl_base_1.0.safetensors
接着分片模型先合并成单文件
python -c "print('merge shards first')"
等前面都确认过,再确认配置文件里的路径字段
python -c "print(open('config.toml', encoding='utf-8').read()[:200])"
改完先别撤,确认这几项。训练正常启动并加载权重,日志里打印出模型参数量,loss 开始输出。
Windows 下中文路径是这类工具的高频故障点,把模型统一放在英文目录能省掉大量莫名报错。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。