海光 K100 DCU VLLM 推理环境构建

Posted on 2026-03-03 17:05  笔名钟意  阅读(0)  评论(0)    收藏  举报

系统环境

  • 系统: Kylin OS
  • 芯片: 128H, Hygon C86 7390 2S * 64
  • 显存: 128G, Hygon K100 DCU 64G * 2
  • 内存: 500G

基础驱动

PS: 详情参考 DTK环境安装与部署

  • DTK: 最新DTK列表
    1. 解压: tar -xzvf DTK*.tar.gz
    2. 载入环境: cd DTK* && source env.sh
    3. 测试: hipcc --version
  • 驱动: 最新驱动列表
    • 执行: ./rock*
    • 测试: hy-smi

部署资源

模型文件

可以从任意平台下载 vllm 所需要的离线模型文件,以下举例 HF、魔搭下载。

强烈建议像示例一样小模型测试,启动快看报错也快。

  • HuggingFace

PS: 也可以选择Git命令下载: git clone https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

# 基于PY环境安装HF脚手架
pip install huggingface-hub

# 镜像加速
$HF_ENDPOINT = "https://hf-mirror.com"

# 下载完整模型
huggingface-cli download --repo-type model \
  deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
  --local-dir ./DeepSeek-R1-Distill-Qwen-1.5B \
  --local-dir-use-symlinks False
  • ModelScope(国内)

PS: 也可以选择Git命令下载: git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B.git

pip install modelscope
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local_dir ./DeepSeek-R1-Distill-Qwen-1.5B

环境镜像

与其它卡有所不同,因缺少 CDNA/GCN 架构的优化内核、未针对 Hygon 芯片做算子优化等原因,国产加速卡需要使用定制的镜像。

镜像按照自己的DCU驱动版本选择: 光源定制镜像

离线内网环境请先准备好镜像包导入。

部署服务

参数详情:

  • HIP_VISIBLE_DEVICES: 使用的显卡槽
  • HSA_OVERRIDE_GFX_VERSION: 匹配K100架构
  • --tensor-parallel-size: 使用显卡数量
  • --gpu-memory-utilization: 显卡使用率

编排文件: 请自行修改以下内容

  • environment里显卡数、显卡槽
  • command里model路径
  • volumes里映射的模型路径实际路径
version: "3.9"

services:
  vllm:
    image: image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.4.1-ubuntu22.04-dtk25.04.1-py3.10
    container_name: vllm-test
    environment:
      - HIP_VISIBLE_DEVICES=0,1
      - HSA_OVERRIDE_GFX_VERSION=10.3.0
    command: >
      python3 -m vllm.entrypoints.openai.api_server
        --model /workspace/models/DeepSeek-R1-Distill-Qwen-1.5B
        --tensor-parallel-size 2
        --gpu-memory-utilization 0.9
        --served-model-name ds-r1-1.5b
        --dtype float16
        --trust-remote-code
        --enforce-eager
        --host 0.0.0.0
        --port 8000
    network_mode: host
    ipc: host
    devices:
      - "/dev/kfd:/dev/kfd"
      - "/dev/dri:/dev/dri"
    volumes:
      - /opt/hyhal:/opt/hyhal:ro
      - /workspace/service/vllm/models:/workspace/models:ro
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp=unconfined
    group_add:
      - video
      - render
    restart: unless-stopped

测试命令

一些打印测试的命令,成功部署可以忽略。

  • 测试服务是否正常运行
curl -X POST "http://127.0.0.1:8000/v1/completions" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ds-r1-1.5b",
    "prompt": "Compute the Fourier transform of the constant function f(t) = 1. What should the correct answer be?",
    "max_tokens": 50,
    "temperature": 0.7
  }'

# ====理论输出====
# answer is 2πδ(ω)
  • 查看容器对显卡的识别
python3 - <<'PY'
import torch
print("PyTorch 版本:", torch.__version__)
print("是否可见 HIP/GPU:", torch.cuda.is_available())
print("GPU 数量:", torch.cuda.device_count())
for i in range(torch.cuda.device_count()):
    print(f"设备 {i} 名称:", torch.cuda.get_device_name(i))
PY

# ====理论输出====
# PyTorch 版本: 2.5.1
# 是否可见 HIP/GPU: True
# GPU 数量: 2
# 设备 0 名称: K100
# 设备 1 名称: K100