一、前言
在中美科技竞争背景下,国产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模型的完整流程,主要内容包括:
核心要点:
- 硬件选型:DCU K100-AI是AI场景首选,64GB显存支持大模型推理
- 软件栈:DTK基于ROCm构建,与CUDA生态高度兼容
- 部署框架:vLLM-DCU提供OpenAI兼容API,迁移成本低
- 生态优势:ROCm兼容使CUDA代码迁移更容易
海光DCU优势:
- 基于ROCm生态,CUDA迁移成本低
- 国产自主可控,供应链稳定
- 价格适中,性价比高
- 支持DeepSeek等主流大模型
适用场景:
- CUDA代码迁移项目
- 国产化替代需求
- 科研机构和大专院校
- 对迁移成本敏感的项目
参考资料
官方文档:
- 海光DCU官方:https://www.hygon.com/
- DTK下载:https://mirrors.hygon.com/dcu/
- 开发者社区:https://developer.hygon.com/
开源项目: