Vllm-Ascend 模型精度对齐指南
昇腾实战派。
作者:昇腾实战派
背景
vLLM-Ascend 将高性能推理框架 vLLM 与昇腾 NPU 相结合,为大语言模型在国产化硬件上的高效部署提供了关键路径。然而在实际使用中,模型的推理输出可能存在精度偏差,影响业务可靠性。
这些偏差主要分为两类:
一是与原生 vLLM GPU结果的差异。由于硬件底层、算子实现的不同,vLLM-Ascend 的输出可能与 GPU 版本存在数值偏差。
二是 vLLM-Ascend 不同版本间的差异。随着版本迭代,不同版本之间可能存在精度掉点,需要进行版本间的对比验证。
因此,本文从数据预处理、模型前向计算、输出后处理三个维度,梳理 vLLM-Ascend 的精度对齐方法,辅助开发者定位精度偏差问题。
统计验证
启动在线服务化,通过评测工具评测精度得分,获得统计结果。
开启确定性开关
数据集精度评测
安装AISBench
AISBench Benchmark 是一种模型评测工具,安装方式如下:
获取数据集
可参考ais_bench/benchmark/configs/datasets · AISBench/benchmark - 码云 - 开源中国 (gitee.com),在对应数据集目录下,README.md文件介绍了数据集获取方式和数据集解压位置,按指导操作即可。以调用/v1/chat/completions接口为例:
配置评测参数
脚本展示如下,host_port需与服务化port一致,根据模型配置修改path、max_seq_len和max_out_len等参数,示例为输出8k:
启动评测
以math500评测为例,执行:
评测结果解析
主要关注表格中得分,答题结果可在当前目录的outputs/default/xxx/prediction下查看
权重检查
针对模型路径下的文件,与huggingface或modelscope中的模型文件清单对比大小,确认模型文件没有被修改过,尤其关注如config.json,tokenizer_config.json等文件。
输入预处理对齐
以/v1/chat/completions接口为例
Chat Template渲染结果对比
补充打印:
示例如下,关注engine_prompts中的prompt是否和模型权重目录下使用的tokenizer_config.json中的chat_template结构相同,渲染结果是否一致
编码结果对比
补充打印:
示例如下,关注prompt_token_ids结果是否一致,结果不一致时,需要针对render_chat_request方法内部额外打印过程数据,确认是否为tokenizer配置问题或其他预处理问题
模型前向对齐
使用msProbe工具执行精度数据dump操作,安装命令如下:
工具使能方式
当前msprobe在vllm-ascend中的集成方式可以为在线启动配置使能或代码侵入式修改
在线使能,eager模式
启动在线服务化,额外添加–additional-config '{“dump_config_path”: “/home/xxx/acc-log/config.json”}'配置,指定dump配置的JSON文件路径
config.json内容如下,参数配置参考mstt/debug/accuracy_tools/msprobe-代码预览-mstt:基于昇腾平台的训练工具链项目 - AtomGit | GitCode,常用参数如rank、step,均可按需配置:
启动在线服务化后,发送请求,按需修改调用的接口/prompt内容/最大输出长度:
服务化日志会有dump过程打印,表示dump正常进行:

dump数据结构示例如下:
dump.json包含整网各层输入输出,stack.json包含调用栈信息
离线使能,eager模式
离线脚本如下,在llm.generate前后执行采集器启动和停止
图模式
参考使用AclGraphDumper,https://gitcode.com/Ascend/msprobe/pull/567
- NPUModelRunner中初始化debugger:
2.load_model后同步关联acl_debugger
3.execute_model完成forward后进行step,类似self.debugger
整网采集特征对比
通过观察dump.json找到第一次有明显异常输出的模块

单点采集特征对比
根据调用栈,进一步保存或打印forward方法内部的数据,缩小定位范围。
eager模式
可以使用torch.save()手动dump该算子的输入输出,代码如下:
在需要打印输入输出的部分使用print_tensor代码
参考脚本进行数值统计:
比对算子输入输出是否存在对比结果异常的情况,如示例:
明确异常算子后,可进行单算子脚本复现,将输入dump数据加载后单独执行算子,脚本供参考,按需修改脚本:
图模式
当前图模式对于流程中的内容打印较为欠缺,提供以下几个参考方式:
1.copy_方式
2.acl_save方式
参考msprobe/docs/zh/dump/aclgraph_dump_instruct.md-代码预览-MindStudio-Probe:基于昇腾的全场景精度调试工具链项目 - AtomGit | GitCode提供的acl_save工具,示例如下:
sampler对齐
grammar bitmask过滤结果对比
见vllm_ascend/worker/model_runner_v1.py
sampler参数对比及采样token对比
见vllm_ascend/worker/model_runner_v1.py
数据后处理对齐
解码字符串和最终输出结果对比
见vllm/v1/engine/output_processor.py
更多推荐


所有评论(0)