继我之前在2xRTX - 3090与M3 - Max之间的测试之后,我在我的M3 - Max 64GB设备上完成了相同的测试,以比较Llama.CPP和Mlx。设置方面,两者都使用温度0.0、top_p 0.9、种子1000,MLX - LM版本为0.20.4,MLX版本为0.21.1,模型为Llama - 3.3 - 70B - Instruct - 4bit(Llama.cpp中为llama - 3.3 - 70b - instruct - q4_0,q4_K_M),并且启用了Flash attention。注意事项方面,虽然很接近,但现在MLX似乎总是比Llama.cpp快。在比较Llama.cpp的流行量化q4_K_M和MLX - 4bit时,平均而言,MLX处理标记的速度快1.14倍,生成标记的速度快1.12倍,这是大多数人会用到的情况。当比较q4_0 Llama.cpp等效量化和MLX - 4bit时,平均而言,MLX处理标记的速度快1.03倍,生成标记的速度快1.02倍。MLX在0.19.0版本提高了融合注意力速度,MLX - LM在0.20.1版本修复了长上下文的慢性能错误。每个测试都是一次性生成(不是通过多轮聊天方式积累提示),速度以每秒标记数计算,总时长是总执行时间,而不是Llama.cpp报告的总时间。有时会看到较长提示的总时长比短提示短,因为较长提示生成的标记较少。后面是不同引擎、量化、提示标记数等条件下的提示处理速度、生成标记数、标记生成速度、总执行时间等详细对比表格。
讨论总结
原帖进行了Llama.CPP和MLX的速度测试对比并给出详细数据。评论中一部分人关注量化比较,如MLX量化和GGUF量化的比较,讨论是否公平以及如何进行更合理的比较;也有人提及质量比较,如不同版本Llama模型的质量差异。还有人基于自身使用体验阐述两者的差异,包括内存占用、模型管理等方面。此外,不少评论者对作者的测试工作表示感谢,也有人提出新的测试需求或者表达购买意向。
主要观点
- 👍 MLX在与Llama.cpp对比中速度更快。
- 支持理由:有补充q4_0结果表明二者接近但mlx速度仍然更快。
- 反对声音:有人认为对比并非完全对等。
- 🔥 希望对MLX量化和GGUF进行测试比较。
- 正方观点:有帖子称二者输出质量有差,若能测试则很有意义。
- 反方观点:目前两者比较时参数差异大,量化有不同,比较较难实现。
- 💡 Llama - 3.3 - 70B - Instruct - 4bit质量低于llama - 3.3 - 70b - instruct - q4_K_M。
- 解释:有人指出二者量化在bpw方面存在差异。
- 👍 认为Llama.CPP和MLX之间差异不大,但MLX使用更多内存。
- 支持理由:评论者根据自身使用情况得出。
- 反对声音:无。
- 💡 如果MLX和unsloth在3090上性能差异不大,有购买M4 Ultra的意向。
- 解释:在原帖测试基础上提出新的性能比较需求以便做出购买决策。
金句与有趣评论
- “😂 Any chance you can test if MLX quants are actually equivalent to GGUF?”
- 亮点:提出新的测试方向,开启量化比较相关讨论。
- “🤔 我添加了q4_0的结果。非常接近,但mlx仍然更快。”
- 亮点:补充数据支持MLX速度更快的观点。
- “👀 Llama-3.3-70B-Instruct-4bit is much lower quality (4.0 bpw) than llama-3.3-70b-instruct-q4_K_M (around 4.7bpw)”
- 亮点:明确指出两种Llama模型量化后的质量差异。
- “😊 对于我来说,差异并不是很大,但MLX使用更多内存。”
- 亮点:从个人使用体验角度阐述二者差异。
- “🙏 Thanks for your hard work.”
- 亮点:表达对原帖作者工作的感谢,这也是评论中常见的情感态度。
情感分析
总体情感倾向比较积极正面,主要分歧点在于对MLX和Llama.cpp的比较是否公平合理以及量化方式的选择上。积极正面的原因是很多评论者对原帖作者的工作表示感谢、认可测试结果,或者从测试结果中发现两个被测试对象各自的优势。而分歧主要是由于不同人对量化概念的理解、对测试应该遵循的条件等有不同的看法。
趋势与预测
- 新兴话题:可能会出现更多不同设备或者软件在不同量化下的性能比较需求,如MLX和unsloth在3090上微调的比较。
- 潜在影响:如果有更多这样的测试和比较,将有助于用户在选择不同的软件或设备时做出更明智的决策,推动相关技术在性能优化方面的发展。
详细内容:
标题:Llama.CPP 与 MLX 在速度测试中的表现对比
近日,Reddit 上一篇关于“Llama.CPP 与 MLX 在不同提示大小下的速度测试”的帖子引发了热烈讨论。该帖提供了详细的数据对比,包括各种参数设置和测试结果,获得了众多关注,评论数众多。
主要讨论方向集中在 MLX 与 Llama.CPP 速度差异的原因分析,以及不同量化方式对性能和质量的影响。
文章将要探讨的核心问题是:MLX 为何在速度上表现更优,以及如何实现更公平准确的对比。
在讨论中,有人指出,MLX 似乎一直比 Llama.CPP 更快,但需要注意的是量化方式不同可能导致结果差异。比如,有人认为应该使用 Q4_0 来使对比更公平,因为 MLX 4 位量化和 Llama.cpp 的 q4_K_M 量化并非完全对等,Llama 承担了更多工作。
有用户分享道:“自从温度设为 0 (及其他参数)且输出长度差异较大,就可以看出量化方式差异很大。”
还有用户提到:“EXL2 4.0 和 4.5bpw 可能会胜过两者,但在 Mac 上不可用。”
有人认为,由于 MLX 可能仅因量化方式差异而显得更快,除非能让 MLX 使用 32 的组大小以实现更公平的对比。
一位用户表示自己不再拥有 Mac,无法进行相关测试。
也有用户分享了在不同量化方式下的测试结果,指出尽管 MLX 稍快,但速度差异并不显著。
讨论中的共识是,要实现公平准确的对比,需要在更多方面保持一致,比如量化方式和组大小等。特别有见地的观点是指出了不同引擎在底层实现上的差异对比较结果的影响。
总之,这次关于 Llama.CPP 与 MLX 速度测试的讨论,为我们深入了解两者的性能差异提供了丰富的视角和思考。
感谢您的耐心阅读!来选个表情,或者留个评论吧!