# enginex-ascend-910-vllm

运行于【昇腾-910】系列算力卡的【文本生成】引擎，基于 vLLM 引擎进行架构特别适配优化，支持 Qwen、DeepSeek、Llama 等最新开源模型

## 镜像

Latest RC Version: git.modelhub.org.cn:9443/enginex-ascend/vllm-ascend:v0.11.0rc0

## 总览

vLLM 昇腾插件 (`vllm-ascend`) 是一个由社区维护的让vLLM在Ascend NPU无缝运行的后端插件。

此插件是 vLLM 社区中支持昇腾后端的推荐方式。它遵循[[RFC]: Hardware pluggable](https://github.com/vllm-project/vllm/issues/11162)所述原则：通过解耦的方式提供了vLLM对Ascend NPU的支持。

使用 vLLM 昇腾插件，可以让类Transformer、混合专家(MOE)、嵌入、多模态等流行的大语言模型在 Ascend NPU 上无缝运行。

## 准备

- 硬件：Atlas 800I A2 Inference系列、Atlas A2 Training系列、Atlas 800I A3 Inference系列、Atlas A3 Training系列、Atlas 300I Duo（实验性支持）
- 操作系统：Linux
- 软件：
  * Python >= 3.9, < 3.12
  * CANN >= 8.2.rc1 (Ascend HDK 版本参考[这里](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/releasenote/releasenote_0000.html))
  * PyTorch >= 2.7.1, torch-npu >= 2.7.1.dev20250724
  * vLLM (与vllm-ascend版本一致)

## QuickStart

1、从 modelscope上下载支持的模型，例如 Qwen/Qwen3-8B
```python
modelscope download --model Qwen/Qwen3-8B README.md --local_dir ./model
```

2、使用Dockerfile生成镜像
从仓库的【软件包】栏目下载基础镜像 git.modelhub.org.cn:9443/enginex-ascend/cann:8.2.rc1-910b-ubuntu22.04-py3.11
使用 Dockerfile 生成 镜像
```python
docker build -f Dockerfile -t ascend-vllm:dev .
```

3、启动docker
```python
docker run -it --rm \
  -p 10086:80 \
  --name test-ascend-my-1 \
  -v `pwd`:/host \
  -e ASCEND_VISIBLE_DEVICES=1 \
  --device /dev/davinci1:/dev/davinci0 \
  --device /dev/davinci_manager \
  --device /dev/devmm_svm \
  --device /dev/hisi_hdc \
  -v ./model:/model \
  -v /usr/local/dcmi:/usr/local/dcmi \
  -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
  -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
  -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
  -v /etc/ascend_install.info:/etc/ascend_install.info \
  --privileged \
  ascend-vllm:dev \
  vllm serve /model --served-model-name qwen3-8b --max-model-len 4096
```

4、测试服务
```python
curl -X POST http://localhost:10086/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-8b",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'
```

## 测试数据集

视觉多模态任务数据集见 vlm-dataset

## 昇腾-910系列上模型运行测试结果
在昇腾-910系列上对部分模型进行适配，测试方式为在 Nvidia A100 和 昇腾-910B4 加速卡上对对应数据集进行测试，获取运行时间

### 视觉多模态

| 模型名称                  | 昇腾-910B4运行时间/s | Nvidia A100运行时间/s |
| ----------------------- | -------------- | ----------------- |
| Qwen2.5-VL-3B-Instruct  | 7.5688         | 3.4735            |
| Qwen2.5-VL-7B-Instruct  | 10.6117        | 4.5430            |
| Qwen2-VL-7B-Instruct    | 4.3974         | 2.7123            |
| Qwen2-VL-2B-Instruct    | 7.9134         | 2.6749            |
| InternVL2_5-1B-MPO      | 3.6658         | 1.9166            |
| InternVL2-8B            | 15.8963        | 3.7747            |
| InternVL2_5-2B          | 11.3071        | 2.3767            |
| InternVL2_5-1B          | 10.9917        | 2.0399            |
| InternVL2_5-4B          | 11.0892        | 2.6751            |
| InternVL2-1B            | 4.6318         | 2.0094            |
| InternVL2_5-8B-MPO      | 10.7414        | 2.6034            |
| Phi-3.5-vision-instruct | 14.5275        | 3.4563            |
| MiniCPM-V-4_5           | 31.9896        | 3.4504            |
| InternVL3-1B-hf         | 19.9975        | 2.8482            |
| InternVL3-8B-Instruct   | 9.6205         | 2.4711            |
| InternVL3-2B-hf         | 17.7860        | 3.0497            |
| InternVL3-9B            | 13.1422        | 3.7643            |
| MiniCPM-V-4             | 13.7100        | 3.7743            |
| llava-1.5-7b-hf         | 8.8733         | 2.5678            |
| MiMo-VL-7B-RL           | 28.3977        | 8.8021            |
| InternVL2-4B            | 29.3529        | 7.0642            |

### 统一多模态（暂时用视觉多模态的数据集测试）

| 模型名称                  | 昇腾-910B4运行时间/s | Nvidia A100运行时间/s |
| ----------------------- | -------------- | ----------------- |
| Qwen2.5-Omni-3B         | 13.9121        | 10.6149           |
| Qwen2.5-Omni-7B         | 12.8182        | 4.3004            |