ollama 在AMD APU上,不再考虑全局时钟周期时间(GTT)进行可用内存计算,

llew8vvj  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(15)

问题是什么?

首先,我必须承认,官方不支持在780m GPU上运行。然而,对于某些场景,它比纯CPU表现更好,而在其他场景中,可能更适合在GPU上运行以提高能效。
这也可能对支持更大GPU的版本有关联,正如补丁说明所提到的:

The solution is MI300A approach, i.e., let VRAM allocations go to GTT.
Then device and host can flexibly and effectively share memory resource.

然而,我不得不承认,最后一部分只是我的猜测。
无论如何,6.10内核发布候选版已经改进了GPU内存分配,现在允许计算工作负载利用GTT以及VRAM,而不仅仅是VRAM。更多详细信息请参见here。我相信this是相关的提交。
实际上,这意味着在具有64 GB内存的笔记本电脑上,我可以尝试使用更大的模型。在0.1.45之前,我在日志中看到了以下内容:

level=INFO source=types.go:71 msg="inference compute" id=0 library=rocm compute=gfx1103 driver=0.0 name=1002:15bf total="27.3 GiB" available="27.3 GiB"

虽然这可能仍然不到实际可用的内存数量:

kernel: [drm] amdgpu: 8192M of VRAM memory ready
kernel: [drm] amdgpu: 27940M of GTT memory ready.

但它仍然允许处理大于8 GB且在780m GPU上仍具有合理性能的模型。
在未来能够继续使用额外内存将是很好的。理想情况下,能够访问VRAM + GTT(例如36 GB),那就更好了。
我怀疑this commit引入了一些更改,用于计算可用内存。从0.1.45开始,我在日志中看到了以下内容:

level=INFO source=types.go:98 msg="inference compute" id=0 library=rocm compute=gfx1103 driver=0.0 name=1002:15bf total="8.0 GiB" available="6.4 GiB"

新的可用内存计算方法更好地确定了实际可用的空闲内存,但理想情况下,如果能够将其与VRAM + GTT一起运行计算就更好了。

操作系统

架构(6.10.0-rc6-1-mainline) + docker容器

GPU

AMD

CPU

AMD

Ollama版本

0.1.48-rocm

uemypmqf

uemypmqf1#

在最新的Arch上,也可以使用Radeon 680m重现此问题。

相关问题