微调常见问题¶
通用问题¶
可以为新语言做微调吗?
可以。对 VoxCPM 尚未覆盖的语言,建议使用目标语言 500+ 小时数据做全量微调,并混入部分中英数据以减轻遗忘。学习率宜保守(1e-5)。完整流程见 微调指南。
训练问题¶
显存不足(OOM):
降低
batch_size或max_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 足够 — 继续训练往往适得其反。
检查训练数据中是否存在尾静音过长(>0.5 s)的片段并裁掉 — 这是最常见原因。
推理时启用
retry_badcase=True作为兜底。若在做新语言微调,停止损失与扩散损失收敛速度可能不一致 — 可尝试提高停止损失权重(
lambdas > loss/stop)。
LoRA 相关问题¶
LoRA 效果不好:
增大
r(LoRA rank)— 风格或语言适配等更难任务可试 32 或 64。调节
alpha— 可试alpha = r或alpha = 2*r。确保
enable_dit: true— 对音质至关重要。若尚未收敛,可适当增加训练步数。
推理时 LoRA 未生效:
确保推理侧 LoRA 配置(
r、alpha、enable_lm、enable_dit)与训练时完全一致。检查
load_lora的返回值 —skipped_keys应为空。若曾关闭 LoRA,请确认已调用
set_lora_enabled(True)。
Checkpoint 相关问题¶
Checkpoint 加载错误:
全量微调: 目录须包含
model.safetensors(或pytorch_model.bin)、config.json与audiovae.pth。LoRA: 目录须包含
lora_weights.safetensors(或lora_weights.ckpt)与lora_config.json。