海光 DUC 环境(海光 DCU K100_AI)部署 ollama+deepseek

看到 ZEEKLOG 上好多的这个部署流程不是要收费就是写的不清不楚,所以决定将我的部署流程写出来,明明所有的官方文档都是免费的。

“不太懂为什么吃了别人免费的饭,现在拉出来的屎要收费!”

声明:本人不是专业运维实施人员,所有的流程都是靠试或直觉,还有一点点的知识

正式开始:

系统:Kylin Linux Advanced Server V10(Lance)

CPU:海光 C86 7360(24 核)

内存:256GB

内核:Linux-4.19.90-52.48.v2207.ky10.x86_64

显卡:海光 DCU K100_AI(Co-processor)

1. 环境部署

1.1 驱动安装

光合开发者社区下载驱动

通过显卡型号选择驱动

驱动版本

支持硬件

推荐DTK版本

rock-4.0-23-5.6.25

Z100/Z100L

21.04/21.10/22.04

rock-4.5.2-5.11.40

Z100/Z100L

22.04/22.10/23.04

rock-5.2.0-5.16.18

Z100/Z100L

22.10/23.04

rock-5.2.0-5.16.29

Z100/Z100L/K100

23.04/23.10

rock-5.7.1-6.2.26+

Z100/Z100L/K100/K100-AI

24.04/25.04

rock-6.3.8+

BW1000/K100-AI/K100/Z100L/Z100

25.04

安装驱动环境

centos:yum install -y rpm-build gcc-c++ cmake automake elfutils-libelf-devel libdrm libdrm-devel pciutils ubuntu:apt install -y gcc g++ cmake automake libelf-dev libdrm_amdgpu1或libdrm-amdgpu1 libtinfo5 pciutils libdrm-dev Centos:yum install -y kernel-devel-`uname -r` kernel-modules-extra ubuntu:apt install -y linux-headers-`uname -r` linux-modules-extra
chmod +x rock*.run systemctl restart hymgr
我这里选择安装 6.2.x 以下的驱动,因为 6.2.x 以上的驱动标识为hycu,以下的标识为hydcu,ollama 检测驱动时会检测标识为hydcu的驱动,如果安装新的会出现找不到 GPU 的问题。

以上内容是通过 ollama 日志猜测。。。
光合官方备注:

1)新版本驱动依赖cmake版本要高于3.2,gcc版本要大于7.3

2)kernel 版本要与kernel-devel版本一致

3)6.2.以前的驱动显示的模块名称是hydcu,6.3.以后的驱动模块是hycu。

4)6.3.*驱动下,docker调用时,推荐挂载/sys/kernel/debug路径,不然,容器内无法获取到dcu进程信息

1.2 DCU 环境安装

https://sourcefind.cn/#/image/dcu/pytorch?activeName=overview

拉取镜像要注意dtk的版本要跟你自己驱动的版本相匹配,上面有对应版本的表格,尽量新一点

推荐容器化部署,如果手动安装坑太多了!

docker run \ --shm-size 64g \ --network=host \ --name=test \ --privileged \ --device=/dev/kfd \ --device=/dev/dri \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ -v {宿主机工作目录}:/home/ \ -v /opt/hyhal:/opt/hyhal:ro \ --it {镜像 id} bash
  • --shm-size 64g
    • 缓存区大小,默认好像是 64M
容器化部署就是这么简单,有兴趣可以了解下手动部署的流程

2. ollama 安装

进入容器内部 docker exec -it test bash

https://sourcefind.cn/#/model-zoo/1888167889015537665

下载模型和 ollma 用到的inference文件

cd inference pip install -r requirements.txt

这里有警告不要紧,因为有些环境在容器中已经包含,再次安装就是会有警告

2.1 编译 ollama

因为 ollama 默认适配的是英伟达的 CUDA 架构,并没有默认适配海光,所以还是得从光源下载

http://developer.sourcefind.cn/codes/OpenDAS

# 注意,这里的代码版本和 go 的版本是强绑定的,这里如果更换,下面的流程就会发生变化!!! git clone -b 0.5.7 http://developer.sourcefind.cn/codes/OpenDAS/ollama.git --depth=1 cd ollama # 编译 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 PATH=$PATH:/usr/local/go/bin # 修改go下载源,提升速度(按需设置) go env -w GOPROXY=https://goproxy.cn,direct # 运行编译 export LIBRARY_PATH=/opt/dtk/lib:$LIBRARY_PATH make -j 16 go build .

这时 ollama 文件夹中会出现一个 ollama 可执行文件

2.2 运行

设备可以通过 rocminforocm-smi查询

export HSA_OVERRIDE_GFX_VERSION=设备型号(如: Z100L gfx906对应9.0.6;K100 gfx926对应9.2.6;K100AI gfx928对应9.2.8) # 例如 export HSA_OVERRIDE_GFX_VERSION=9.2.8 export ROCR_VISIBLE_DEVICES=显卡序号(0,1,2,3,4,5,6,...) # 例如 export ROCR_VISIBLE_DEVICES=0,1,2,3 ./ollama serve # 另开一个窗口 ./ollama run deepseek-r1:14b

注意:ollama 启动后,要确认显卡启用,ollama 日志中会有

测试是否可以正常使用

curl http://localhost:11434/api/chat -d '{"model":"deepseek-r1:14b","messages":[{"role":"user","content":"为什么天空是蓝色的?"}]}' curl http://localhost:11434/api/generate -d '{"model":"deepseek-r1:14b","prompt":"为什么天空是蓝色的?"}' curl http://172.30.0.217:11434/api/chat -d '{"model":"deepseek-r1:14b","messages":[{"role":"user","content":"为什么天空是蓝色的?"}]}' curl http://172.30.0.217:11434/api/generate -d '{"model":"deepseek-r1:14b","prompt":"为什么天空是蓝色的?"}'

如果其它服务器无法访问,添加环境变量

OLLAMA_HOST=0.0.0.0:11434

# 监听所有 ip,默认监听 127.0.0.1:11434

3. 制作 docker 镜像

为了方便使用,这里将已经成功运行并已经部署好 ollama 和模型的容器只作为镜像

docker commit \ --change 'ENV PATH=$PATH:/usr/local/go/bin' \ --change 'ENV LIBRARY_PATH=/opt/dtk/lib:$LIBRARY_PATH' \ --change 'ENV HSA_OVERRIDE_GFX_VERSION=9.2.8' \ --change 'ENV ROCR_VISIBLE_DEVICES=0' \ --change 'CMD ["/workspace/ollama/ollama", "serve"]' \ test dcu-ollama-deepseek:0.0.1

运行:dcu-ollama-deepseek:0.0.1

docker run \ -d \ --restart=always \ --shm-size 64g \ --network=host \ --name=ollama \ --privileged \ --device=/dev/kfd \ --device=/dev/dri \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ -e OLLAMA_HOST=0.0.0.0:11434 \ -v /usr/local/develop/data/ollama:/home/ \ -v /opt/hyhal:/opt/hyhal:ro \ dcu-ollama-deepseek:0.0.1

4. 参考

https://developer.sourcefind.cn/tool

https://developer.sourcefind.cn/gitbook//dcu_tutorial/#15

https://sourcefind.cn/#/image/dcu/pytorch?activeName=overview

https://download.sourcefind.cn:65024/6/main/

https://sourcefind.cn/#/model-zoo/1888167889015537665

国产化硬件任重道远,我们开发的关键是要保持好心态,耐心点,总能将问题解决🙂

Read more

ComfyUI是什么?当AI绘画遇上“连连看”,专业创作原来可以如此简单!

目录 一、开篇明义:什么是ComfyUI? 二、核心设计哲学:为什么选择节点式工作流? 1. 完全透明化的生成过程 2. 可保存、可分享、可复用的工作流 3. 精细到极致的参数控制 三、ComfyUI技术架构剖析 1.核心组件详解 2.性能优势解析 四、实际应用场景:谁需要ComfyUI? 1. AI艺术创作者 2. 产品设计与原型开发 3. 教育与研究 4. 商业内容生产 用流程图玩转Stable Diffusion,揭开AI绘画的神秘面纱 一、开篇明义:什么是ComfyUI? 如果你曾对AI绘画感到好奇,或已经尝试过Midjourney、Stable Diffusion WebUI等工具,那么ComfyUI将为你打开一扇全新的门。这不是又一个“输入文字出图片”的简单工具,而是一个可视化节点编辑器,专门为Stable Diffusion设计。

如何轻松分析大疆无人机信号?DJI DroneID 信号解析工具全指南

如何轻松分析大疆无人机信号?DJI DroneID 信号解析工具全指南 🛸 【免费下载链接】dji_droneid 项目地址: https://gitcode.com/gh_mirrors/dj/dji_droneid DJI DroneID 信号分析项目(dji_droneid)是一个开源工具集,专为无人机爱好者和研究人员设计,通过软件定义无线电(SDR)技术捕获、解码和分析大疆无人机发射的DroneID信号。该项目提供完整的信号处理流程,从原始IQ数据捕获到最终数据帧解析,支持Octave和MATLAB环境运行,帮助用户深入理解无人机通信机制。 📌 项目核心功能与技术架构 🔍 信号捕获与处理全流程 项目实现了从射频信号到数据帧的完整解析链路,主要包括: * 原始信号采集:支持32位浮点IQ数据文件输入(需配合SDR设备录制) * ZC序列检测:通过归一化互相关算法定位信号中的Zadoff-Chu序列 * 频率校正:自动检测并补偿信号中的频率偏移 * OFDM符号提取:精准提取9个OFDM符号(含2个ZC序列符号) * 相位校正与均衡:解决无线信道引入的

5步实现ESP32无人机合规识别:ArduRemoteID开源方案详解

5步实现ESP32无人机合规识别:ArduRemoteID开源方案详解 【免费下载链接】ArduRemoteIDRemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID 面临FAA无人机识别法规的合规难题?ArduRemoteID为您提供完整的开源无人机识别解决方案。这个基于ESP32芯片的开源项目,通过实现MAVLink和DroneCAN协议的OpenDroneID发射器,帮助无人机爱好者轻松满足RemoteID法规要求。 硬件选择与连接指南 ArduRemoteID支持ESP32-S3和ESP32-C3两种主流芯片,兼容7种开发板。推荐使用ESP32-S3开发板,其引脚配置如下: * UART TX引脚:18 * UART RX引脚:17 * CAN TX引脚:47 * CAN RX引脚:38 通过USB连接到标有"UART"的端口用于MAVLink通信和调试,或通过UART连接到飞行控制器的RX(17)/TX(18)/GND引脚。CAN连

基于FPGA的信号发生器LVDS接口调试指南

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI生成痕迹,强化工程语感、逻辑连贯性与教学引导力;摒弃模板化标题与空泛总结,代之以自然演进的技术叙事节奏;所有关键概念均辅以真实设计取舍、调试陷阱与经验判断,确保读者不仅“看懂”,更能“用上”。 FPGA信号发生器LVDS接口实战手记:从电平失配到眼图张开的全链路调优 去年调试一台16-bit/1.2 GS/s的FPGA信号发生器原型机时,我遇到一个典型却棘手的问题:DAC输出波形在200 MHz以上开始明显畸变,频谱底噪抬升8 dB,但示波器上看LVDS差分信号“一切正常”——幅度够、边沿快、没振铃。直到用BERTScope抓出眼图,才发现问题藏在 共模电压缓慢漂移 里:V CM 从上电时的1.18 V,30分钟后爬升到1.31 V,刚好逼近AD9164接收器的共模上限(1.35 V),导致高电平判决裕量持续压缩。 这件事让我意识到:LVDS不是“接上就能跑”