ollama 改进的上下文窗口大小管理

nhn9ugyo  于 6个月前  发布在  其他
关注(0)|答案(7)|浏览(66)

当前的上下文窗口大小主要由人工设定——可以通过API中的 {"options": {"num_ctx": 32768}} 进行指定,或者在Modelfile中通过 PARAMETER num_ctx 32768 进行指定。否则,默认值将设置为 2048 ,除非另有指定(库中的一些模型将默认使用较大的上下文窗口大小)。
上下文大小应在运行时根据可用内存量动态确定。

htzpubme

htzpubme1#

有没有无限制运行的方法?我知道这可能是个坏主意,但我需要在一个提示符上无限制地运行。这是一个科学项目,所以我需要100%确保没有隐藏的截断。

这将通过混合实现。我可能会导致电脑崩溃或将内存Map到磁盘空间,但只是为了几次运行,所以我可以在集群上运行。

np8igboo

np8igboo3#

Llama3 会自动回答长度为700个令牌的简单问题,因此第三个回合就可以用完2048个令牌的上下文。人们很少会修改模型文件来解决这个问题。Ollama 旨在即插即用。它需要默认的上下文长度,不会限制模型。我建议实现以下算法:

  1. 从模型训练时的上下文大小开始。我相信这已经在模型元数据中了。
  2. 将上下文限制在模型大小内(例如,对于4GB模型,最大上下文为4GB),以处理声明巨大训练上下文的上下文扩展模型。这个想法是用户很可能希望平衡模型大小和上下文大小。
  3. 如果可能的话,将模型+上下文适应 GPU VRAM(减去一些2GB用于桌面),否则将模型+上下文适应系统内存的60%。这个想法是为了避免昂贵的溢出从VRAM到RAM和从RAM到SSD/swap。
  4. 始终优先选择较长的上下文,而不是加载多个模型或保留多个上下文。这个想法是Ollama 在尝试运行并发聊天之前必须与单个模型/上下文良好配合。
  5. 如果应用上述规则后上下文太小,将其设置为一个合理且没人会认为过分的最小值,例如模型大小的10%。
    你觉得怎么样?这对大多数人有效吗?
    PS:这让我想起 num_predict 可能不应该默认为128,这也会限制模型。
ljsrvy3e

ljsrvy3e4#

有人能向我解释一下为什么我需要设置上下文窗口大小吗?这是模型的一个属性。因此,它应该成为GGUF内容的一部分。

mqkwyuun

mqkwyuun5#

@StarPet 大上下文窗口占用大量内存,这在GPU和CPU上都受到严重限制。你不希望大上下文导致模型从GPU溢出到系统RAM,甚至到SSD(通过分页)。我们需要更智能的东西。

xam8gpfp

xam8gpfp6#

@StarPet 大上下文窗口消耗大量内存,这在GPU和CPU上受到严重限制。你不希望大上下文导致模型从GPU溢出到系统RAM,甚至到SSD(通过分页)。我们需要更智能的方法。
感谢Robert。尽管在那些消耗过多内存并降低速度的情况下,从模型的最大值减少上下文窗口大小可能是合理的,但它仍应是模型本身的一个属性,Ollama可以作为参考点提供。据我所知,目前我无法使用list() API查询模型的最大值。拥有这些信息对于创建较大文本块的摘要等用例可能很有趣。

4uqofj5v

4uqofj5v7#

如何修复它以避免重新启动ollama i am with gemma:2b的服务?

相关问题