使用Llama-3.1-8B-Instruct-Q8模型,我在配备M3 Max 64GB的MacBook Pro上对Ollama、MLX-LM和Llama.cpp进行了相同提示(约32k tokens)的测试。所有三个引擎均使用最新版本。考虑到MLX专为Apple Silicon优化,而Ollama是Llama.cpp的封装,我预期速度顺序为Ollama < Llama.cpp < MLX(从慢到快)。然而,结果令人惊讶!Llama.cpp怎么了?我确保所有层都加载到GPU上,并多次重跑测试以确认以下结果:
引擎 | Tokens | 提示处理 | Tokens | 文本生成 |
---|---|---|---|---|
Ollama | 32141 | 398.16 t/s | 659 | 25.79 t/s |
MLX-LM | 32134 | 391.40 t/s | 828 | 18.89 t/s |
Llama.cpp | 32141 | 306.64 t/s | 741 | 8.77 t/s |
讨论总结
帖子作者对Ollama、MLX-LM和Llama.cpp在M3 Max上的性能进行了测试,发现结果与预期不符,引发了广泛讨论。主要议题包括各引擎的上下文大小、参数设置、模型配置的一致性,以及Ollama的自动调优和模型变体对性能的影响。部分评论对测试的有效性和结果准确性提出质疑,也有人对VLLM的性能表示好奇。整体氛围以技术探讨为主,情感倾向中性偏疑惑。
主要观点
- 👍 检查参数一致性
- 支持理由:确保各引擎的上下文大小及其他参数相同,才能进行公平比较。
- 反对声音:部分评论认为即使参数一致,结果也可能受其他因素影响。
- 🔥 Ollama的自动调优
- 正方观点:Ollama的自动调优可能提升了其性能。
- 反方观点:自动调优可能导致结果不可控,影响测试的公平性。
- 💡 模型变体影响
- 解释:Ollama可能是Q4变体,影响了其性能表现。
- 🤔 测试环境不一致
- 解释:配置不一致导致测试结果无效,需统一环境重新测试。
- 👀 VLLM的性能好奇
- 解释:有用户对VLLM在这些工具中的性能排名表示兴趣。
金句与有趣评论
- “😂 Check out if the context size (and other parameters) is pre-set equally for all three.”
- 亮点:直接指出参数一致性的重要性。
- “🤔 Something is off, how can Ollama be that much faster than llama.cpp when it’s a wrapper of llama.cpp?”
- 亮点:表达了对Ollama性能异常的疑惑。
- “👀 I wonder where VLLM would be in this ranking!”
- 亮点:引出了对其他工具性能的好奇。
情感分析
讨论的总体情感倾向中性偏疑惑,主要分歧点在于测试的有效性和结果准确性。部分用户对Ollama的性能表示怀疑,认为可能存在虚假宣传。整体上,讨论较为理性,大家更关注技术细节和测试方法的科学性。
趋势与预测
- 新兴话题:VLLM的性能比较可能成为后续讨论的热点。
- 潜在影响:此次讨论可能促使更多用户关注模型测试的参数一致性和环境配置,推动相关工具的优化和改进。
详细内容:
标题:关于 Ollama、MLX 和 Llama.cpp 在 M3 Max 上的速度测试引发热议
近日,一则关于在配备 M3 Max 的 MacBook Pro 上测试 Ollama、MLX-LM 和 Llama.cpp 速度的帖子在 Reddit 上引起了广泛关注。该帖子作者使用 Llama-3.1-8B-Instruct-Q8 对同一约 32k 令牌的提示进行测试。截至今日,使用的均为三者的最新版本。
原帖作者原本预期速度排序为 Ollama < Llama.cpp < MLX(从慢到快),但实际测试结果却令人惊讶。帖子中详细列出了测试数据:
引擎 | 令牌 | 提示处理 | 令牌 | 文本生成 |
---|---|---|---|---|
Ollama | 32141 | 398.16 t/s | 659 | 25.79 t/s |
MLX-LM | 32134 | 391.40 t/s | 828 | 18.89 t/s |
Llama.cpp | 32141 | 306.64 t/s | 741 | 8.77 t/s |
此帖获得了大量的点赞和众多评论,引发了以下主要讨论方向: 有人指出要检查是否所有模型的上下文大小及其他参数都设置相同。因为 Ollama 若未指定会从模型文件加载并默认设为 2k 令牌,而 llama.cpp 的情况不明确。 有人疑惑为何 Ollama 作为 llama.cpp 的包装器却比 llama.cpp 快很多。有人猜测 Ollama 会对并行请求数量进行自动调优,或许原作者未在 llama.cpp 上设置相同的设置。同时,Ollama 模型默认的上下文大小很小。 有人认为测试中配置缺乏一致性,所以测试不具有效性。 还有人好奇 VLLM 在这种排名中的位置,以及为何生成的令牌长度会有所不同。
在讨论中,有人表示 MLX 确实比 Llama.cpp 快。但也有人认为 Ollama 存在虚假测试等问题。
此次讨论的核心问题在于,为何实际测试结果与预期大相径庭,是参数设置、模型优化还是其他因素导致了这样的差异?不同观点的碰撞,让我们对这些模型的性能有了更深入的思考。
感谢您的耐心阅读!来选个表情,或者留个评论吧!