vLLM-Ascend常见模型服务化部署样例:Qwen2.5-7B

作者:昇腾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. 环境版本与依赖清单

基础环境配置

  • 硬件平台: Atlas 800I A2 (8*32GB)
  • 操作系统: Ubuntu 22.03
  • 驱动版本: 25.0.rc1.1
  • Python版本: 3.12
  • 软件依赖版本

组件版本要求备注
CANN8.2.RC1昇腾计算架构
PyTorch2.5.1.post0/
torch-npu2.7.1rc1昇腾适配版
vLLM0.9.1需与vLLM-Ascend版本一致
vLLM-Ascend0.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 优化负载。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值