ollama ``` ROCm Memory Issues with Long Contexts ```

r6vfmomb  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(46)

问题是什么?

这个问题与#1952类似。我注意到在使用ROCm上的长上下文长度时,Ollama会崩溃。特别是,最明显的事情是我可以从一开始就继续与Ollama进行大型对话,而模型仍然保留在内存中。但是当我稍后回来,模型需要重新加载时,它无法处理上下文。

这是1952年我发的消息。

我想再次触发这个问题,因为我仍然在使用GLM4的65k上下文大小时看到这个问题。没有太多上下文的情况下加载得很好,但在加载较大的上下文时有问题。我甚至将上下文大小设置为8k o_O。

重要信息:

  • 看起来GPU VRAM达到了100%,但然后无法溢出到更大的上下文中。rocm-smi显示VRAM从98%... 99%.. 100%上升到崩溃。

  • 将GPU层数降低到41中的15个,并禁用mmap,将num_batch设置为256对于GLM 4使VRAM保持在35%左右,使用8k上下文大小。

  • 禁用mmap并将num_batch设置为256,让其将所有41个GPU层加载到内存中使用69%的VRAM。

  • 将num_ctx设置为60,000仍会使它尝试将所有层加载到GPU中,然后因为VRAM不足而崩溃。

  • 将num_gpu降低到30甚至20可以让它加载更多的上下文。但这只是在延缓不可避免的事情。足够长的上下文会导致崩溃。

难道Ollama不应该在这个情况下计算它需要将更少的层加载到GPU中吗?就像我可以手动调整一样,但是如果Ollama接收到num_ctx,这会让模型崩溃,它不应该开始使用系统RAM吗?

操作系统:Linux

GPU:AMD

CPU:AMD

Ollama版本:0.2.5

k4aesqcs

k4aesqcs1#

与此相关的是:我正在运行gemma2:27b。在最新版本之前,它以大约5个令牌/秒的速度运行,并在GPU上使用了38层中的47层。但是现在,如果它试图在GPU上加载38层,ollama会耗尽VRAM。即使没有上下文(即新的对话)。所以我不得不将num_gpu调低到30层才能让它运行。

相关问题