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

简介: 在MindIE跑Qwen系列模型推理时,发现当后处理参数top_k较大且temperature=2时,Ascend npu和gpu上均出现模型输出精度问题。原因在于temperature增大导致logits值差距缩小,softmax后概率接近,难以选到正确token。通过减小top_k或top_p可避免此问题。总结:后处理顺序为temperature > top_k > softmax > top_p,temperature越大,logits差距越小,易引发精度问题。

背景

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

现象

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

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

添加图片注释,不超过 140 字(可选)

在gpu也有同样问题

添加图片注释,不超过 140 字(可选)

原因分析

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

添加图片注释,不超过 140 字(可选)

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

添加图片注释,不超过 140 字(可选)

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

添加图片注释,不超过 140 字(可选)

经验总结

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

相关文章
|
6月前
|
负载均衡 Docker Python
vLLM-Ascend 安装部署与环境配置指南
vLLM-Ascend 是 vLLM 项目专为华为昇腾 NPU 设计的硬件插件,支持主流大模型与多模态架构,提供高性能推理能力。项目结构清晰,涵盖核心算子、工具脚本与容器化部署方案,兼容单/多节点环境,助力高效构建昇腾上的 AI 推理服务。
3378 1
|
Kubernetes 调度 开发者
qwen模型 MindIE PD分离部署问题定位
使用MindIE提供的PD分离特性部署qwen2-7B模型,使用k8s拉起容器,参考这个文档进行部署:https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0060.html,1个Prefill,1个Decode。 最后一步测试推理请求的时候,出现报错:model instance has been finalized or not initialized。
778 1
|
自然语言处理 测试技术 API
MindIE BenchMark
MindIE Benchmark工具通过部署昇腾服务化配套包,以终端命令方式测试大语言模型在不同配置下的推理性能和精度。它支持Client和Engine两种推理模式:Client模式适用于多用户并发场景,兼容多种接口;Engine模式直接调用底层API,测量NPU卡的真实性能。该工具支持多个数据集进行精度和性能测试,如CEval 5-shot、CMMLU、GSM8K等,并将结果保存为本地csv文件。评测方法包括调用大模型输入题目,解析返回结果并与正确答案比较,计算平均分和其他指标如准确率、EM等。
|
数据采集 PyTorch 算法框架/工具
sam模型迁移昇腾训练loss不收敛问题的解决办法
在将SAM模型迁移到昇腾平台时,遇到了精度问题。具体表现为NPU训练的loss图从一开始就未收敛,而GPU则正常收敛。通过使用Ascend开源仓的msprobe工具进行精度对比,发现NPU丢失了image_embedding的梯度,原因在于torch_npu版本与PyTorch不匹配,导致`repeat_interleave_backward_tensor`函数调用失败。最终通过选择与PyTorch配套的torch_npu版本解决了问题,loss图恢复正常。
|
网络协议
TCP连接释放过程
【8月更文挑战第20天】
1355 3
|
JavaScript 前端开发
JavaScript 获取整个网页的完整内容,包括 html 标签。
JavaScript 获取整个网页的完整内容,包括 html 标签。
2157 0
JavaScript 获取整个网页的完整内容,包括 html 标签。
|
Linux 开发工具
linux下安装Anaconda3
linux下安装Anaconda3
768 1

热门文章

最新文章