国产昆仑芯XPU实战:vLLM-Kunlun插件部署Qwen3.6大模型全流程
前言
随着大语言模型的快速发展,国产AI加速卡在推理部署中的需求日益增长。昆仑芯P800作为百度自研的高性能计算卡,已能通过vLLM-Kunlun插件流畅运行千问等主流开源模型。本文将基于单张P800(96GB显存)的实际环境,完整记录从Docker容器创建到服务启动的全过程,并总结常见避坑要点。
一、环境与硬件信息
-
宿主机OS:Ubuntu 20.04
-
加速卡:昆仑芯P800 PCIe ×1,显存 96 GiB
-
驱动与运行时:Driver 5.0.21.19,XPU-RT 5.0.21
-
容器基础镜像:
wjie520/vllm_kunlun:uv_base -
推理框架:vLLM 0.15.1 + vLLM-Kunlun 0.19.0-dev
-
目标模型:Qwen3.6-35B-A3B(MoE)
二、启动Docker容器
docker pull wjie520/vllm_kunlun:uv_base
docker run -itd \
--name vllm-kunlun \
--privileged \
--network host \
--cap-add SYS_PTRACE \
--security-opt seccomp=unconfined \
--device=/dev/xpuctrl \
--device=/dev/xpu0 \
--mount type=tmpfs,destination=/dev/shm,tmpfs-size=32g \
-v /root:/workspace \
-w /workspace \
wjie520/vllm_kunlun:uv_base \
/bin/bash
参数说明:
-
--device=/dev/xpu0:挂载单张P800设备(多卡需逐个添加) -
--mount tmpfs:将/dev/shm挂载为内存盘,避免多进程通信瓶颈 -
-v /root:/workspace:将宿主机模型目录映射进容器(模型位于/root/models/)
三、进入容器并安装基础组件
docker exec -it vllm-kunlun bash
镜像已内置uv包管理器,直接安装vLLM 0.15.1:
uv pip install vllm==0.15.1 --no-build-isolation --no-deps \
-i https://mirrors.aliyun.com/pypi/simple/
- 网络不佳时可换阿里云镜像,避免超时。
四、编译安装vLLM-Kunlun插件
cd /workspace
git clone https://github.com/baidu/vLLM-Kunlun
cd vLLM-Kunlun
git checkout v0.19.0-dev # 经实测可用
uv pip install -r requirements.txt
python setup.py build
python setup.py install
- 官方文档分支名与实际仓库可能不一致,v0.19.0-dev是目前适配vLLM 0.15.1的有效分支。
五、安装定制版XPU PyTorch
标准PyTorch无法直接使用昆仑芯,需安装官方定制的XPU版本(torch 2.5.1):
wget -O xpytorch.run \
https://baidu-kunlun-customer.su.bcebos.com/aiak/qwen3_next/20260226/xpytorch-cp310-torch251-ubuntu2004-x64.run
bash xpytorch.run --noexec --target xpytorch_unpack
cd xpytorch_unpack/
sed -i 's/pip/uv pip/g; s/CONDA_PREFIX/VIRTUAL_ENV/g' setup.sh
bash setup.sh
cd ..
安装包括torch_xmlir、flash_attn等在内的完整XPU支持库。
六、应用关键补丁
vLLM 0.15.1与PyTorch 2.5.1之间存在少量兼容性接口差异,需手动打补丁:
source setup_env.sh # 先加载环境变量,确定虚拟环境路径
VLLM_VENV=${CONDA_PREFIX:-$VIRTUAL_ENV}
# 替换torch._dynamo下的eval_frame.py
cp vllm_kunlun/patches/eval_frame.py \
$VLLM_VENV/lib/python3.10/site-packages/torch/_dynamo/eval_frame.py
# 替换vLLM量化模块初始化文件
cp vllm_kunlun/quantization/__init__.py \
$VLLM_VENV/lib/python3.10/site-packages/vllm/model_executor/layers/quantization/__init__.py
# 执行批量补丁脚本(部分可能失败,不影响核心功能)
python vllm_kunlun/patches/patch_torch251.py
七、配置环境变量并启动服务
source /workspace/vLLM-Kunlun/setup_env.sh
export XACC_ENABLE_XPU=1
export XPURT_DISPATCH_MODE=0
python -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8356 \
--model /workspace/models/qwen/qwen3.6-35B-A3B \
--trust-remote-code \
--gpu-memory-utilization 0.8 \
--max-model-len 8192 \
--tensor-parallel-size 1 \
--dtype float16 \
--max-num-seqs 64 \
--max-num-batched-tokens 8192 \
--block-size 128 \
--no-enable-prefix-caching \
--no-enable-chunked-prefill \
--distributed-executor-backend mp \
--served-model-name qwen3.6-35b-a3b
服务启动后输出Uvicorn running on http://0.0.0.0:8356即表示成功。
八、验证推理服务
curl http://localhost:8356/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.6-35b-a3b",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 10
}'
返回正常JSON对话结果即部署完成。
结语
通过以上步骤,我们成功在昆仑芯P800上以vLLM‑Kunlun插件部署了Qwen3.6‑35B‑A3B等模型。尽管目前对Dense架构模型的支持尚有瑕疵,但整体生态已能满足多数生产级推理需求。建议持续关注官方GitHub仓库获取最新版本。
更多推荐


所有评论(0)