前言

随着大语言模型的快速发展,国产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_xmlirflash_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仓库获取最新版本。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐