⁉️FP16 与 BF16 用于 RL

通过 FP16 击败训练-推理不匹配 https://arxiv.org/pdf/2510.26788 显示使用 float16 比 bfloat16 更好

Float16 与 Bfloat16

有一篇论文标题为 "通过 FP16 克服训练-推理不匹配" https://arxiv.org/pdf/2510.26788arrow-up-right 展示了在进行强化学习时使用 float16 精度相比使用 bfloat16 可以显著更好。

实际上,生成长度越长,使用 bfloat16 时情况越糟:

我们进行了调查,且 确实发现 float16 更稳定 比 bfloat16 具有更小得多的梯度范数,见 https://x.com/danielhanchen/status/1985557028295827482arrow-up-right 以及 https://x.com/danielhanchen/status/1985562902531850472arrow-up-right

🤯A100 级联注意力错误

根据 https://x.com/RichardYRLi/status/1984858850143715759arrow-up-right 以及 https://yingru.notion.site/When-Speed-Kills-Stability-Demystifying-RL-Collapse-from-the-Training-Inference-Mismatch-271211a558b7808d8b12d403fd15eddaarrow-up-right,较旧的 vLLM 版本(0.11.0 之前)在 A100 和类似 GPU 上存在损坏的注意力机制。请更新 vLLM!如果我们检测到较旧的 vLLM 版本,在 Unsloth 强化学习期间我们默认也会禁用 vLLM 的级联注意力。

不同硬件也会改变结果,较新且更昂贵的 GPU 在推理端与训练端之间的 KL 差异更小:

🔥在 Unsloth RL 中使用 float16

要在 Unsloth GRPO 和 RL 中使用 float16 精度,你只需设置 dtype = torch.float16 我们会处理剩下的!

最后更新于

这有帮助吗?