Chapter 11

常见错误

📌 commit 964f70econfig / 训练 / 转换 / 推理四类

XTuner 错误大多在 MMEngine config 语法、数据格式、转换工具上。本章按高频列。

11.1config 类

现象处理
"KeyError: 'type'"dict 没写 type;或导入路径错
"cannot find module xxx in Registry"没注册或拼写错;用 xtuner list-cfg 对照
config 改了不生效跑的是内置 config,改不影响;用 copy-cfg 复制到本地
chat_template 拼错xtuner/utils/templates.py 的 PROMPT_TEMPLATE 全清单

11.2训练类

现象处理
OOM 第 0 step开 gradient_checkpointing;改 QLoRA;增 accumulative_counts
FlashAttention 报错装 flash-attn;或 use_varlen_attn=False
loss 不降chat template 错;用 EvaluateChatHook 看实际输出
NaNQLoRA 必须用 fp16 compute_dtype;全参试 bf16
多卡只用 1 张没设 NPROC_PER_NODE
DeepSpeed 启动失败pip install xtuner[deepspeed];ds_report 检查

11.3转换类

现象处理
pth_to_hf 报 shape mismatchconfig 路径和 pth 不匹配;用对应 config
merge 后效果差QLoRA base 自动 dequant,但跟 fp16 推理会有微小差;可接受
HF 加载报 missing adapter_configpth_to_hf 输出 dir 完整;检查 adapter_config.json
InternVL convert 报 weights 不全InternVL 有自己 convert 子命令;不要用通用 pth_to_hf

11.4推理 / 部署类

现象处理
chat 输出乱码prompt_template 不对;用对应模型的 template
chat 加 adapter 慢正常,每次都按 LoRA + base 算;用 merge 后版本
vLLM / LMDeploy 加载 merge 后 模型失败tokenizer 一起保;检查 chat_template
VL 推理无图输出检查 image_token_index 和占位符

11.5多卡 / 多机

现象处理
NCCL hang查 NCCL_SOCKET_IFNAME;多机要 IB
HF cache 多机冲突每节点单独 cache;或共用 NFS
ZeRO-3 + LoRA 训不动升 peft >= 0.11、transformers >= 4.45
sequence parallel 没生效命令行 --seq-parallel-size N + config 里 SequenceParallelSampler

11.6调试技巧

# 1) 小模型先跑通
pretrained_model_name_or_path = "internlm/internlm2-chat-1_8b"

# 2) 短跑
max_epochs = 1
save_steps = 50

# 3) verbose
export MMENGINE_LOG_LEVEL=DEBUG

# 4) 用 EvaluateChatHook 实时看输出
custom_hooks = [
    dict(type=EvaluateChatHook,
         tokenizer=tokenizer,
         every_n_iters=50,
         evaluation_inputs=["你好", "请介绍 Python"]),
]

11.7这章你需要带走的