vLLM-GCU 是由燧原科技基于原生 vLLM 框架适配 Enflame GCU(S60)推出的大模型推理系统,支持大语言模型(LLM)及多模态视觉语言模型(VLM)的部署与运行。该项目在保留 vLLM 核心调度策略与运行机制的基础上,针对 GCU 架构实现了高效的算子执行优化。
- 完整支持 vLLM 0.8.0 功能特性
- 面向燧原第三代 S60 GCU,深度优化推理流程
- 支持 FP16、BF16,以及 GPTQ、AWQ、INT8 等多种量化方式
- 原生支持 Qwen、LLaMa、Gemma、Mistral、ChatGLM、DeepSeek 系列 LLM(和/或VLM)推理
- 提供性能测试与批量推理工具,便于部署与评估
- 操作系统: Ubuntu 20.04 / 22.04
- Python: 3.10 ~ 3.12
- 硬件: 燧原 S60 GCU(已部署 TopsRider i3x 3.4+ 软件栈)
请首先参考《TopsRider 软件栈安装手册》在主机中完成驱动程序安装。
Python3.10+: 确保你已经安装了 Python 3.10 或更高版本,并且默认的 Python 版本是 3.10 及以上。
# 检查默认的 python 版本
python3 --version
# 如果默认的 python 版本小于 3.10,则安装 python3.10
sudo apt update && sudo apt install python3.10 -y
# 将默认的 python 版本切换为 3.10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --config python3
# 为 python3.10 安装pip
sudo apt update && sudo apt install python3.10-distutils -y
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3
# 安装setuptools
python3 -m pip install setuptools✅ 方式一:使用 TopsRider 安装
python3 -m pip install triton==3.2
sudo chmod +x ./TopsRider_i3x_3.4.xxx.run
sudo ./TopsRider_i3x_3.4.xxx.run -y -C vllm-gcu✅ 方式二:从源代码编译并安装 .whl 包
# 安装依赖
python3 -m pip install torch==2.6.0+cpu -i https://download.pytorch.org/whl/cpu
python3 -m pip install torchvision==0.21.0 -i https://download.pytorch.org/whl/cpu
python3 -m pip install vllm==0.8.0
python3 -m pip install triton==3.2
# Enflame依赖
python3 -m pip install torch_gcu-2.6.0+<version>*.whl
python3 -m pip install tops_extension-<version>*.whl
python3 -m pip install xformers-<version>*.whl
sudo dpkg -i topsaten_3.4*.deb
sudo dpkg -i eccl_3.3*.deb
sudo apt install python3.10-dev -y #根据python版本选择
# 编译 vllm_gcu .whl安装包
python3 setup.py bdist_wheel
# 安装编译好的 vllm_gcu whl包
python3 -m pip install ./dist/vllm_gcu-0.8.0+<version>*.whl-
启动需指定:
--device=gcu -
仅支持
xformers作为 attention backend -
默认关闭以下功能:
- vLLM 日志统计收集
- Async output process 功能
- Fork 启动模式(默认使用
spawn) - 自动输入 dump(推理失败时)
-
长序列预填充 (
chunked-prefill) 默认关闭(>32K) -
Top-p 等后处理使用原始精度计算
📚 vLLM-GCU 已支持的模型参见vLLM-GCU 模型支持列表,以下为Qwen2.5-32B模型推理与性能测试示例,其它模型与此类似:
-
branch:
master -
commit id:
996af7d8
从上述Url下载模型到Qwen2.5-32B-Instruct-GPTQ-Int8文件夹中。
python3 -m vllm_utils.benchmark_throughput \
--model=[Qwen2.5-32B-Instruct-GPTQ-Int8文件夹] \
--tensor-parallel-size=2 \
--max-model-len=32768 \
--output-len=128 \
--demo=te \
--dtype=float16 \
--device gcu \
--quantization=gptq# 启动服务端
python3 -m vllm.entrypoints.openai.api_server \
--model [Qwen2.5-32B-Instruct-GPTQ-Int8文件夹] \
--tensor-parallel-size 2 \
--max-model-len 32768 \
--disable-log-requests \
--block-size=64 \
--dtype=float16 \
--device gcu \
--trust-remote-code
# 启动客户端
python3 -m vllm_utils.benchmark_serving \
--backend vllm \
--dataset-name random \
--model [path of Qwen2.5-32B-Instruct-GPTQ-Int8] \
--num-prompts 1 \
--random-input-len 1024 \
--random-output-len 1024 \
--trust-remote-code \
--ignore_eos \
--strict-in-out-len \
--keep-special-tokens- 离线推理:展示 GCU 并推理能力
- 性能测试:统计 TPS / TTFT / latency 等指标
- 启动方式:
vllm_utils.benchmark_throughput
查看参数帮助:
python3 -m vllm_utils.benchmark_throughput --help| 参数名称 | 描述 |
|---|---|
--input-len |
输入 token 长度 |
--output-len |
输出 token 长度 |
--num-prompts |
请求数量 |
--dtype |
数据类型(float16/bfloat16) |
--device |
固定为 gcu |
--tensor-parallel-size |
并行张量数(多卡) |
--quantization |
量化方式,如:gptq、awq、w8a16 |
--kv-cache-dtype |
KV 缓存量化类型,如:int8 |
--quantization-param-path |
KV 量化参数文件路径 |
| 方法 | 描述 |
|---|---|
GPTQ |
4-bit group quantization,支持 group-size 为 64 或其倍数 |
AWQ |
支持 group-size 64 |
W8A16 |
权重量化为 INT8,激活为 FP16 |
INT8 KVCache |
KV Cache 支持 INT8 精度存储(需附加配置) |
❌ 暂不支持:
g_idx乱序(GPTQ)、SqueezeLLM、FP8、gptq_marlin 等
| 模型名称 | FP16 | BF16 | W4A16 GPTQ | W8A16 GPTQ | W4A16 AWQ | W8A16 | W8A8 INT8 | INT8 KV |
|---|---|---|---|---|---|---|---|---|
| Baichuan2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ChatGLM3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DBRX | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DeepSeek-V3/R1 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| DeepSeek-Prover-V2 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Gemma | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| codegemma | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| InternLM2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| LLaMA(2/3/3.1) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Mixtral | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Qwen(1.5/2/2.5/3) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Qwen3-MoE | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| WizardCoder | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Yi | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| gte-Qwen2 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| jina-reranker-v2 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
- ✅:已支持并验证;
- ❌:暂未支持或尚未验证;
- 空白:无明确信息或未公开测试结果;
- W4A16/W8A16 GPTQ / AWQ:均为4bit/8bit 权重量化算法,模型需通过 Enflame TopsCompressor 工具量化;
- INT8(W8A8)/ INT8 KV:需加载额外量化缓存配置文件(如
int8_kv_cache.json),通常适用于极限压缩下的推理部署; - 支持模型不断更新,如需验证特定模型,建议联系官方获取支持清单或测试补丁;
- Qwen 系列支持最完备,涵盖多个模型尺寸、量化格式和推理方式(包括视觉语言模型);
支持兼容 vLLM 的 OpenAI API 接口,可快速集成至 LangChain 等应用。
python3 -m vllm.entrypoints.openai.api_server \
--model=[模型路径] \
--tensor-parallel-size=4 \
--max-model-len=32768 \
--gpu-memory-utilization=0.9 \
--dtype=bfloat16 \
--quantization-param-path=[量化路径] \
--kv-cache-dtype=int8python3 -m vllm_utils.benchmark_serving \
--backend=vllm \
--dataset-name=random \
--model=[模型路径] \
--num-prompts=1 \
--random-input-len=3000 \
--random-output-len=1000| 参数 | 功能说明 |
|---|---|
--top-p, --top-k |
Top-k / Top-p 采样控制 |
--presence-penalty, --frequency-penalty, --repetition-penalty |
抑制重复性输出 |
--ignore-eos |
忽略 EOS 后继续生成 |
--include-stop-str-in-output |
是否包含停止字符 |
--keep-special-tokens |
是否保留特殊 token |
--strict-in-out-len |
强制固定输入/输出长度 |
本项目遵循 Apache License 2.0
📧 有问题?建议提交 Issue 或联系 [email protected]
💡 想了解更多 Enflame GCU 能力?欢迎访问 官网