问题是什么?
目前在一个项目中,我们正在与LLM集成,并在容器中使用Ollama与phi3:mini模型作为本地测试环境。该项目最初使用的是版本0.1.48,可以在一个相当小的虚拟机上运行,非常适合本地测试,只需2.8GB的RAM。然而,升级到v0.2后,Ollama现在至少需要5.6GB的RAM才能运行相同的模型。这意味着在0.1.48和0.2.6之间运行相同模型所需的内存增加了2.8GB。对于所有0.2.+版本,这个问题可能只从0.2.4版本开始报告。这看起来几乎像是模型被加载了两次到内存中。
没有模型的容器仅占用28MB的RAM。
有一个同事在Windows上运行相同的项目,他没有看到不同模型之间RAM使用量之间的增加。
操作系统
macOS
GPU
Apple
CPU
Apple Silicon M3
Ollama版本
0.2.6
4条答案
按热度按时间l7wslrjt1#
服务器日志可能有助于诊断问题。
yb3bgrhw2#
这很有道理,但我最初没有包括它们,因为它们似乎没有任何额外的细节。但是我再次查看它们时发现了一些东西。所以感谢提醒我添加日志。
我注意到以下日志消息
updating default concurrency" OLLAMA_MAX_LOADED_MODELS=3 gpu_count=1
。所以决定看看如果我设置OLLAMA_MAX_LOADED_MODELS=1
会发生什么。什么都没有发生,但是设置OLLAMA_NUM_PARALLEL=1
确实有帮助,现在它消耗的内存与之前的 0.2.x 版本相同。这很有道理,因为 0.2.x 确实引入了并行模型。我尝试使用不同的
OLLAMA_NUM_PARALLEL
值进行操作,每次递增都会消耗更多的 RAM。默认值 0 似乎实际上意味着 4,因为它消耗的 RAM 与最初报告的相同。这可能是预期的行为,但可以认为将默认值设为 4 是不必要的,因为我假设大多数人在任何给定时间只会运行一个模型。另外,既然 0.1.x 没有并行性?
带有默认值的调试日志如下:
2fjabf4q3#
FAQ说
The maximum number of parallel requests each model will process at the same time. The default will auto-select either 4 or 1 based on available memory
,所以似乎要由用户适当地设置这个参数以获得确定性行为。jq6vz3qz4#
这解释了我所看到的行为。但同时也提出了一个问题,即自动缩放行为是否应该进行一些调整。
5 GB的可用内存对于任何模型来说都是较低的。因此,在这种情况下最多允许4个并行模型运行有点过多,因为它目前会消耗超过一半的内存,甚至阻止加载最小的模型之一。
但是正如你所写的,用户可以为这样的场景定义这个设置,这解决了我当前的问题。如果你发现没有必要进行任何更改,那么我可以继续关闭这个问题。