使用Ollama在780M核显上跑大模型
很多人在咨询Ollama在780M核显上跑大模型的问题,今天我就来教大家如何去操作
首先,这份教程的关键在于Rocm,以及Ollama的Rocm镜像,所以他比传统的使用vulkan速度来的更快
在正式进入教程前,需要先确定几点:
- 您是否具备一定的动手能力,在Linux上安装Rocm库
- 您是否懂得一定Docker运行规则
- 请确认在BIOS中,您的显存设置为大于6G
============= 正式开始 =============
安装Rocm的驱动
-
在安装驱动前,我们需要先确定机器的GPU识别状态
lspci -nn | grep -i radeon

参考上图,我的机器识别到了GPU的状态
-
判断机器的内核版本大于5.15
uname -r
一般来说,大家都是在飞牛上运行,所以这一步大家可以省略
-
添加Rocm仓库
wget -qO - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ jammy main' | sudo tee /etc/apt/sources.list.d/rocm.list
-
安装Rocm驱动
sudo apt update
sudo apt install rocm-dkms
-
查询安装状态
rocm-smi

如果安装完成,没有报错的话,应该可以在控制台查询到这样的信息
Docker运行Ollama
废话不多说,直接上yarm
services:
ollama:
image: ollama/ollama:rocm # 使用 ROCm 专用镜像
container_name: ollama
environment:
- HSA_OVERRIDE_GFX_VERSION=11.0.0 # 强制识别为 gfx1100
- HIP_VISIBLE_DEVICES=0
- OLLAMA_GPU_LAYERS=all
- HSA_ENABLE_SDMA=1
- OLLAMA_MMAP=1
- OLLAMA_DEVICE=rocm
- OLLAMA_GPU_LAYERS=35
devices:
- "/dev/kfd:/dev/kfd"
- "/dev/dri:/dev/dri"
- "/dev/dri/card0:/dev/dri/card0"
- "/dev/dri/renderD128:/dev/dri/renderD128"
ports:
- "11434:11434" # API 端口
volumes:
- "/vol1/1000/docker/ollama/models:/root/.ollama"
测试是否使用GPU运行
先看图

这里我们重点关注最后几句
time=2025-08-15T08:41:40.036Z level=INFO source=amd_linux.go:389 msg="skipping rocm gfx compatibility check" HSA_OVERRIDE_GFX_VERSION=11.0.0
time=2025-08-15T08:41:40.036Z level=INFO source=types.go:130 msg="inference com**" id=0 library=rocm variant="" com**=gfx1103 driver=0.0 name=1002:1900 total="6.0 GiB" available="5.9 GiB"
library=rocm avaible=5.9GiB
出现这两句,就说明我们的Ollama以及使用Rocm库来加载了。
运行大模型

我是直接在终端中运行了qwen3:8b模型
ollama run qwen3
大家如果如果网络速度不快的话,应该需要等待几分钟下载模型,等出现>>>时,就可以在终端中进行对话了
测试CPU/GPU占用率

通过上述图片,我们可以看到CPU占用率仅为10%,但是GPU占用率却一直为0,这是没有调用成功吗?
别着急,我们慢慢分析...
我们通过命令行来查询,发现GPU是由占用的,所以,应该是飞牛的GPU统计不准确导致的
rocm-smi

总结
以上的实践,我们发现了几个问题
- 飞牛的GPU占用很低,是不是没有用到GPU去运行?
- 显存占用一直很少,是不是没有用到显卡去运行啊?
- 既然没有用到显存,为什么还要在BIOS中设置显存大小?
我们一个一个的来讲
首先呢,GPU肯定是用到了,大家可以使用CPU去运行大模型,然后两个做一个对比
services:
ollama:
image: ollama/ollama:rocm # 使用 ROCm 专用镜像
container_name: ollama-cpu
ports:
- "11434:11434" # API 端口
volumes:
- "/vol1/1000/docker/ollama/models:/root/.ollama"

不难看出来,使用CPU运行大模型时,CPU的占用率明显很高
那么显存占用是怎么回事啊,大模型不是依赖显存来运行的吗?
没错,一般来说,PCI接口的显卡确实是加载到显存中的,但是,统一内存架构就这点好处
既然内存可以分配作为显存,那么是不是直接可以从内存中获取数据呢?
最后一个问题,既然APU使用统一内存,为什么还要设置显存大小?
这就是一个BUG,Ollama在加载模型之前,都要判断一下显存是不是够用,不够的时候,直接就用CPU去执行了。期待Ollama尽快fix这个问题吧