ollama 调用 780M

本文最后更新于 2025年2月15日 晚上

最近安装了 ollama 试试本地跑大模型,直接安装了 ollama 以及 ollama-cuda, 然后调用 ollama run deepseek-r1:32b 大概能有 3tps 的速度,主要卡点在 N 卡爆显存。后续听说可以用 AMD核显来跑,并且由于核显直接共享50%的内存,效果还可以,我有96G内存,核显能有48G左右的共享显存,因此不会爆显存了,打算试一下。

前置知识

开机自启与绑定端口

先提一点没用的知识。首先编辑 ollama 的 service文件,更改绑定的地址为 0.0.0.0这样其他应用就可以调用 ollama 了。

1
sudo systemctl edit --full ollama

[Service] 部分加一行

1
Environment="OLLAMA_HOST=0.0.0.0:11434"

然后启动 ollama 并设置开机自启

1
sudo systemctl enable --now ollama

查看输出速率

执行 ollama run deepseek-r1:32b 可以进入命令行交互界面,输入 /set verbose 可以开启 verbose 模式,每次交互完毕会展示一个统计结果,像下面这样,可以比较方便地看到输出速度。

1
2
3
4
5
6
7
8
total duration:       22.90004298s
load duration: 13.334662ms
prompt eval count: 7 token(s)
prompt eval duration: 21ms
prompt eval rate: 333.33 tokens/s
eval count: 74 token(s)
eval duration: 22.864s
eval rate: 3.24 tokens/s

在核显上跑 ollama

官方的 ollama是不支持 780M的,但是群友说有一个第三方分支 AMD_APU_GTT_memory 支持,在官方仓库下也有一个对应PR,我们只要用上游的 PKGBUILD打上这个 patch 即可。

安装好之后再在它的service文件添加一个新的环境变量HSA_OVERRIDE_GFX_VERSION,并重启服务就可以了。注意780M值一定要是11.0.2, 我试了其他的11.0.3, 11.0.1 都不能启动。680M 可以试试这个 PR 里面的值。同时我还按照这个PR加了另外两个环境变量OLLAMA_MAX_LOADED_MODELS=1OLLAMA_NUM_PARALLEL=1(实际测试有没有好像都没有影响)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
systemctl cat ollama.service
# /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
Wants=network-online.target
After=network.target network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
WorkingDirectory=/var/lib/ollama
Environment="HOME=/var/lib/ollama"
Environment="OLLAMA_MODELS=/var/lib/ollama"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="HSA_OVERRIDE_GFX_VERSION=11.0.2"
User=ollama
Group=ollama
Restart=on-failure
RestartSec=3
RestartPreventExitStatus=1
Type=simple
PrivateTmp=yes
ProtectSystem=full
ProtectHome=yes

[Install]
WantedBy=multi-user.target

参考资料


ollama 调用 780M
https://blog.askk.cc/2025/02/15/ollama-with-780M/
作者
sukanka
发布于
2025年2月15日
许可协议