ollama 调度器应该尊重多GPU设置中的主GPU,

dvtswwa3  于 23天前  发布在  其他
关注(0)|答案(3)|浏览(13)

问题是什么?

主GPU选项没有按预期工作。

我的系统有两个GPU。我向/api/chat发送了请求。

期望行为:模型加载在我的第二个GPU(即GPU 1)上。

实际行为:无论main_gpu是0还是1,模型总是加载在我的第一个GPU(即GPU 0)上。

P.S. 这个模型可以自己适应任何GPU,一个GPU就足够加载所有的权重。

我知道我可以通过设置CUDA_VISIBLE_DEVICES来指定要使用的GPU,就像#1813建议的那样。

但是使用环境变量不如请求中的参数灵活(每个请求都可以调整)。

也许这个参数没有正确传递给llama.cpp,或者llama.cpp没有像我们预期的那样选择GPU?

操作系统

Docker

GPU

Nvidia

CPU

AMD

Ollama版本

0.3.6

ff29svar

ff29svar1#

服务器日志可能会揭示main_gpu为何表现不如预期的原因。

tjrkku2a

tjrkku2a2#

两个GPU已经被检测到:

time=2024-08-24T22:31:39.601Z level=INFO source=types.go:105 msg="inference compute" id=GPU-d1fa0558-2f75-4c4b-0720-8d90d6b01898 library=cuda compute=8.6 driver=12.6 name="NVIDIA GeForce RTX 3060" total="12.0 GiB" available="11.0 GiB"
time=2024-08-24T22:31:39.601Z level=INFO source=types.go:105 msg="inference compute" id=GPU-b18a7f7a-1c7f-15b3-064d-6596d1a63015 library=cuda compute=8.6 driver=12.6 name="NVIDIA GeForce RTX 3060" total="12.0 GiB" available="11.0 GiB"

我传递了 "main_gpu": 1 指定的请求,这应该是 b18a7f7a-1c7f-15b3-064d-6596d1a63015
但是接下来是:

time=2024-08-24T22:31:54.211Z level=DEBUG source=memory.go:101 msg=evaluating library=cuda gpu_count=1 available="[11.0 GiB]"
time=2024-08-24T22:31:54.211Z level=INFO source=sched.go:710 msg="new model will fit in available VRAM in single GPU, loading" model=/root/.ollama/models/blobs/sha256-cc04e85e1f866a5ba87dd66b5260f0cb32354e2c66505e86a7ac3c0092272b7d gpu=GPU-d1fa0558-2f75-4c4b-0720-8d90d6b01898 parallel=4 available=11793334272 required="9.7 GiB"
time=2024-08-24T22:31:54.211Z level=DEBUG source=server.go:101 msg="system memory" total="31.3 GiB" free="26.1 GiB" free_swap="16.0 GiB"
time=2024-08-24T22:31:54.211Z level=DEBUG source=memory.go:101 msg=evaluating library=cuda gpu_count=1 available="[11.0 GiB]"
time=2024-08-24T22:31:54.211Z level=INFO source=memory.go:309 msg="offload to cuda" layers.requested=-1 layers.model=33 layers.offload=33 layers.split="" memory.available="[11.0 GiB]" memory.required.full="9.7 GiB" memory.required.partial="9.7 GiB" memory.required.kv="1.0 GiB" memory.required.allocations="[9.7 GiB]" memory.weights.total="7.9 GiB" memory.weights.repeating="7.4 GiB" memory.weights.nonrepeating="532.3 MiB" memory.graph.full="560.0 MiB" memory.graph.partial="677.5 MiB"

这意味着它正在尝试使用 d1fa0558-2f75-4c4b-0720-8d90d6b01898 (而不是gpu 1)加载权重。

btxsgosb

btxsgosb3#

调度程序目前不会解释main_gpu设置以进行GPU选择。您可以通过GPU供应商特定的环境变量来过滤GPU。

相关问题