写点什么

MindIE 推理采样后处理参数 temperature 和 top_k 的引发的精度问题

作者:zjun
  • 2025-01-20
    上海
  • 本文字数:552 字

    阅读完需:约 2 分钟

MindIE推理采样后处理参数temperature和top_k的引发的精度问题

背景

MindIE 跑 Qwen 系列模型推理,测试发现后处理参数 top_k 很大,temperature=2 的场景,模型输出有精度问题。

现象

经过进一步复现和测试,发现如下现象。


在 Ascend 的 npu 上面 temperature=2 和 top_k 很大时有精度问题。



在 gpu 也有同样问题


原因分析

MindIE 的后处理

后处理参数的顺序 temperature > top_k > softmax > top_p,查看代码可知 temperature 的使用方式是 logits/temperature ,即 temperature 越大,各个 logits 之间的差就越小,在 softmax 阶段,根据 softmax 的原理,值差距越小,token 概率就越接近(意味着很难选到正确的 token,极端情况有精度问题)。

过程分析

后处理过程:temperature=2 时。temperature 处理后,logits 值差距变小,如果 top_k 比较大,则大量 logits 进入 softmax,且 softmax 后概率都比较接近。在 top_p 之后,大部分 token 都有可能被选到且概率相近,容易出现精度问题,如果 top_k 变小或者 top_p 变小则不容易出现。

验证:

将 top_p 设置小,npu 无精度问题。



将 top_k 设置小,npu 无精度问题。



将 top_k 设置小,gpu 无精度问题


经验总结

1、后处理顺序 temperature > top_k > softmax > top_p。

2、temperature 处理原理 logits/temperature(注意此时 logits 不是概率)。

3、softmax 特点:值差距越大,输出的概率差距越大,且非线性。

4、如果大部分 token 概率相近且都有被选中的概率,那么就会有精度问题。

用户头像

zjun

关注

还未添加个人签名 2020-03-06 加入

还未添加个人简介

评论

发布
暂无评论
MindIE推理采样后处理参数temperature和top_k的引发的精度问题_zjun_InfoQ写作社区