作者:昇腾实战派

背景概述

在人工智能模型开发与部署过程中,模型评测是验证模型性能、精度及可靠性的关键环节。随着昇腾计算设备在AI计算中的广泛应用,开发者常需将训练好的模型迁移至NPU平台进行推理加速与效能验证。本文系统介绍在昇腾NPU硬件环境下,使用魔搭EvalScope框架开展多维度模型评测的完整流程,涵盖环境配置、多种评测后端工具的使用、结果可视化及性能压测方法,旨在为开发者提供一套可复现的标准化评测方案。

硬件与软件环境

  • 硬件信息​:
    • 服务器型号:Atlas 800I A2推理服务器
  • 软件信息​:
    • 操作系统内核:OpenEuler 22.03 SP3
    • Python版本:3.10
    • PyTorch及torch_npu版本:2.6.0
    • CANN版本:8.2.RC1

NPU驱动与固件安装

1. 安装驱动和固件

昇腾社区官网下载地址https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=32&cann=All&driver=Ascend+HDK+25.2.0

Tips

  • 如果报错内核文件缺失,需要执行yum install kernel-source
  • 注意npu卡型号版本需要匹配

2. 安装cann以及二进制算子包

昇腾社区官网下载地址https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.2.RC1&product=4&model=32

安装完成后测试环境是否安装正确,NPU能否被正常加载:

from transformers.utils import is_torch_npu_available
import torch

print(is_torch_npu_available())  # True
print(torch.npu.device_count())  # 8
print(torch.randn(10, device='npu:0'))

Tips:如果调用npu失败,检测cann二进制算子包是否安装

如果报错 NumPy 版本不匹配,尝试降级 NumPy 版本,例如pip install numpy==1.21.6

模型评测

推荐使用虚拟环境,需要安装conda 环境安装参考:https://modelscope.cn/docs/model-evaluation/get-started/installation

1. 使用evalscope native框架进行模型评测

参考文档:https://modelscope.cn/docs/model-evaluation/get-started/basic-usage

使用命令行进行评测:

evalscope eval \ --model Qwen/Qwen2.5-0.5B-Instruct \ --datasets gsm8k arc \ --limit 5

2. 使用opencompass进行模型评测

参考文档

评测示例: 使用ms-swift在npu0上部署模型:

ASCEND_RT_VISIBLE_DEVICES=0 swift deploy --model Qwen/Qwen2-7B-Instruct --max_new_tokens 2048
  1. 使用yaml传递评测参数并调用评测脚本

3. 使用VLMEvalKit进行模型评测

使用参考: https://modelscope.cn/docs/model-evaluation/user-guides/backend/vlmevalkit-backend

评测示例:

  1. 使用ms-swift在npu0上部署模型:
    ASCEND_RT_VISIBLE_DEVICES=0 swift deploy --model Qwen/Qwen2.5-0.5B-Instruct --max_new_tokens 1024
    
  2. 使用yaml传递评测参数并调用评测脚本

4. 使用RAG eval进行评测

CMTEB

参考文档https://www.modelscope.cn/docs/model-evaluation/user-guides/backend/rageval-backend/mteb

CLIP Benchmark

参考文档https://www.modelscope.cn/docs/model-evaluation/user-guides/backend/rageval-backend/clip-benchmark

5. 使用第三方工具τ-bench进行评测

参考文档https://modelscope.cn/docs/model-evaluation/third-party/tau-bench

6. 使用第三方工具BFCL-v3进行评测

参考文档https://modelscope.cn/docs/model-evaluation/third-party/bfcl-v3

Tips:如果评测过程报错,尝试排查模型是否支持函数调用,将脚本中的"is_fc_model"改为false

7. 使用第三方工具大海捞针测试

参考文档https://modelscope.cn/docs/model-evaluation/third-party/needle-haystack

8. 使用第三方工具ToolBench测试

参考文档https://modelscope.cn/docs/model-evaluation/third-party/toolbench

9. 使用第三方工具LongBench-Write测试

参考文档https://modelscope.cn/docs/model-evaluation/third-party/longwriter

10.竞技场模式

参考文档https://www.modelscope.cn/docs/model-evaluation/user-guides/arena 先部署需要PK的模型(以qwen2.5-7b和qwen2.5-0.5b为例),得到推理结果后再进行PK

Tips:如果报错缺少NLTKd 资源导致计算指标出错,需要下载NTLK资源,如果网络下载仍然有问题,需要手动安装所需的 NLTK 数据:

  1. 创建 NLTK 数据目录

mkdir -p /root/nltk_data/tokenizers

  1. 手动下载并安装所需数据

    • 下载 punkt_tab 数据。wget https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt_tab.zip -O /root/nltk_data/tokenizers/punkt_tab.zip
    • 下载 punkt 数据。wget https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip -O /root/nltk_data/tokenizers/punkt.zip
  2. 解压数据

    unzip /root/nltk_data/tokenizers/punkt_tab.zip -d /root/nltk_data/tokenizers/
    
    unzip /root/nltk_data/tokenizers/punkt.zip -d /root/nltk_data/tokenizers/
    
  3. 清理压缩文件

    rm /root/nltk_data/tokenizers/*.zip
    
  4. 在代码中设置 NLTK 数据路径

    import nltk
    
    nltk.data.path.append('/root/nltk_data')
    

测评结果可视化

参考文档https://modelscope.cn/docs/model-evaluation/get-started/visualization

使用示例

evalscope app --outputs outputs/20250929_032223/

浏览器输入对应服务器IP即可查看可视化结果

Tips: 如果浏览器访问失败,可尝试关闭防火墙,允许对应端口访问

  1. 允许7860端口访问。sudo firewall-cmd --add-port=7860/tcp --permanent
  2. 重新加载规则。sudo firewall-cmd --reload

模型推理性能压测

参考文档https://modelscope.cn/docs/model-evaluation/user-guides/stress-test/quick-start

  1. 部署模型
    ASCEND_RT_VISIBLE_DEVICES=0 swift deploy --model Qwen/Qwen2.5-0.5B-Instruct --max_new_tokens 1024
    

 2. 使用命令行进行测试:

evalscope perf \
 --parallel 1 10 50 100 200 \
 --number 10 20 100 200 400 \
 --model Qwen2.5-0.5B-Instruct \
 --url http://127.0.0.1:8801/v1/chat/completions \
 --api openai \
 --dataset random \
 --max-tokens 1024 \
 --min-tokens 1024 \
 --prefix-length 0 \
 --min-prompt-length 1024 \
 --max-prompt-length 1024 \
 --tokenizer-path Qwen/Qwen2.5-0.5B-Instruct \
 --extra-args '{"ignore_eos": true}'
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐