你正在运行的AnythingLLM怎么样?
Docker(本地)
发生了什么?
使用LocalAI作为后端——加载llama3 70b模型,Anything LLM容器因套接字超时而崩溃。
2024-05-15 22:24:20 [TELEMETRY SENT] {
2024-05-15 22:24:20 event: 'sent_chat',
2024-05-15 22:24:20 distinctId: 'be3ac3d9-aa83-4458-ae1a-583a3fcc909b',
2024-05-15 22:24:20 properties: {
2024-05-15 22:24:20 multiUserMode: false,
2024-05-15 22:24:20 LLMSelection: 'localai',
2024-05-15 22:24:20 Embedder: 'openai',
2024-05-15 22:24:20 VectorDbSelection: 'lancedb',
2024-05-15 22:24:20 runtime: 'docker'
2024-05-15 22:24:20 }
2024-05-15 22:24:20 }
2024-05-15 22:24:20 [Event Logged] - sent_chat
2024-05-15 23:04:01 Cannonball results 3511 -> 470 tokens.
2024-05-15 23:04:01 Cannonball results 356 -> 286 tokens.
2024-05-15 23:04:53 [TELEMETRY SENT] {
2024-05-15 23:04:53 event: 'sent_chat',
2024-05-15 23:04:53 distinctId: 'be3ac3d9-aa83-4458-ae1a-583a3fcc909b',
2024-05-15 23:04:53 properties: {
2024-05-15 23:04:53 multiUserMode: false,
2024-05-15 23:04:53 LLMSelection: 'localai',
2024-05-15 23:04:53 Embedder: 'openai',
2024-05-15 23:04:53 VectorDbSelection: 'lancedb',
2024-05-15 23:04:53 runtime: 'docker'
2024-05-15 23:04:53 }
2024-05-15 23:04:53 }
2024-05-15 23:04:53 [Event Logged] - sent_chat
2024-05-15 23:25:00 node:internal/process/promises:288
2024-05-15 23:25:00 triggerUncaughtException(err, true /* fromPromise */);
2024-05-15 23:25:00 ^
2024-05-15 23:25:00
2024-05-15 23:25:00 Error: Socket timeout
2024-05-15 23:25:00 at Socket.onTimeout (/app/server/node_modules/agentkeepalive/lib/agent.js:350:23)
2024-05-15 23:25:00 at Socket.emit (node:events:529:35)
2024-05-15 23:25:00 at Socket._onTimeout (node:net:598:8)
2024-05-15 23:25:00 at listOnTimeout (node:internal/timers:569:17)
2024-05-15 23:25:00 at process.processTimers (node:internal/timers:512:7) {
2024-05-15 23:25:00 code: 'ERR_SOCKET_TIMEOUT',
2024-05-15 23:25:00 timeout: 601000
2024-05-15 23:25:00 }
2024-05-15 23:25:00
2024-05-15 23:25:00 Node.js v18.19.1
我认为超时是可以接受的,需要一段时间来加载。然而,我没想到容器会崩溃,我更希望只是重新启动线程。
是否存在已知的重现步骤?
我认为任何大于10分钟的加载时间都应该可以重现。
9条答案
按热度按时间r7s23pms1#
这个超时是在你的LLM响应期间发生的,还是在你打开了一个会话但尚未向LLM发送聊天的情况下发生的?如果你的LLM需要10分钟才能回复,那么延迟有点高,但是它不应该导致服务器崩溃。
c2e8gylq2#
在两者之间。继续之前的聊天会话/线程,重新启动了后端(LocalAI),第一个向LocalAI发送的聊天消息将模型加载到内存中——所以它还没有对消息做出响应,是的,在CPU上,将模型加载到RAM中需要一段时间——但微妙的区别在于它还没有进行推理。请查看我这里的屏幕截图以查看事件,当模型加载完成后,AnythingLLM服务器告诉我有比等待更好的事情要做(崩溃)😆 。
应该提到的是,在加载完成后,它的工作效果很好,没有问题。
感谢你回复我👍
3pvhb19x3#
啊,所以模型只是花了很长时间来加载请求,然后继续进行。10分钟也不是巧合。对于LocalAI,我们使用
openai
的NPM包,它有一个10分钟的超时时间如果这个是无限的话,我会感到紧张,因为这样可以导致整个调用挂起。要求
mlock
在实际使用模型之前先进行基本预处理,以防止这种情况发生,这是否合理呢?我并不太兴奋,因为这可能会无意中导致LocalAI的请求无限挂起!
iq0todco4#
Will add that regardless this should not exit the process - so that needs to be patched for sure
xqk2d5yq5#
是的,我同意。对于LocalAI的具体处理,不要太担心,只要服务器不会因为任何事情崩溃就行。我可以处理模型预加载等操作,但是当我下载各种模型并尝试它们,在运行时加载它们时——只是不要崩溃就足够好了。
r1zhe5dt6#
这很有趣,我现在正在尝试复制这个过程,但我无法让那个确切的超时发生。它总是被处理,这让我怀疑这个异常是在其他地方被抛出而没有被捕获。任何在流过程中发生的异常都会被捕获并阻止完全崩溃。
目前我正努力重现确切的错误,以便我可以找到其完整的堆栈跟踪并处理它。
ffvjumwh7#
我会尝试在本地以调试模式运行,并提供更多信息。此外,我落后于主分支11个提交,所以,让我获取最新版本并再次尝试。
xoefb8l88#
不确定这是否增加了任何信息,但使用最新版本仍然可以重现。看起来它起源于node_modules中的agentkeepalive。
我将在周末继续尝试解决这个问题。解决方法很简单,可以预先加载模型。
mfpqipee9#
从我在lockfile中看到的内容来看,
openai
npm模块需要那个子依赖项,这真是令人沮丧,因为我无法确定在我们调用库之前它会中止在哪里,所以我们无法处理它!