微调常见问题

通用问题

可以为新语言做微调吗?

可以。对 VoxCPM 尚未覆盖的语言,建议使用目标语言 500+ 小时数据做全量微调,并混入部分中英数据以减轻遗忘。学习率宜保守(1e-5)。完整流程见 微调指南

训练问题

显存不足(OOM):

  • 降低 batch_sizemax_batch_tokens,以过滤掉过长样本。

  • 增大 grad_accum_steps,在降低单步显存的同时保持等效 batch。

  • 改用 LoRA 微调 — 显存占用约为全量微调的一半。

  • 多卡 DDP 时,梯度桶与 NCCL 缓冲通常每张卡额外需要约 10 GB 显存。

训练损失不收敛:

  • 降低 learning_rate

  • 增大 warmup_steps

  • 检查数据质量 — 噪声音频或转写不匹配是常见原因。

恢复训练后步数显示异常:#187

这是多卡训练的已知问题。请确保使用最新版训练脚本。

输出质量问题

微调后模型忽略输入文本(过拟合):#169

模型过拟合为在无文本条件下复现训练音频。这是最常见的微调失败形态,且可能很早出现(小数据集几百步内即可发生)。

  • 保持 training_cfg_rate=0.1 (不要设为 0)。

  • 保持 weight_decay=0.01

  • 将学习率降至 1e-5 (全量微调)或 1e-4 (LoRA)。

  • 在每个 save_interval 关注 checkpoint。多数单说话人任务 1–3 个 epoch 足够 — 继续训练往往适得其反。

生成停不下来(输出失控):#195#124

  • 检查训练数据中是否存在尾静音过长(>0.5 s)的片段并裁掉 — 这是最常见原因。

  • 推理时启用 retry_badcase=True 作为兜底。

  • 若在做新语言微调,停止损失与扩散损失收敛速度可能不一致 — 可尝试提高停止损失权重(lambdas > loss/stop)。

LoRA 相关问题

LoRA 效果不好:

  • 增大 r (LoRA rank)— 风格或语言适配等更难任务可试 32 或 64。

  • 调节 alpha — 可试 alpha = ralpha = 2*r

  • 确保 enable_dit: true — 对音质至关重要。

  • 若尚未收敛,可适当增加训练步数。

推理时 LoRA 未生效:

  • 确保推理侧 LoRA 配置(ralphaenable_lmenable_dit)与训练时完全一致。

  • 检查 load_lora 的返回值 — skipped_keys 应为空。

  • 若曾关闭 LoRA,请确认已调用 set_lora_enabled(True)

Checkpoint 相关问题

Checkpoint 加载错误:

  • 全量微调: 目录须包含 model.safetensors (或 pytorch_model.bin)、config.jsonaudiovae.pth

  • LoRA: 目录须包含 lora_weights.safetensors (或 lora_weights.ckpt)与 lora_config.json