Ollama 不会自动在所有 GPU 上工作,

mnowg1ta  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(35)

问题:当我使用ollama:0.1.38时,我使用以下命令启动:

`docker run -d --gpus=all -v /root/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama`

ollama会自动使用所有4个GPU卡进行推理。

当我升级到ollama:0.1.48时,我使用相同的命令,但它只使用1个GPU进行推理:


![](//img.saoniuhuo.com/images/202407/31901721622521241.jpg)

我记得运行的'Processes'不是'...unners/cuda_v11/ollama_llama_server',而应该是"ollama/ollama"或其他什么。

为什么会这样?

另外,当我使用

`docker run -d --gpus=all -v /root/ollama:/root/.ollama -p 11434:11434 -e OLLAMA_SCHED_SPREAD=1 --name ollama ollama/ollama:0.1.48` 

强制它使用所有4个GPU进行推理时,我注意到四个GPU卡的组合利用率不会达到100%,更不用说400%了。

这是监控到的GPU使用情况:

[gpu_usage.csv](https://github.com/user-attachments/files/16081349/gpu_usage.csv)

我认为ollama没有充分利用GPU资源。为什么呢?

lawou6xi

lawou6xi1#

请确认模型是否已完全加载到一个GPU上?如果是,这是预期的行为。如果模型适合使用单个GPU,Ollama将使用单个GPU,因为在多个GPU之间拆分模型会带来性能损失。这使其他GPU可用于其他模型。
如果您确实希望将其分布在所有GPU上,可以通过环境变量OLLAMA_SCHED_SPREAD=1禁用此行为。

sxpgvts3

sxpgvts32#

您能否确认模型是否已完全加载到一个 GPU 上?如果是,这是预期的行为。如果模型合适,Ollama 将使用单个 GPU,因为将模型拆分到多个 GPU 上会导致性能下降。这样可以释放其他 GPU 以用于其他模型
如果你确实希望它分布在所有 GPU 上,则可以使用环境变量禁用此行为 OLLAMA_SCHED_SPREAD=1
模型已完全加载到一个 GPU 上。在我的使用场景中,可能有数百人使用 Ollama,因此我希望尽可能多地使用 GPU 来减少推理时间。但实际上,我注意到,如果我强制将模型分布在所有 GPU 上,单个推理的时间会增加(尚未与许多用户测试过)。在这种情况下,您有什么好的建议吗?

klr1opcd

klr1opcd3#

请确认模型是否已完全加载到一个GPU上?如果是,这是预期的行为。如果模型适合使用单个GPU,Ollama将使用单个GPU,因为在多个GPU之间拆分模型会产生性能损失。这使得其他GPU可用于其他模型。

如果您确实希望将其分布在所有GPU上,可以通过环境变量OLLAMA_SCHED_SPREAD=1禁用此行为。此外,当我运行具有大量参数的模型(例如,qwen2-72b)时,Ollama的推理速度较慢,但4个GPU的组合使用率远未达到400%,最多约为120%。为什么会这样?您能给我一些优化建议吗?

相关问题