llama.cpp b10760发布:修复Qwen3-TTS-0.6B代码预测器在F16下的精度崩溃
新版本将Qwen3-TTS-0.6B的code predictor FFN中间层权重保持在F32,避免激活峰值超过F16上限导致输出变为无穷或NaN,并修正了权重加载逻辑。
AI解读:llama.cpp的这次更新针对Qwen3-TTS-0.6B模型在推理时可能产生错误结果的问题。代码预测器(code predictor)是文本转语音模型中负责生成语音编码的关键部分,它在第二层FFN的中间激活值峰值可达 1.5e5,超出了F16格式能表示的最大值 65504。如果使用F16存储权重,计算时会把这些峰值变成无穷大,接着残差连接和归一化就产生NaN,导致模型输出无效。修复方式是让这些权重保持F32精度,并用float32参考实现验证,数值从 145396 修正到接近参考值 145109。另外,0.6B检查点中没有单独的投影张量,现在加载器会正确跳过这一过程。对使用本地部署TTS的开发者,这个版本能让Qwen3-TTS输出更稳定;普通用户如果只是使用现成API则无需关注,因为修复已包含在最新发布中。
llama.cpp于 2025 年发布b10760版本,修复了Qwen3-TTS-0.6B模型在代码预测器(code predictor)上的两个问题:权重加载逻辑和精度崩溃导致的NaN输出。
修复内容
首次修复:将qwen3-tts代码预测器的proj_in权重设为可选加载。0.6B检查点中,talker与code predictor共享hidden size,因此参考实现不构建small_to_mtp_projection,转换脚本也不会输出该张量。此前图计算已在权重缺失时回退到恒等映射,本次更新让加载器保持一致行为。
第二次修复:将qwen3-tts代码预测器的ffn_down权重保持在F32。该预测器第 2 层FFN的中间激活峰值约为 1.5e5,超过F16格式的 65504 上限。mul_mat操作会将输入转换为权重类型,若ffn_down为F16,峰值会变成无穷大,残差连接后下一个rms_norm层产生NaN。参考实现(float32)测得图输出值为 145109,而修复前的图输出为 145396。