问题是什么?
不确定这是否是bug、损坏的硬件还是驱动程序问题,但我想报告一下以防万一。
当Ollama检测到这些卡时,它看到每张卡上有23.7GB可用空间,但在尝试分配内存时,只有3.7GB可用。从服务器日志中可以看到:
time=2024-08-21T17:49:38.582-07:00 level=INFO source=types.go:105 msg="inference compute" id=GPU-92d1b3ad-0ab8-2ece-050e-b4f5252f8098 library=cuda compute=6.1 driver=12.6 name="Tesla P40" total="23.9 GiB" available="23.7 GiB"
time=2024-08-21T17:49:38.582-07:00 level=INFO source=types.go:105 msg="inference compute" id=GPU-7a8dc17e-85e1-5bc8-e230-119d6be5252c library=cuda compute=6.1 driver=12.6 name="Tesla P40" total="23.9 GiB" available="23.7 GiB"
layers.requested=-1 layers.model=81 layers.offload=48 layers.split=3,45 memory.available="[3.7 GiB 23.7 GiB]"
操作系统
Windows
GPU
Nvidia
CPU
Intel
Ollama版本
0.3.6
5条答案
按热度按时间dl5txlt91#
nvidia-smi
的输出是什么?如果你能提供完整的日志,它可能包含一些细节,从而更好地了解正在发生的事情。pes8fvy92#
我正在使用Windows系统。
我已经排除了硬件问题,因为当我改变CUDA_VISIBLE_DEVICES中设备顺序时,加载20GB的卡会发生变化。
我仍然不确定这是否是驱动程序问题,但我已经尝试了CUDA 11.7、12.4、12.6以及P40的一些不同服务器驱动程序,我还尝试了Ollama 0.3.6和0.3.7。
抱歉我现在无法提供截图,但SMI显示的内容与此相同:
llm_load_tensors: CUDA0缓冲区大小 = 920.12 MiB
llm_load_tensors: CUDA1缓冲区大小 = 21536.62 MiB
一张卡将加载20GB,另一张卡将加载约1GB。
这是完整的日志:
server1.log
yr9zkbsy3#
我要求输出
nvidia-smi
的原因是它显示了正在使用GPU的进程。日志显示,其中一个GPU只有3.6GiB可用:如果你能找出哪个卡使用了20G的内存,你可能可以为模型加载腾出一些显存。
hpxqektj4#
就我所知,没有任何东西在使用它,它显示的是1600/24000M。也许它被某些东西预留了,或者Ollama/CUDA没有正确读取它?
昨晚我试图找到解决方案时找到了这张图片,抱歉它没有进程信息。
0s7z1bwu5#
这似乎是由于Quadro K2200引起的,在Windows中禁用它使得模型能够在两张P40上正确加载。
我已经将CUDA_VISIBLE_DEVICES设置为P40的UUID,因此Quadro不应该被检测到,但也许CUDA在这两张卡之间混淆了可用的显存?
不确定您是想要调查票还是想关闭它,但感谢您花时间查看此问题。