问题是什么?
我们在运行RTX-4000的GPU服务器上尝试使用Ollama,该服务器每天会收到来自后端的10000多个请求,同时最多可以并行处理2-5个请求。
不幸的是,随着时间的推移,每个请求的持续时间越来越长,最终导致进程无限挂起,消耗了200%的CPU + 100%(两个进程"ollama_lama_server",其中94%在GPU上运行)。
在此期间,由"ollama run ..."运行的新示例响应速度很快,但旧进程只是挂起。
我们在开发过程中从未遇到过这个问题,当时相同的脚本可以在48小时内无任何问题地运行。
目前,我们运行一个cronjob,每20分钟重启一次Ollama进程作为解决方法。
我们在0.3.4版本中遇到了这个问题,而在0.3.6版本中仍然存在。有人遇到过同样的问题吗?还有其他解决方法吗?
更多详细信息可以在这里找到:#6380(评论)
操作系统
Linux
GPU
Nvidia
CPU
Intel
Ollama版本
0.3.6
6条答案
按热度按时间gzszwxb41#
服务器日志有助于调试。如果
OLLAMA_NUM_PARALLEL=1
,它会进入这个状态吗?CPU进程的大小是否会随着时间的推移而增加?zqry0prt2#
感谢@rick-github!
对此表示歉意——现在正在调查中
tp5buhyn3#
OLLAMA_NUM_PARALLEL=1
@rick-github 我应该在什么时候和在哪里应用这个设置?
cl25kdpy4#
我今天进行了大量测试,并在使用基于FastAPI的Python API(从Hetzner的RTX 4000)在GPU机器上运行时遇到了Ollama模型的问题。以下是详细的观察:
设置
我使用FastAPI构建了一个API,该API直接在GPU上运行uvicorn。相关的API端点如下:
观察
单个客户端性能:
当我运行一个客户端示例时,该客户端向API发送数千个顺序请求,系统在数小时内可靠且无问题地运行。
多个客户端性能:
当我启动其他客户端示例并并行执行请求时,问题就出现了:
系统间歇性地恢复正常操作,直到我启动了第四个客户端示例。
系统死锁:
无法终止Python应用程序:
ollama run llama3.1
手动运行新示例并发出简单的“hello”命令,响应延迟但最终返回了*“你好,很高兴见到你”*。其他进程仍然处于僵持状态且“挂起”。假设
似乎多个Ollama调用导致死锁或某种形式的资源竞争,导致进程锁定在高GPU利用率状态。此问题需要重新启动Ollama服务以恢复正常操作。
gtlvzcf85#
OLLAMA_NUM_PARALLEL=1
@rick-github 我应该在什么时候和在哪里应用这个设置?
这取决于你是如何安装的ollama。如果你使用的是
curl -fsSL https://ollama.com/install.sh | sh
,那么在文件/etc/systemd/system/ollama.service的[Service]部分中添加一行Environment="OLLAMA_NUM_PARALLEL=1"
,然后重启服务:如果你使用的是docker,将环境变量传递给容器:
如果你使用的是docker compose,将其添加到环境部分并重启(
docker compose up -d ollama
):mzaanser6#
顺便说一下,我还发现调用
ollama.chat
会阻塞整个Python进程。在那段时间里,我甚至无法调用另一个端点,甚至FastAPI的"/docs"端点也无法渲染swagger文档。我们能否让它不阻塞并更异步?