DCU技术达人
从零搭建国产DCU开发环境:一份写给新手的实操指南
2026-08-03 16:07:49
183
## 从零搭建国产DCU开发环境:一份写给新手的实操指南 如果你刚拿到一台搭载海光DCU的服务器,第一反应可能是:“这东西怎么用?” 这不是你一个人的困惑。国产加速卡最大的门槛从来不在硬件本身,而在于**环境怎么搭、软件怎么装、代码怎么跑**。驱动装不上、DTK版本对不上、PyTorch找不到卡——每一个坑都足以让新手劝退。 这篇文章,我把DCU环境部署的完整流程拆解出来,从硬件检查到跑通第一个模型,手把手带你走一遍。 ### 一、环境部署到底要装什么? 在动手之前,先搞清楚DCU软件栈的层次结构: - **驱动(Driver)** :最底层,让操作系统认识DCU硬件 - **DTK(DCU Toolkit)** :开发工具包,提供编译器、数学库、通信库等 - **DAS(DCU AI Software Stack)** :AI软件栈,包含PyTorch、vLLM等框架的DCU适配版 可以这样理解:驱动是“让DCU能工作”,DTK是“让开发者能编程”,DAS是“让AI模型能跑起来”。三者缺一不可。 ### 二、动手前先做三件事 **第一件事:检查DCU硬件状态** 用 `lspci`命令看看DCU是否被正确识别: ```bash lspci | grep -i Co-processor ``` 正常输出应该看到类似这样的信息: ``` 05:00.0 Co-processor: Chengdu C-3000 IC Design Co., Ltd. BW (rev 01) ``` **重点关注 `rev`后面的数字**:`rev 01`表示设备正常,可以继续安装;如果看到 `rev ff`,说明设备已经工作异常,需要硬重启恢复【文档1.1】。 **第二件事:检查BAR地址** DCU支持的BAR寄存器地址在44bit以内,需要确认分配地址没有超限【文档1.1】: ```bash lspci -vvvd 1d94:6320 | grep -i region ``` 如果地址超出44bit(>=12位十六进制位),需要在BIOS中调整MMIO High Base设置【文档1.1】。 **第三件事:安装系统依赖** 不同操作系统的依赖包略有不同,以CentOS/Red Hat系为例【文档1.2】: ```bash yum install -y pciutils policycoreutils-python yum-utils wget numactl-devel mlocate yum install -y kernel-devel-$(uname -r) kernel-modules-extra-$(uname -r) yum install -y automake gcc-c++ rpm-build cmake elfutils-libelf-devel ``` > ⚠️ **版本要求**:gcc需要>=7.3,cmake需要>=3.5【文档1.2】。如果系统自带版本过低,需要先升级。 ### 三、安装驱动:让DCU“活”起来 **下载驱动** 从光合开发者社区下载对应型号的驱动包: ``` https://download.sourcefind.cn:65024/6/main/latest驱动 ``` 驱动包命名格式为 `rock-{版本号}-{包版本号}.run`,例如 `rock-6.3.28-V1.3.0b.run`【文档1.3】。 **安装驱动** ```bash chmod +x rock-*.run ./rock-6.3.28-V1.3.0b.run ``` 推荐使用 `-A`参数进行全自动安装,驱动会自动升级所有内容(驱动、配置文件、DCU VBIOS、HY Switch固件)【文档1.3】。 安装过程中会询问几个问题: - 是否升级VBIOS?建议选 `Y` - 是否升级HY Switch固件?选 `Y`(若升级则需要重启物理机) - 是否需要指定互联类型?BW系列DCU支持通过 `-t`参数指定互联拓扑【文档1.3】 **验证驱动** 从6.3.*版本开始,驱动模块名称改为 `hycu`(之前叫 `hydcu`)【文档1.4】: ```bash lsmod | grep hycu hy-smi # 查看DCU状态 ``` 如果 `hy-smi`能正常显示DCU的温度、功耗、显存使用率等信息,说明驱动安装成功【文档3.3】。 > ⚠️ **版本选择小贴士**:如果打算用Ollama等工具,建议安装6.2.x以下版本(驱动标识为 `hydcu`),因为Ollama目前只识别这个标识。如果主要做AI开发,6.3.*版本功能更完整。 ### 四、安装DTK:给开发者一把“钥匙” DTK(DCU Toolkit)是DCU上的开发工具包,相当于NVIDIA的CUDA Toolkit。 **下载与解压** ``` https://download.sourcefind.cn:65024/1/main → DTK Toolkit ``` 选择对应操作系统版本的压缩包下载: ```bash tar xvf DTK-25.04.4-CentOS8.5-x86_64.tar.gz -C /opt ln -s /opt/DTK-25.04.4 /opt/dtk # 创建软链接,方便后续版本切换 ``` **配置环境变量** 方式一:直接加载脚本【文档3.2】 ```bash source /opt/dtk/env.sh echo "source /opt/dtk/env.sh" >> ~/.bashrc ``` 方式二:使用Environment Module(推荐多版本管理场景)【文档3.2】 ```bash yum install -y environment-modules # 在/opt/dtk/下创建module文件后 module load dtk/25.04.4 ``` **验证DTK** ```bash rocminfo | grep -i gfx # 应该能看到gfx936等DCU代号 ``` 如果能看到DCU设备信息,说明DTK安装成功【文档3.3】。 ### 五、安装DAS:让AI模型跑起来 DAS是DCU上的AI软件栈,提供了PyTorch、vLLM等框架的DCU适配版本。 **版本匹配是关键** DAS组件的版本必须与DTK版本严格对应【文档4.2.1】。例如: | DTK版本 | PyTorch版本 | vLLM版本 | | ------- | ----------------------- | ----------------------- | | 24.04.2 | 2.3.0+das.opt1.dtk24042 | 0.5.0+das.opt1.dtk24042 | | 25.04 | 2.4.1+das.opt2.dtk2504 | 0.6.2+das.opt3.dtk2504 | | 25.04.2 | 2.7.1+das.opt1.dtk25042 | 0.9.2+das.opt1.dtk25042 | > ⚠️ **踩坑提醒**:不要混装不同DTK版本的包!否则会出现符号找不到、算子报错等各种诡异问题。 **安装PyTorch** 从光合开发者社区下载对应版本的wheel包: ```bash pip install torch-2.3.0+das.opt2.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl ``` 验证安装: ```python python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())" # 预期输出:2.3.0 和 True ``` 如果输出 `True`,说明PyTorch能正常调用DCU。 **安装vLLM(可选)** ```bash pip install vllm-0.6.2+das.opt1.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl python -c "import vllm; print(vllm.__version__)" ``` ### 六、进阶方案:容器化部署(强烈推荐) 手动部署的坑实在太多了——依赖版本对不上、环境变量没配好、内核模块没加载……每一个问题都够折腾半天。 **强烈推荐直接用DCU容器镜像**。 光合开发者社区提供了大量预装好DTK和AI框架的Docker镜像: ```bash docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3 ``` 启动容器: ```bash docker run -it \ --network=host \ --ipc=host \ --shm-size=64G \ --device=/dev/kfd \ --device=/dev/dri \ -v /opt/hyhal:/opt/hyhal \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3 \ /bin/bash ``` 几个关键参数说明【文档5.1】: - `--device=/dev/kfd`和 `--device=/dev/dri`:让容器访问DCU设备 - `--shm-size=64G`:共享内存要足够大,默认64M完全不够用 - `-v /opt/hyhal:/opt/hyhal`:挂载DTK运行时库(DTK 23.10以上版本必须) - `--group-add video`:普通用户使用DCU需要加入video组 进入容器后直接 `hy-smi`检查DCU状态,然后就能开始跑模型了【文档5.1】。 ### 七、常见问题速查 **Q:驱动装完重启后DCU不见了?** A:检查BIOS中是否开启了 `nomodeset`启动参数。如果开启了,驱动可能无法正常加载【文档3.1】。 **Q:容器里找不到DCU?** A:检查是否挂载了 `/opt/hyhal`目录,以及 `--device`参数是否正确。6.3.*版本驱动下,还需要挂载 `/sys/kernel/debug`路径。 **Q:`torch.cuda.is_available()`返回False?** A:先确认 `hy-smi`能看到DCU,再确认DTK版本与PyTorch wheel包版本匹配。 **Q:驱动安装时提示 `rev ff`?** A:设备已工作异常,需要硬重启(断电重启)恢复【文档1.1】。 ### 八、总结 从零搭建DCU开发环境,核心就三步: 1. **装驱动**:让DCU硬件被系统识别 2. **装DTK**:获得开发工具和基础库 3. **装DAS**:获得AI框架支持 每一步都有版本匹配的要求——驱动版本要匹配硬件型号【文档1.3】,DTK版本要匹配驱动版本,DAS组件版本要匹配DTK版本【文档4.2.1】。任何一个环节对不上,都可能让你卡上半天。 **如果你只是想快速上手,直接走容器化路线**——拉一个官方镜像,几分钟就能拥有一个完整的DCU开发环境。等跑通了、熟悉了,再回头研究手动部署也不迟。 国产化硬件的发展确实“任重道远”,但工具链正在快速成熟。从驱动到DTK再到DAS,海光DCU的软件栈已经覆盖了从底层到上层的完整链条。剩下的,就是开发者们多踩坑、多填坑,让这条路越走越宽。
全部评论(1)
只看楼主
S
smart12345
1楼
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3 docker pull不下来,怎么办
8/5
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据