关键词:海光 DCU、ROCm、vLLM、Qwen2.5、大模型部署、国产算力、AI 推理

一、背景与挑战

随着国产 AI 芯片生态的快速发展,海光 DCU(Deep Computing Unit)作为兼容 ROCm 生态的国产 GPU,正逐步在大模型推理场景中崭露头角。然而,由于其与 NVIDIA CUDA 的底层差异,许多主流推理框架(如 vLLM)在 DCU 上运行时会遇到兼容性问题。

本文记录了我在 海光 DCU 环境下成功部署 Qwen2.5-14B-Instruct 模型 的全过程,并总结出一套可复用的部署方案,希望能为国产化 AI 推理提供参考。

二、硬件准备

  • 操作系统Kylin Linux Advanced Server V10 (Halberd)”(需安装 DTK 驱动)

这是一套专为海光处理器优化的银河麒麟服务器系统,运行在 x86_64 架构上,兼容部分 CentOS/RHEL 生态。

cat /etc/os-release

  • CPU:海光7420D,1颗32核64线程就够用。

lscpu

  • DCU:全称为“Deep Computing Unit”,功能类似于英伟达的GPU。本服务器使用的是海光K100 AI,这是海光推出的面向 AI 训练/推理和高性能计算(HPC)的加速器,兼容 AMD ROCm 软件生态(基于开源 ROCm 适配),并非传统意义上的“显卡”,但功能类似 NVIDIA GPU。需安装 海光 DCU 驱动 + ROCm 运行时环境(通常由服务器厂商提供,或可参考光合开发者社区文档安装)。安装好后可查询到DCU信息。

rocm-smi

  • DCU:推荐至少64G。(大模型部署运行后占内存大约10G)

二、软件准备

三、ROCm+vLLM安装

  • 操作系统:Kylin Linux Advanced Server V10(需安装 DTK 驱动)
  • 硬件:海光 DCU(支持 ROCm)

海光 K100 基于 GPGPU 架构,兼容 AMD ROCm 生态,因此可以走 ROCm 路线,使用 vLLM 的 ROCm 支持版本

1、采用Docker从内网镜像仓库 image.sourcefind.cn:5000 拉取了 专为海光 DCU 优化的 vLLM 镜像

docker pull image.sourcefind.cn:5000/dcu/admin/base/vllm:0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250724

Docker 镜像是分层存储在主机的 Docker 根目录中(默认为 /var/lib/docker/),你不需要手动管理这些文件

但你可以通过以下方式查看和使用它

docker images

注意可以使用镜像ID用于镜像加载,以上镜像ID为efc1a5d819c4。

五、启动部署命令

由于vLLM 默认启用 CUDA Graph 捕获(CUDAGraph Capture)以提升推理性能。但在 海光 DCU + ROCm 环境中,部分算子尚未完全兼容 CUDAGraph,导致进程在 warmup 阶段发生 段错误(Segmentation Fault),且无 Python 异常抛出。因此必须启用 Eager 模式:通过添加 --enforce-eager 参数,禁用 CUDAGraph 捕获,使用标准 PyTorch Eager Execution 模式,绕过兼容性问题。

✅ 完整 Docker 启动命令

docker run -d \
  --shm-size 64g \
  --network=host \
  --name qwen-dcu \
  --privileged \
  --device=/dev/kfd \
  --device=/dev/dri \
  --device=/dev/mkfd \
  --group-add video \
  --cap-add=SYS_PTRACE \
  --security-opt seccomp=unconfined \
  -u root \
  -v /opt/hyhal:/opt/hyhal:ro \
  -v /models:/models:ro \
  <your-vllm-dtk-image> \
  python -m vllm.entrypoints.openai.api_server \
    --model /models/Qwen2.5-14B-Instruct \
    --dtype float16 \
    --max-model-len 8192 \
    --tensor-parallel-size 1 \
    --host 0.0.0.0 \
    --port 8000 \
    --enforce-eager  # ⭐ 关键参数!

📌 注意:

  • 必须挂载海光 HAL 库(/opt/hyhal
  • 使用 --network=host 避免端口映射问题
  • 初次调试建议去掉 --rm,便于查看日志

五、验证部署成功

1. 查看服务状态

docker logs -f qwen-dcu

看到以下日志即表示成功:

INFO ... Starting vLLM API server on http://0.0.0.0:8000
INFO ... Application startup complete.

2.调用 OpenAPI 接口

curl http://localhost:8000/v1/models

返回:

{
  "object": "list",
  "data": [{
    "id": "/models/Qwen2.5-14B-Instruct",
    "max_model_len": 8192,
    "owned_by": "vllm"
  }]
}

3.发起聊天请求

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
  "messages": [{"role": "user", "content": "你好!"}],
  "max_tokens": 50
}'

✅ 成功返回模型生成内容!


六、经验总结与建议

问题

解决方案

容器启动后立即退出

去掉 --rm,用 docker logs 查看完整日志

模型加载成功但服务未启动

极大概率是 CUDAGraph 不兼容 → 加 --enforce-eager

权限错误(/dev/kfd)

确保用户在 video 组(GID=39)

性能略低

Eager 模式比 CUDAGraph 慢 10~20%,但稳定性优先

💡 生产建议

  • 添加 --restart always 实现容器自愈
  • 通过 VLLM_RANK0_NUMA=0 绑定 NUMA 提升性能
  • 监控 DCU 显存:使用 hccsmirocm-smi

七、结语

本次实践证明:在海光 DCU 上运行主流大模型是完全可行的!虽然存在一些兼容性细节需要处理,但通过合理配置(如 --enforce-eager),我们能够快速构建稳定、高效的国产化 AI 推理服务。

未来,随着 DTK 和 vLLM 对 ROCm 支持的不断完善,相信国产芯片在大模型领域的应用将更加广泛。

代码已跑通,服务已上线,国产 AI 正当时!

欢迎点赞、收藏、评论交流!
如果你也在做国产芯片适配,欢迎留言分享你的经验 👇


版权声明:本文为原创,转载请注明出处。禁止商业转载。

Logo

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

更多推荐