Linux系统上使用海光DCU部署开源大模型全攻略(以Qwen3-8B为例)

一、前言

在中美科技竞争背景下,国产AI加速卡迎来了重要发展机遇。海光信息(Hygon)作为国内唯一同时拥有CPU和GPGPU芯片设计能力的公司,推出的DCU(Deep Computing Unit,深度计算单元)系列产品,基于AMD ROCm生态兼容设计,成为国产替代的重要选择之一。

本文将详细介绍如何在Linux系统上使用海光DCU部署Qwen3-8B模型,涵盖硬件选型、环境配置、DTK软件栈、vLLM推理等完整流程。

二、海光DCU产品介绍

2.1 DCU技术架构

DCU(Deep Computing Unit)是海光信息推出的深度计算加速器,具有以下特点:

  • GPGPU架构:通用GPU架构,适合HPC和AI计算
  • ROCm兼容:基于AMD ROCm生态,支持CUDA代码迁移
  • 国产自主:完全自主知识产权,供应链安全可控

2.2 海光DCU产品线

重要概念区分:

  • Z100/K100系列芯片 = DCU加速卡的芯片型号
  • DCU Z100/K100/K100-AI = 加速卡产品型号

DCU加速卡产品规格:

产品型号 显存 FP32算力 FP16算力 INT8算力 接口 功耗 适用场景
DCU Z100 32GB HBM2 10.8 TFLOPS 21.6 TFLOPS 43.2 TOPS PCIe 4.0 x16 250W HPC计算
DCU Z100L 32GB HBM2 8.7 TFLOPS 17.4 TFLOPS 34.8 TOPS PCIe 4.0 x16 200W HPC计算
DCU K100 32GB HBM2 12.2 TFLOPS 24.5 TFLOPS 49.1 TOPS PCIe 4.0 x16 280W 通用计算
DCU K100-AI 64GB HBM2 49 TFLOPS 192 TFLOPS 384 TOPS PCIe 4.0 x16 300W AI训练/推理
DCU BW100 64GB HBM2 - - - OAM - 数据中心

2.3 DCU K100-AI详细规格

作为海光面向AI场景的主力产品,K100-AI具备:

参数 规格
显存 64GB HBM2
显存带宽 1200 GB/s
FP32算力 49 TFLOPS
TF32算力 96 TFLOPS
BF16/FP16算力 192 TFLOPS
INT8算力 384 TOPS
接口 PCIe 4.0 x16
功耗 300W TDP
散热 被动散热

2.4 海光DCU vs 其他平台对比

对比项 DCU K100-AI Atlas 300I A2 NVIDIA RTX 4090 NVIDIA A100
显存 64GB HBM2 64GB 24GB GDDR6X 80GB HBM2e
FP16算力 192 TFLOPS 299 TFLOPS 330 TFLOPS 312 TFLOPS
INT8算力 384 TOPS 598 TOPS 660 TOPS 624 TOPS
生态兼容 ROCm(CUDA迁移) CANN CUDA CUDA
供应链 国产稳定 国产稳定 受限 受限
价格区间 约8-12万 约10-20万 约1.5-2万 约10-15万

选型建议:

  • ROCm生态迁移:DCU K100-AI(CUDA代码迁移成本低)
  • 纯国产化信创:Atlas 300I A2(完整国产栈)
  • 个人开发者:RTX 4090(性价比最高)
  • 大规模生产:A100或Atlas 800I A2

三、环境准备

3.1 系统要求

支持操作系统:

  • Ubuntu 20.04 / 22.04 / 24.04
  • CentOS 7.9 / 8
  • 麒麟V10 SP1/SP2
  • DCU OS(海光定制系统)

内核版本要求:

DTK版本 内核版本 支持硬件
rock-4.0 5.6.x Z100/Z100L
rock-5.2 5.16.x Z100/Z100L
rock-5.7 6.2.x Z100/Z100L/K100
rock-6.3 6.3.x+ K100-AI/BW100

3.2 检查DCU设备状态

bash 复制代码
# 查看DCU设备信息
hy-smi

# 查看详细设备信息
rocminfo | grep Marketing

# 查看DCU数量
rocminfo | grep -c "Marketing Name"

# 查看PCI设备
lspci | grep -i "Hygon"

hy-smi 输出示例:

复制代码
=============================== HYGON HSMI ===============================
+----------------------+----------------------+----------------------+
| GPU                  | Temp      Pwr        | Memory-Usage         |
| Fan                  | Perf     Pwr:GPU/CP  | GPU-Util  Compute M. |
|======================+======================+======================|
| 0  K100-AI           | 45C       120W       | 32MiB / 65536MiB     |
|                      | 0%       300W/0W     | 0%        Default    |
+----------------------+----------------------+----------------------+

3.3 安装DTK软件栈

DTK(DCU Toolkit)是海光DCU的开发工具包,基于ROCm构建。

安装步骤:

bash 复制代码
# 1. 添加DTK软件源
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEY_ID>
sudo apt-add-repository 'deb [arch=amd64] https://mirrors.hygon.com/dcu/apt ubuntu main'

# 2. 更新软件源
sudo apt update

# 3. 安装DTK驱动
sudo apt install -y dtk-driver

# 4. 安装DTK开发包
sudo apt install -y dtk-dev

# 5. 安装HIP运行时
sudo apt install -y hip-runtime

# 6. 配置环境变量
echo 'export PATH=/opt/hygondtk/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/opt/hygondtk/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 7. 验证安装
hipconfig --version
rocminfo

离线安装方式:

bash 复制代码
# 下载DTK离线包
wget https://mirrors.hygon.com/dcu/dtk/rock-5.7.1/dtk-5.7.1-linux-x86_64.tar.gz

# 解压安装
tar -xzf dtk-5.7.1-linux-x86_64.tar.gz -C /opt/
ln -s /opt/dtk-5.7.1 /opt/hygondtk

# 配置环境变量
export DTK_ROOT=/opt/hygondtk
export PATH=$DTK_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$DTK_ROOT/lib:$LD_LIBRARY_PATH

四、安装推理框架

4.1 vLLM-DCU适配版本

海光官方提供了vLLM的DCU适配版本:

Docker方式(推荐):

bash 复制代码
# 拉取vLLM-DCU镜像
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.5.0-dtk24.04.1-ubuntu20.04-py310-zk-v1

# 或使用更新版本
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.6.0-dtk25.04-ubuntu22.04-py310-k100-v1

运行vLLM容器:

bash 复制代码
# 单卡运行
docker run -it --name=vllm-dcu \
    --network=host \
    --shm-size=32g \
    --privileged \
    --device=/dev/kfd \
    --device=/dev/dri \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    -v /opt/hyhal:/opt/hyhal:ro \
    -v /path/to/models:/models \
    image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.5.0-dtk24.04.1-ubuntu20.04-py310-zk-v1 \
    /bin/bash

多卡运行:

bash 复制代码
# 指定可见DCU设备
docker run -it --name=vllm-dcu-4card \
    --network=host \
    --shm-size=64g \
    --privileged \
    --device=/dev/kfd \
    --device=/dev/dri \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    --env HIP_VISIBLE_DEVICES=0,1,2,3 \
    -v /opt/hyhal:/opt/hyhal:ro \
    -v /path/to/models:/models \
    image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.5.0-dtk24.04.1-ubuntu20.04-py310-zk-v1 \
    /bin/bash

4.2 pip安装方式

bash 复制代码
# 进入DTK环境
source /opt/hygondtk/bin/env.sh

# 安装PyTorch-DCU
pip install torch==2.4.1+das.opt2.dtk2504 -f https://mirrors.hygon.com/dcu/pip

# 安装vLLM-DCU
pip install vllm-dcu

# 或从源码安装
git clone https://github.com/HygonInfo/vllm.git
cd vllm
pip install -e .

4.3 Ollama部署方式

bash 复制代码
# 拉取Ollama-DCU镜像
docker pull image.sourcefind.cn:5000/dcu/admin/ollama:0.3.5-dtk24.04

# 运行Ollama容器
docker run -d --name=ollama-dcu \
    --shm-size=30g \
    --network=host \
    --privileged \
    --device=/dev/kfd \
    --device=/dev/dri \
    --group-add video \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    -v /data/ollama:/root/.ollama \
    -v /opt/hyhal:/opt/hyhal:ro \
    --env HIP_VISIBLE_DEVICES=0,1,2,3 \
    image.sourcefind.cn:5000/dcu/admin/ollama:0.3.5-dtk24.04

# 拉取并运行模型
docker exec -it ollama-dcu ollama pull qwen2.5:14b
docker exec -it ollama-dcu ollama run qwen2.5:14b

五、部署Qwen3-8B模型

5.1 下载模型

bash 复制代码
# 使用ModelScope下载(国内加速)
pip install modelscope
modelscope download --model Qwen/Qwen3-8B --local_dir /models/Qwen3-8B

# 或使用Hugging Face
pip install huggingface_hub
huggingface-cli download Qwen/Qwen3-8B --local-dir /models/Qwen3-8B

5.2 启动vLLM推理服务

单卡部署:

bash 复制代码
# 进入容器
docker exec -it vllm-dcu /bin/bash

# 启动推理服务
python -m vllm.entrypoints.openai.api_server \
    --model /models/Qwen3-8B \
    --served-model-name qwen3-8b \
    --trust-remote-code \
    --dtype float16 \
    --max-model-len 4096 \
    --port 8000 \
    --host 0.0.0.0

多卡张量并行:

bash 复制代码
# 2卡部署
python -m vllm.entrypoints.openai.api_server \
    --model /models/Qwen3-14B \
    --served-model-name qwen3-14b \
    --trust-remote-code \
    --dtype float16 \
    --tensor-parallel-size 2 \
    --max-model-len 4096 \
    --port 8000

# 4卡部署
python -m vllm.entrypoints.openai.api_server \
    --model /models/Qwen3-32B \
    --served-model-name qwen3-32b \
    --trust-remote-code \
    --dtype float16 \
    --tensor-parallel-size 4 \
    --max-model-len 8192 \
    --port 8000

5.3 量化模型部署

GPTQ-Int8量化模型:

bash 复制代码
# 部署GPTQ量化模型
python -m vllm.entrypoints.openai.api_server \
    --model /models/Qwen2.5-14B-Instruct-GPTQ-Int8 \
    --served-model-name qwen-gptq \
    --trust-remote-code \
    --dtype float16 \
    --quantization gptq \
    --max-model-len 256 \
    --tensor-parallel-size 2 \
    --port 8000

5.4 API调用示例

vLLM提供OpenAI兼容API,可直接使用OpenAI SDK调用:

python 复制代码
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY"
)

response = client.chat.completions.create(
    model="qwen3-8b",
    messages=[
        {"role": "system", "content": "你是一个专业的AI助手"},
        {"role": "user", "content": "介绍一下海光DCU的优势"}
    ],
    temperature=0.7,
    max_tokens=512
)

print(response.choices[0].message.content)

5.5 curl测试

bash 复制代码
curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen3-8b",
        "messages": [
            {"role": "user", "content": "海光DCU相比其他国产GPU有哪些优势?"}
        ],
        "temperature": 0.7,
        "max_tokens": 512
    }'

六、DeepSeek模型部署实战

海光DCU已支持DeepSeek系列模型的部署:

6.1 DeepSeek-32B部署

bash 复制代码
# 下载模型
modelscope download --model deepseek-ai/DeepSeek-V2-Lite-32B --local_dir /models/DeepSeek-32B

# 启动服务(K100-AI 64GB显存可单卡运行)
python -m vllm.entrypoints.openai.api_server \
    --model /models/DeepSeek-32B \
    --served-model-name deepseek-32b \
    --trust-remote-code \
    --dtype float16 \
    --max-model-len 4096 \
    --gpu-memory-utilization 0.9 \
    --port 8000

6.2 DeepSeek-R1部署

bash 复制代码
# 下载DeepSeek-R1蒸馏模型
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --local_dir /models/DeepSeek-R1-32B

# 启动服务
python -m vllm.entrypoints.openai.api_server \
    --model /models/DeepSeek-R1-32B \
    --served-model-name deepseek-r1-32b \
    --trust-remote-code \
    --dtype float16 \
    --max-model-len 8192 \
    --port 8000

七、性能优化建议

7.1 显存优化

bash 复制代码
# 调整最大序列长度
--max-model-len 2048

# 调整显存利用率
--gpu-memory-utilization 0.9

# 限制并发序列数
--max-num-seqs 128

7.2 推理性能优化

bash 复制代码
# 启用Flash Attention
--enable-flash-attn

# 批处理优化
--max-num-batched-tokens 8192

# 使用eager模式(调试时)
--enforce-eager

7.3 多卡负载均衡

bash 复制代码
# 查看各卡负载
watch -n 1 hy-smi

# 指定设备分配
export HIP_VISIBLE_DEVICES=0,1,2,3

# 张量并行优化
--tensor-parallel-size 4

7.4 性能参数对照表

模型规模 推荐配置 batch_size max_len 显存占用
7B-8B 单卡K100-AI 32-64 4096 ~16GB
14B 单卡K100-AI 16-32 4096 ~28GB
32B 单卡K100-AI 8-16 4096 ~48GB
70B 2卡K100-AI 8-16 4096 ~64GB

八、常见问题与解决方案

8.1 驱动与环境问题

Q1: DCU设备无法识别?

bash 复制代码
# 检查驱动是否加载
lsmod | grep -i hygon

# 检查设备节点
ls -la /dev/kfd /dev/dri/

# 重新加载驱动
sudo rmmod kfd
sudo modprobe kfd

Q2: DTK版本不匹配?

bash 复制代码
# 检查DTK版本
hipconfig --version
cat /opt/hygondtk/.info

# 确认内核版本与DTK匹配
uname -r

Q3: 容器启动失败?

bash 复制代码
# 检查设备权限
ls -la /dev/kfd /dev/dri/render*

# 添加用户到video组
sudo usermod -aG video $USER

# 检查hyhal挂载
ls -la /opt/hyhal

8.2 模型加载问题

Q4: 显存不足?

bash 复制代码
# 查看显存使用
hy-smi

# 解决方案
# 1. 减少max-model-len
--max-model-len 2048

# 2. 使用量化模型
--quantization gptq

# 3. 多卡部署
--tensor-parallel-size 2

Q5: 模型加载超时?

bash 复制代码
# 增加加载超时时间
export VLLM_MODEL_LOAD_TIMEOUT=600

# 检查模型文件完整性
md5sum /models/Qwen3-8B/*.bin

8.3 性能问题

Q6: 推理速度慢?

bash 复制代码
# 查看DCU利用率
hy-smi -a

# 优化建议
# 1. 增加batch_size
--max-num-seqs 64

# 2. 启用Flash Attention
--enable-flash-attn

# 3. 检查卡间通信
export NCCL_DEBUG=INFO

Q7: 卡间负载不均衡?

bash 复制代码
# 查看各卡负载
watch -n 0.5 hy-smi

# 设置可见设备顺序
export HIP_VISIBLE_DEVICES=0,1,2,3

# 确认拓扑
rocminfo -a | grep -A5 "Device"

九、国产平台对比总结

9.1 三大国产AI平台对比

对比项 海光DCU K100-AI 华为昇腾 Atlas 300I A2 寒武纪 MLU
架构 GPGPU (ROCm兼容) NPU (自研架构) NPU (自研架构)
显存 64GB HBM2 64GB 32GB
FP16算力 192 TFLOPS 299 TFLOPS ~128 TFLOPS
生态兼容 CUDA迁移(ROCm) 自研CANN 自研BANG
迁移成本 中高
软件成熟度 中高
供应链 稳定 稳定 稳定
价格区间 8-12万 10-20万 8-15万

9.2 选型决策树

复制代码
                    需要CUDA代码迁移?
                          │
              ┌───────────┴───────────┐
              │ 是                    │ 否
              ▼                       ▼
        海光DCU K100-AI         是否需要完整国产栈?
        (ROCm兼容,迁移成本低)         │
                              ┌──────┴──────┐
                              │ 是          │ 否
                              ▼             ▼
                        华为昇腾Atlas     按性价比选择
                        (CANN生态)        (寒武纪/海光)

9.3 各平台适用场景

平台 最适用场景 核心优势
海光DCU CUDA代码迁移、科研机构 ROCm兼容、迁移成本最低
华为昇腾 国产化信创、企业生产 生态完善、性能强劲
寒武纪 边缘推理、终端部署 低功耗、小尺寸

十、总结

本文详细介绍了在Linux系统上使用海光DCU部署Qwen3-8B模型的完整流程,主要内容包括:

核心要点:

  1. 硬件选型:DCU K100-AI是AI场景首选,64GB显存支持大模型推理
  2. 软件栈:DTK基于ROCm构建,与CUDA生态高度兼容
  3. 部署框架:vLLM-DCU提供OpenAI兼容API,迁移成本低
  4. 生态优势:ROCm兼容使CUDA代码迁移更容易

海光DCU优势:

  • 基于ROCm生态,CUDA迁移成本低
  • 国产自主可控,供应链稳定
  • 价格适中,性价比高
  • 支持DeepSeek等主流大模型

适用场景:

  • CUDA代码迁移项目
  • 国产化替代需求
  • 科研机构和大专院校
  • 对迁移成本敏感的项目

参考资料

官方文档:

开源项目:

相关推荐
chushiyunen2 小时前
langgraph笔记
数据库·人工智能·笔记
xiami_world2 小时前
AI Agent生成PPT技术解析:从一键生成到意图理解,Agent模式如何重构PPT工作流?
人工智能·经验分享·ai·信息可视化·powerpoint
我是胡杨学长2 小时前
ChatGPT 连续三月流量下滑,是热度凉了还是 AI 泡沫要来了?
人工智能·ai·chatgpt
剑穗挂着新流苏3122 小时前
207_深度学习调优:透彻理解权重衰退(L2 正则化)
人工智能·机器学习
一叶萩Charles2 小时前
GitHub AI Agent 开源生态概览
人工智能·开源·github
易连EDI—EasyLink2 小时前
以自主技术破局–聚信万通EasyLink赋能中国汽车供应链高质量发展
大数据·人工智能·汽车·edi·制造·电子数据交换·as2
反向跟单策略2 小时前
期货反向跟单:跨合约跟单的意义及操作方法
大数据·人工智能·学习·数据分析·区块链
这张生成的图像能检测吗2 小时前
(论文速读)FDGLM:面向多场景工业故障诊断的深度数字双动力大视觉语言模型
人工智能·深度学习·计算机视觉·故障诊断·视觉语言大模型·问答模型