迷失在 bf16 转换中:导出三值语言模型可能会撤销大多数低学习率代码变更
Lost in the bf16 Cast: Exporting Ternary Language Models Can Revert Most Low-Learning-Rate Code Changes
精选理由
揭示bf16导出会改写三值代码,并提供修复方案,避免微调性能崩溃。
AI 摘要
arXiv:2610.07853v1 公告类型:new 摘要:BitNet b1.58、Falcon-E 和 BitCPM 等三值语言模型使用更高精度的潜在权重进行微调,并通过导出步骤生成三值代码后部署;在各实验室公开记录的流程中,该步骤首先会将潜在权重转换为 bf16。我们对三个实验室的这些流程进行了审计。在已发布的检查点中,对所发布潜在权重进行 fp32 量化所得的结果,与实际部署代码之间存在不一致:Falcon-E 和 BitCPM 中有 0.83–1.77% 的代码不一致,BitNet 2B-4T 中则有 1.530% 不一致;对于 Falcon-E 和 BitCPM,大多数不一致源于 bf16 舍入后恰好落在阈值上的数值,而 ties-to-even 会将其映射为零;未经修改的 onebitllms 导出器能够逐字节复现 Falcon-E 的全部四个版本。在微调终点处,当学习率经过选择以匹配名义上的学习率与 bf16-ULP 比值时,文档所述的导出流程会将 Falcon-E-1B-Base 的贪心 GSM8K 严格准确率从 58.79% 降至 0.78%,将 BitCPM-CANN-0.5B 的准确率从 36.13% 降至 0.39%;此外,保存并重新加载 bf16 会使 BitNet 2B-4T 的严格准确率下降 27.54 个百分点,同时其末位数字准确率上升。两种兼容性补救方案——直接写入训练量化器生成的代码,或调整 bf16 输入,使未修改的工具生成这些代码——在三个模型中均满足相对于在线评估的 4 个百分点严格准确率非劣效标准。在两个模型系列中,针对初始阈值距离进行的随机干预表明,微调所改变代码的选择具有距离依赖性。