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

背景

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

现象

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

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


image.png

在gpu也有同样问题


image.png

原因分析

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无精度问题。


image.png

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


image.png

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


image.png

经验总结

1、后处理顺序temperature > top_k > softmax > top_p。
2、temperature处理原理 logits/temperature(注意此时logits不是概率)。
3、softmax特点:值差距越大,输出的概率差距越大,且非线性。
4、如果大部分token概率相近且都有被选中的概率,那么就会有精度问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容