ollama 实现流式LLM

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

I read the following llama.cpp Issue, I want use this feature. How can I do?
ggerganov/llama.cpp#3440

pu82cl6c

pu82cl6c1#

我阅读了以下内容,我想使用这个功能。我该怎么做?
ggerganov/llama.cpp#3440
你需要做的就是使用选项--keep来指定你想要保留的初始提示中的多少个令牌(默认值为-1,意味着整个提示,对于许多用例来说这并不是一个坏主意)。对于StreamingLLM,他们建议设置一个类似于"4"的值,但这只是为了避免在--ctx-size令牌后声称的生成质量下降。然而,如果你不希望你的生成“忘记”初始提示中的内容,你可能希望将这个值设置得更高(就像llama.cpp已经为你做的那样)。
简而言之,StreamingLLM论文描述了llama.cpp已经做了一段时间的事情。它添加了一些定量测量,并解释了在生成长度超过上下文窗口长度的序列时,保留一些初始锚定令牌在缓存中的重要性。论文的关键点是,如果你将--keep设置为0,那么在初始令牌滑出KV缓存后(即在--ctx-size令牌后),你的生成质量会受到影响。
虽然论文中报告的质量“改进”是否来自于固定的初始令牌还是仅仅来自于基于令牌的上下文窗口位置而不是其文档中的绝对位置的应用位置嵌入(这同样是llama.cpp一直这样做的方式,我不确定其他KV缓存是否也是如此),论文中有一句话暗示初始令牌并不真正重要,只有分配它们的位置才重要("这表明起始令牌的绝对位置,而不是它们的语义值,具有更大的意义")。
总的来说,这篇论文似乎解决了llama.cpp "无限生成"中的一个实现问题,据我所知,这个问题从未存在于llama.cpp中(否则用户会注意到 - 论文报告了上下文窗口长度后困惑度的急剧上升)。

iqxoj9l9

iqxoj9l92#

你需要做的就是使用选项 --keep 来指定你想要保留的初始提示中的多少个标记(默认值是-1,意味着整个提示,对于许多用例来说这并不是一个坏主意)
你是说我们可以在启动 ollama 服务器时指定 --keep 标志吗?你能分享一下如何启用它吗?

vnzz0bqm

vnzz0bqm3#

@jmorganca 在ollama中支持attention sinks会非常好 - 它看起来可以防止较长聊天中的困惑度降低:

我经常在当前版本的ollama中发现这个问题,当聊天变得很长时 - 为解决这个问题实现这个功能可能是一个好方法。
Transformers中的参考实现已添加为huggingface/transformers#26553

相关问题