Ollama与海光DCU(K100-AI)的深度适配实践指南

发布时间:2026/7/31 0:03:35

Ollama与海光DCU(K100-AI)的深度适配实践指南 1. 环境准备海光DCU驱动安装与验证海光DCUK100-AI作为国产高性能计算卡需要先完成基础驱动部署。这里以Ubuntu 20.04为例实测在CentOS 7.6上同样适用。首先安装必备工具链sudo apt update sudo apt install -y gcc g cmake automake libelf-dev libdrm-amdgpu1 libtinfo5 pciutils libdrm-dev linux-headers-$(uname -r) linux-modules-extra-$(uname -r)驱动安装包需要从海光官方获取最新版本当前推荐rock-dkms_5.6.5.20-1_amd64.deb。安装时特别注意内核版本匹配问题我遇到过因内核自动更新导致驱动失效的情况建议锁定内核版本sudo apt-mark hold linux-image-$(uname -r) sudo dpkg -i rock-dkms_5.6.5.20-1_amd64.deb安装完成后必须重启hymgr服务并验证设备识别sudo systemctl restart hymgr hy-smi正常情况会显示类似以下信息----------------------------------------------------- | DCU ID | 温度 | 功耗 | 显存使用 | 计算核心利用率 | ----------------------------------------------------- | 0 | 45℃ | 65W | 2.3GB | 12% |注意若出现Failed to initialize libdrm错误需检查/dev/kfd设备权限建议将用户加入video组sudo usermod -aG video $USER2. Docker环境配置实战技巧海光DCU的Docker支持需要特殊配置才能发挥性能。推荐使用官方提供的pytorch基础镜像docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3-ubuntu20.04启动容器时这几个参数至关重要docker run --shm-size 500g \ --networkhost \ --privileged \ --device/dev/kfd \ --device/dev/dri \ --group-add video \ -v /opt/hyhal:/opt/hyhal:ro \ -it IMAGE_ID bash实测中发现三个常见问题共享内存不足当模型较大时需调整--shm-size建议不小于500GB设备权限问题必须挂载/dev/kfd和/dev/dri设备库路径缺失需绑定只读挂载/opt/hyhal目录进入容器后建议立即验证DCU状态cd /opt/hyhal/bin ./hy-smi3. Ollama编译与适配细节Ollama的DCU适配版本需要从源码编译。这里分享几个加速编译的技巧git clone -b 0.5.7 http://developer.sourcefind.cn/codes/OpenDAS/ollama.git --depth1 wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz关键环境变量设置直接影响性能export LIBRARY_PATH/opt/dtk/lib:$LIBRARY_PATH export HSA_OVERRIDE_GFX_VERSION9.2.8 # K100-AI专用 export ROCR_VISIBLE_DEVICES0,1 # 指定使用的DCU编号编译优化参数make -j $(nproc) GOFLAGS-ldflags-s -ldflags-w CGO_CFLAGS-O3 -marchnative踩坑记录曾因未设置HSA_OVERRIDE_GFX_VERSION导致性能下降50%务必通过rocminfo确认设备架构版本。4. 性能调优实战方案经过多次测试总结出针对K100-AI的黄金配置组合环境变量优化export HSA_ENABLE_SDMA0 # 禁用SDMA引擎 export HIP_LAUNCH_BLOCKING1 # 同步执行模式 export HCC_AMDGPU_TARGETgfx928 # 显式指定目标架构启动参数建议./ollama serve --numa 1 --ctx-size 4096 --batch-size 512性能对比测试结果配置项默认值优化值QPS提升batch_size25651238%numa策略自动绑定22%线程数自动物理核数15%实测在7B模型上的显存占用优化默认配置14.2GB/DCU优化后9.8GB/DCU关键监控命令watch -n 1 hy-smi | grep -E 温度|利用率5. 典型问题排查指南问题1模型加载失败现象报错failed to allocate memory 解决方案export HSA_OVERRIDE_GFX_VERSION9.2.8 export ROCR_VISIBLE_DEVICES0 # 单卡调试问题2计算精度异常修改~/.ollama/config.json{ compute_precision: fp16, disable_tensor_cores: false }问题3PCIe带宽瓶颈检查方法lspci -vvv | grep -i amd | grep LnkSta正常应显示Width x16, Speed 16GT/s日志分析技巧journalctl -u hymgr -f # 查看DCU驱动日志 grep -i error /var/log/ollama.log # 筛选错误信息6. 生产环境部署建议对于多DCU卡服务器推荐采用以下拓扑结构----------------------- | Load Balancer | ---------------------- | ----------v------------ | Ollama Cluster | | (1实例/DCU) | -----------------------系统参数调优echo 1 /proc/sys/vm/overcommit_memory echo 80 /proc/sys/vm/dirty_ratio ulimit -n 655350容器化部署的systemd服务示例[Unit] DescriptionOllama DCU Service Afterdocker.service [Service] ExecStart/usr/bin/docker run --runtimedcu --shm-size500g ollama-dcu Restartalways [Install] WantedBymulti-user.target稳定性测试方案stress-ng --matrix 0 -t 1h # 内存压力测试 fio --namerandread --ioenginelibaio --rwrandread --bs4k --numjobs16 --size10G --runtime60 # IO测试

相关新闻