一、使用ollama部署
下载镜像
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-py3.10-dtk24.04.3-ubuntu20.04
启动容器
docker run --shm-size 50g --network=host --name={容器名} \
--privileged --device=/dev/kfd --device=/dev/dri \
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
-v /opt/hyhal:/opt/hyhal:ro \
-v /home/ollama:/ollama \
--env HIP_VISIBLE_DEVICES=0,1,2,3 \
-it image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-py3.10-dtk24.04.3-ubuntu20.04 bash
我有四张卡所以是HIP_VISIBLE_DEVICES=0,1,2,3,根据自己情况来。
在Docker环境里面,进入/ollama,下载源码
git clone -b 0.5.7 http://developer.sourcefind.cn/codes/OpenDAS/ollama.git --depth=1
cd ollama
编译
安装go
wget https://golang.google.cn/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:

运行
export HSA_OVERRIDE_GFX_VERSION=9.2.8(如: Z100L gfx906对应9.0.6;K100 gfx926对应9.2.6;K100AI gfx928对应9.2.8)
export ROCR_VISIBLE_DEVICES=0,1,2,3(0,1,2,3,4,5,6,...)/选择设备号
./ollama serve (选择可用设备,可通过上条命令输出结果查看)
创建容器
docker commit {上面的容器名} {临时容器名(我用的是tmp)}
在宿主机新建新建Dockerfile
FROM tmp
ENV HSA_OVERRIDE_GFX_VERSION=9.2.8
ENV ROCR_VISIBLE_DEVICES=0,1,2,3
ENV PATH="/home/ollama/ollama:${PATH}"
ENV OLLAMA_MODELS="/home/ollama/models/"
ENV OLLAMA_HOST=0.0.0.0:{端口号}
ENTRYPOINT ["/home/ollama/ollama"]
CMD ["serve"]
docker build -t ollama {你的Dockerfile路径} #ollama可替换为你的自定义容器名
docker run --shm-size 100g --network=host --name=ollama \
--privileged --device=/dev/kfd --device=/dev/dri \
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
-v /opt/hyhal:/opt/hyhal:ro \
-v /home/ollama/:/home \
-v /home/ollama/models/:/home/models \
-d ollama
进入容器并测试ollama是否运行
docker exec -it ollama bash
ollama -v
然后运行qwq-32B,这里采用默认的Q4
ollama run qwq
二、使用vLLM部署
下载镜像
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.5.0-dtk24.04.1-ubuntu20.04-py310-zk-v1
下载模型
从ModelScope下载。
1、安装ModelScope
pip install modelscope
2、下载DeepSeek-R1-Distill-Llama-70B
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Llama-70B --local_dir /下载目录
启动容器
docker run --shm-size 50g --network=host --name=DeepSeek-R1-Distill-Llama-70B \
--privileged --device=/dev/kfd --device=/dev/dri \
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
-v /opt/hyhal:/opt/hyhal:ro \
-v {本地模型目录}:/models:ro \
--env HIP_VISIBLE_DEVICES=0,1,2,3 \
-it image.sourcefind.cn:5000/dcu/admin/base/custom:vllm0.5.0-dtk24.04.1-ubuntu20.04-py310-zk-v1 bash
注:四块卡使用,HIP_VISIBLE_DEVICES=0,1,2,3(根据实际调整)
shell断开后进入容器:
docker exec -it DeepSeek-R1-Distill-Llama-70B bash
进入容器后使用rocm-smi查询DCU
启动vLLM
配置环境变量
export NCCL_DEBUG=info
export NCCL_P2P_DISABLE=1
export HSA_FORCE_FINE_GRAIN_PCIE=1
启动
python -m vllm.entrypoints.openai.api_server \
--model /models/DeepSeek-R1-Distill-Llama-70B \
--dtype float16 \
--trust-remote-code \
--gpu-memory-utilization 0.98 \
--tensor-parallel-size 4 \
--max-num-seqs 32 \
--max-model-len 20000
参数说明:
| 参数 | 解释说明 |
|---|---|
--model /models/DeepSeek-R1-Distill-Llama-70B |
指定加载的模型路径 |
--dtype float16 |
推理时使用半精度浮点数(FP16),降低显存占用 |
--trust-remote-code |
允许执行模型目录下的自定义Python代码(需注意安全性) |
--gpu-memory-utilization 0.98 |
指定GPU显存占用率为98%,提高显存利用效率 |
--tensor-parallel-size 4 |
模型权重4卡并行加载 (tensor parallel) |
--max-num-seqs 32 |
API同时处理的最大并发请求数量 |
--max-model-len 20000 |
单次请求中模型能处理的最大token数量 |