作者:昇腾PAE技术支持团队
昇腾案例库简介:https://agent.blog.youkuaiyun.com/article/details/155446713
昇腾案例抢鲜预览:https://gitcode.com/invite/link/8791cccc43cb4ee589e8
(如对本文有疑问,请移步案例库提交issue,专人答疑)
1. 背景与意义
Qwen2.5 7B模型概述
- 参数量:70亿(7B)参数。
- 数据集:基于18万亿tokens的数据进行预训练,这使得模型拥有更多的知识和改进的能力。
- 上下文长度:支持高达128K的上下文长度,这意味着它可以处理非常长的文本序列。
- 生成能力:可以生成最多8K的内容。
模型特点
- 多语言支持:支持超过29种语言,包括中文、英文、法文、西班牙文、俄文、日文等。
- 指令遵循能力:经过指令微调(Instruct-tuned),能够更好地理解和执行特定的指令。
- 编程与数学能力:特别是在编程和数学方面有了显著的提升,比如在HumanEval和MATH基准测试中得分较高。
- 结构化数据理解与输出:改进了对结构化数据的理解和生成能力,例如表格数据以及JSON格式的输出。
模型权重:https://modelscope.cn/models/Qwen/Qwen2.5-VL-7B-Instruct
2. 环境版本与依赖清单
基础环境配置
| 组件 | 版本要求 | 备注 |
|---|---|---|
| CANN | 8.2.RC1 | 昇腾计算架构 |
| PyTorch | 2.5.1.post0 | / |
| torch-npu | 2.7.1rc1 | 昇腾适配版 |
| vLLM | 0.9.1 | 需与vLLM-Ascend版本一致 |
| vLLM-Ascend | 0.9.1-dev | 昇腾优化版 |
3. 环境搭建准备
3.1 环境检查与验证
# NPU设备状态检查
npu-smi info
# 网络连接验证
for i in {0..15}; do hccn_tool -i $i -lldp -g | grep Ifname; done
for i in {0..15}; do hccn_tool -i $i -link -g; done
for i in {0..15}; do hccn_tool -i $i -net_health -g; done
# IP配置检查
for i in {0..15}; do hccn_tool -i $i -ip -g; done
3.2 容器环境配置
# 创建特权容器
docker run -it --privileged --name=test_vllm_Qwen_2.5_7B --net=host --shm-size=500g \
--device=/dev/davinci{0..15} \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /home/:/home \
-w /home/<name> \
mindie:dev-2.2.RC1.B070-800I-A2-py312-ubuntu22.03-x86_64 \
/bin/bash
3.3 软件安装流程
# CANN工具包安装
./Ascend-cann-toolkit_8.2.RC1_linux-x86_64.run --install --install-path=/home/<name>/cmc/cann_8.2.rc1
# PyTorch环境配置
pip config set global.extra-index-url "https://download.pytorch.org/whl/cpu/ https://mirrors.huaweicloud.com/ascend/repos/pypi"
pip install torch==2.7.1 torchvision==0.18.0 torch-npu==2.7.1rc1
# vLLM安装
git clone https://github.com/vllm-project/vllm.git
cd vllm && git checkout releases/v0.9.1
VLLM_TARGET_DEVICE=empty pip install -v -e .
# vLLM-Ascend安装
git clone https://github.com/vllm-project/vllm-ascend
cd vllm-ascend && git checkout v0.9.1-dev
pip install -v -e .
3.4 精度测评工具安装
在容器中安装测评工具
git clone https://gitee.com/aisbench/benchmark.git
cd benchmark/
pip3 install -e ./ --use-pep517
若需评估服务化模型(如 vLLM、Triton 等),需额外安装相关依赖:
pip3 install -r requirements/api.txt
pip3 install -r requirements/extra.txt
Berkeley Function Calling Leaderboard (BFCL) 测评支持
pip3 install -r requirements/bfcl_dependencies.txt --no-deps
4. 模型部署流程
在容器中创建新文件夹执行脚本启动服务
export VLLM_USE_V1=1
export TASK_QUEUE_ENABLE=1
export HCCL_OP_EXPANSION_MODE="AIV"
export PAGED_ATTENTION_MASK_LEN=max_seq_len
export VLLM_ASCEND_ENABLE_FLASHCOMM=1
export VLLM_ASCEND_ENABLE_TOPK_OPTIMIZE=1
vllm serve ./Qwen2.5-7B-Instruct/ \
--host IP \
--port Port\
--served-model-name qwen-2.5b \
--trust-remote-code \
--dtype bfloat16 \
--max-model-len 32768 \
--tensor-parallel-size 1 \
--disable-log-requests \
--enforce-eager
5. 模型验证测试
curl Example
curl http:// `ip:port` /v1/completions -H "Content-Type: application/json" -d '{"model": "qwen-2.5b", "prompt": "Beijing is a","max_tokens": 5,"temperature": 0}'
服务化精度测评
前置准备
使用gsm8k数据集: https://github.com/openai/grade-school-math
将解压后的gsm8k/文件夹部署到AISBench评测工具根路径下的ais_bench/datasets文件夹下
参数配置
查找配置文件位置:
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --search
修改查找到的vllm_api_general_chat.py内容(主要修改path、model、ip、port)
from ais_bench.benchmark.models import VLLMCustomAPIChat
models = [
dict(
attr="service",
type=VLLMCustomAPIChat,
abbr='vllm-api-general-chat',
path="",
model="qwen-2.5b", # 指定服务端已加载模型名称,依据实际VLLM推理服务拉取的模型名称配置(配置成空字符串会自动获取)
request_rate = 0,
retry = 2,
host_ip = "localhost", # 指定推理服务的IP
host_port = 8080, # 指定推理服务的端口
max_out_len = 512,
batch_size=1,
generation_kwargs = dict(
temperature = 0.5,
top_k = 10,
top_p = 0.95,
seed = None,
repetition_penalty = 1.03,
)
)
]
执行命令:
设置在*号卡运行,使用,隔开,使用几张卡就写几个
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7,8
第一次执行建议加上--debug,可以输出具体日志(相关参数说明参考)
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --debug
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --summarizer example
输出结果:

结果及日志文件位置:benchmark/outputs/default/
纯模型精度测评
同服务化精度测评
vllm_api_general_chat.py文件attr=“local”
from ais_bench.benchmark.models import VLLMCustomAPIChat
models = [
dict(
attr="local",
type=VLLMCustomAPIChat,
abbr='vllm-api-general-chat',
path="",
model="qwen-2.5b", # 指定服务端已加载模型名称,依据实际VLLM推理服务拉取的模型名称配置(配置成空字符串会自动获取)
request_rate = 0,
retry = 2,
host_ip = "localhost", # 指定推理服务的IP
host_port = 8080, # 指定推理服务的端口
max_out_len = 512,
batch_size=1,
generation_kwargs = dict(
temperature = 0.5,
top_k = 10,
top_p = 0.95,
seed = None,
repetition_penalty = 1.03,
)
)
]
服务化性能测评
在精度测评基础上,执行命令加后缀--mode perf或-m perf
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --summarizer example --mode perf
输出结果:

6. 常见问题与解决方案
如何查看服务状态与性能指标?
- 启用监控:启动时添加
--metrics,通过http://localhost:8000/metrics查看 GPU 利用率、队列长度、推理延迟等指标(兼容 Prometheus)。 - 日志调试:
--log-level debug输出详细日志,定位模型加载或推理阶段的错误。
如何验证部署是否正确?
用官方示例请求测试:
curl http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "Hello!", "max_tokens": 10}'
检查返回结果是否符合预期,无格式错误。
多卡负载不均衡 / 分布式部署问题
- 现象:部分卡显存占用过高,其他卡空闲。
- 原因:张量并行配置不合理,或模型层划分不均。
- 解决:
- 确保
--tensor-parallel-size与卡数一致(如 4 卡设为 4)。 - 对于非对称模型(如 MoE 模型),启用
--enable-moe优化负载。
- 确保
2万+

被折叠的 条评论
为什么被折叠?



