当输入过长时,Ollama服务会静默失败,

wpx232ag  于 2个月前  发布在  其他
关注(0)|答案(6)|浏览(34)

当我使用ollama serve并提供一个大约30k个tokens的上下文,与具有最大上下文窗口为32768的mistral模型一起时,服务器没有显示任何错误,并像往常一样继续返回。这让我觉得它成功地接收到了整个上下文。
但是深入挖掘后,我发现并非如此。

所以当我这样做时,它开始正常工作

ollama run <model>
/set parameter num_ctx 32768
/save

也许这是因为在使用ollama serve时有标志需要设置,而我在阅读文档后不知道这些标志。是否有更好的方法来为ollama serve设置上下文窗口?
在我看来,预期的行为是在输入超过设置的上下文窗口长度时显示错误消息。LM Studio就是这样做的

请告诉我是否是因为我没有使用正确的标志,或者这是一个合理的关注点。

xytpbqjk

xytpbqjk1#

这个变量和其他许多变量都是针对每个模型的设置,而不是针对每个服务器的。它们必须是针对每个模型的,因为每个模型都需要不同的设置。当服务器启动时,它甚至不知道你将运行哪个模型,而且你可能接下来会连续运行10个不同的模型。
通过一次性地使用/save(或者你可以通过Modelfile方法添加,参见文档),然后永久地为你应用它。
听起来你可能把“serve”和“run”混为一谈。当你开始在多个模型之间切换时,我相信你会更倾向于这些不是一次性针对所有模型的“全局”变量。这会导致在从Mistral切换到新的Gemma等情况下出现各种错误。
或者也许我误解了你的(误)用例:)

eoxn13cs

eoxn13cs2#

@vividfog 我明白serve和run是不同的事情,serve当然不知道用户会调用哪个模型。然而,我最初的观点是它在没有显示输入过长的情况下默默失败

对于serve的UX,我相信有比运行每个模型并有/set parameter .../save更好的、更清晰的选择。这相当繁琐且容易出错。如果服务器有一个配置,可以一次性为所有模型设置,那将是一个我认为的UX改进。

至少,文档应该明确说明ollama serve对于用例或(误)用例的期望是什么。

j8yoct9x

j8yoct9x3#

@logancyang 我明白了。抱歉那个双关语,想到就忍不住了。
当输入超过某个阈值时默默失败,我同意这并不是最优的。等我有时间的时候,我也要测试一下。如果我现在尝试的话,32k的上下文会超过我的整个笔记本电脑。
与此同时,我为Mistral做了/set parameter num_ctx 5,然后写了5个以上的标记。在这种情况下,它并没有默默失败,而是产生了无意义的东西。对于Qwen也是如此。我想知道为什么。在这里,如果应用程序能够捕获到这个问题,那将会很好。

>>> /set parameter num_ctx 5
Set parameter 'num_ctx' to '5'
>>> This is probably more than five tokens, is it?
: Question: Given the function `count_ Q(x) = QLabel("")
 QSizePolicy::ExpandRows: QUERYDSL, QuestionUtils. QuestionUtils is a class with Question and Answer pairs ( Question->text );
 QTextEdit *m_ Q: How does the FCA's approach to Question 11 in Question 2 in Figure~\ref{fig: QCD vacuum instabilities and Question Marks in QR code?
 Q: Why are you afraid of Qarib Shirin, Questioner [5
ycggw6v2

ycggw6v24#

@vividfog ,这很有趣。我认为在5个令牌的上下文长度中,任何事情都是可能的,因为它没有太多可以利用的东西?无论如何,我认为最好有一个明确的错误信息。当我测试我的长提示时,我知道有些东西不对劲,但不知道是什么。文档中没有任何关于ollama serve和上下文长度配置的信息。但是你从另一个问题中的评论帮助我找到了问题所在,所以谢谢你!

14ifxucb

14ifxucb5#

我认为这也是我出现崩溃的原因。在服务模式下打开Web UI和Ollama,它们似乎不会相互通信来设置上下文窗口?比如说,即使我在Open Web UI设置中将上下文设置为8K,它也不会告诉Ollama服务器去设置一个例如8K上下文的混合模式...?

v7pvogib

v7pvogib6#

我认为这也是我出现崩溃的原因。在Open Web UI和Ollama的serve模式下,它们似乎没有相互通信来设置上下文窗口?比如即使我在Open Web UI设置中将上下文设置为8K,它也不会告诉Ollama serve去设置一个例如8K上下文的混合...?
你的UI很可能没有以Ollama接受的方式发送上下文长度参数。只需检查服务器日志,看看是否显示了正确的上下文长度值。
Ollama的问题在于,它应该让我们知道输入是否溢出或截断,而不是默默地继续进行。

相关问题