几天前,llama.cpp悄然发布了一个补丁(https://github.com/ggerganov/llama.cpp/pull/10026),其中有一行代码:行拆分模式(-sm row
):KV和其他非矩阵权重在可用GPU之间的拆分方式与按层拆分模式相同。我使用3个P40(72GB显存),之前在使用70B模型并进行Q4量化时,我的最大上下文大小为60K个标记。在这个更改之后,我可以容纳120K个标记。对于使用行拆分模式的P40用户来说是个巨大的胜利。这是补丁之前(60K上下文)的内存使用情况。请注意,第一个P40正在使用23GB/24GB显存,而另外两个是14GB/24GB。这是补丁之后(128K上下文)的显存使用情况。显存分配更均匀。另一个好处是GPU利用率在各个GPU之间更加平衡。之前GPU0会高出大约10%到15%。这个更改似乎没有使推理速度变好或变坏。
讨论总结
原帖分享了llama.cpp补丁使最大上下文大小翻倍的情况,以及在使用特定GPU时前后的内存使用、GPU利用率等变化。评论中,有人不打算利用补丁提升上下文而是打算升级到q8;有人询问是否达到两全其美效果,如缓存处理是否更好;有人尝试后得到性能提升;还有人推荐工具、分享不同模式性能对比、对量化影响提出疑问等,整体氛围专注于技术探讨,但热度不高且比较分散。
主要观点
- 👍 不打算利用补丁提升上下文大小,计划升级到q8
- 支持理由:无(未提及)
- 反对声音:无(未提及)
- 🔥 补丁使最大上下文大小翻倍是重要的改变且带来VRAM更均匀分配和GPU利用率更平衡等好处
- 正方观点:原帖详细展示了前后对比,如内存使用和GPU利用率变化等
- 反方观点:无(未提及)
- 💡 层分割模式性能优于行分割模式
- 解释:评论者LinkSea8324通过自己的测试得出该结果
- 💡 量化可能影响相关结果
- 解释:segmond根据自己在不同量化下的上下文加载数量差异提出
- 💡 存在nvidia - pstated工具可用于P40并可使P40在加载和空闲时保持特定状态
- 解释:评论者介绍了这个工具的功能
金句与有趣评论
- “😂 DinoAmino:Cool! Instead of increasing my context I’ll be moving up to q8 \\\\m/”
- 亮点:表达了与众不同的应对策略,不随波逐流利用补丁提升上下文。
- “🤔 So now it’s best of both worlds? Model by row and the better handling of cache.”
- 亮点:对补丁是否在多方面达到更好效果提出疑问,体现对技术全面性的思考。
- “👀 Oh shit I gotta check this out on my 2 P40s”
- 亮点:简单直接地表达出对补丁相关消息的兴趣和尝试的冲动。
- “👀 Ran few tests last day and I have better performances on a layer split mode rather than row, weird”
- 亮点:与原帖中行分割模式有改进的观点相悖,给出不同测试结果引发思考。
- “👀 PSA: You can use [nvidia - pstated](https://github.com/sasha0552/nvidia - pstated) to keep your P40s in P8 (8 - 10W) while loaded and idle.”
- 亮点:推荐实用工具并给出其功能,对P40用户可能有实际帮助。
情感分析
总体情感倾向是较为中性的。主要分歧点在于不同模式(如层分割和行分割)的性能对比,以及是否利用补丁提升上下文大小等。可能的原因是大家基于各自不同的使用场景、测试环境和需求来对待llama.cpp补丁带来的变化。
趋势与预测
- 新兴话题:不同量化和模式对llama.cpp性能影响的进一步探究。
- 潜在影响:对使用llama.cpp的用户在选择模式、量化方式以及如何更好利用硬件资源方面提供更多参考依据。
详细内容:
《Llama.cpp 补丁带来巨大变革:P40 用户的福音?》
近日,Reddit 上一则关于 llama.cpp 补丁的帖子引起了广泛关注。该帖llama.cpp 悄然推出了一个补丁,在使用 3 个 P40s(72GB VRAM)和 70B 模型进行 Q4 量化时,此前最大上下文大小为 60K 令牌,而在补丁之后能达到 120K 令牌,这对于使用行分割模式的 P40 用户而言是巨大的胜利。此帖获得了众多点赞和大量评论。
讨论的焦点主要集中在该补丁带来的变化和影响。有人表示,现在简直是两全其美,既有按行的模型处理,又有更好的缓存处理。还有人兴奋地说,得赶紧在自己的 2 个 P40s 上试试。
有用户提到使用nvidia-pstated能在加载和空闲时将 P40s 保持在 P8(8 - 10W),并称赞作者对修复漏洞的积极响应。
也有人提出疑问,比如这是否只适用于 CUDA 后端,或者是否与量化方式有关。有用户分享,对于 llama3.1 - 70B Q8 在 4 个 3090 上使用“sm 行”模式,VRAM 耗尽前可加载 64000 上下文,不使用则为 61000。还有人表示,在层分割模式和行分割模式的性能表现有所不同。
讨论中的共识在于大家都对这个补丁带来的改变充满期待,同时也在积极探讨如何更好地利用和优化。而特别有见地的观点是关于不同硬件配置和量化方式下的具体效果和优化方法,这些观点丰富了讨论的深度和广度。
总体而言,这个补丁为相关用户带来了新的可能性,但具体的效果和适用范围仍在不断探索和讨论之中。
感谢您的耐心阅读!来选个表情,或者留个评论吧!