原贴链接

最初使用llamacpp,但由于需要处理高吞吐量(特别是并行请求,用于我的检索增强生成(RAG)和纯文本模型的元数据充实)而切换到vllm,但一些原因促使我切换回llamacpp:新模型(gemma 3或mistral 3.1)获取awq/gptq量化可能需要一些时间,而llamacpp团队对支持新模型反应迅速;对于我的使用场景和GPU(3090)来说,llamacpp的吞吐量现在相当可观,与vllm差距不大;gguf比awq或gptq模型占用更少的显存;模型加载后,在内存中重新加载的时间很短。你们有什么经验?

讨论总结

原帖作者想要从vllm切换回llamacpp,给出了一些理由。评论者们针对这一想法展开讨论,大家主要从技术角度出发,比较了llamacpp和vllm在不同场景下(如单GPU、多GPU、单请求、批量操作等)的性能、吞吐量、量化、新模型支持等方面的表现,也涉及到其他软件如exl2、sglang、ollama等的讨论,有部分不同观点之间存在争论,但整体氛围较为理性客观。

主要观点

  1. 👍 llamacpp吞吐量现在相当可观,对于3090的使用场景与vllm差距不大
    • 支持理由:原帖作者在自己的使用场景下进行比较得出
    • 反对声音:有评论者指出如果真正需要高吞吐量,llamacpp基本只在并发为1时优化较好,随着并发数增加就表现不佳
  2. 🔥 vllm在多GPU且有张量并行时比llamacpp好很多(2/4/8个GPU情况)
    • 正方观点:能充分利用多GPU资源,比llamacpp有优势
    • 反方观点:有评论者不认为vllm在多GPU情况下远超llamacpp
  3. 💡 llamacpp在单GPU小模型推理上有进步
    • 解释:经过过去6个月左右的发展,单GPU推理能力提升
  4. 💡 exl2在多GPU并行且有TP时表现佳但新模型支持滞后
    • 解释:只有一位主要开发者,导致新模型支持慢
  5. 💡 vllm特定模型版本要求高且维护复杂
    • 解释:不同模型需要特定版本,增加了维护的复杂性

金句与有趣评论

  1. “🤔 If you actually need high throughput then there is no comparsion as llama.cpp is basically only optimized for concurrency = 1 and falls apart as soon as you start going up more.”
    • 亮点:明确指出llamacpp在高并发时吞吐量的短板
  2. “👀 llama.cpp got a lot better for single GPU inference over the past 6 months or so.”
    • 亮点:体现出llamacpp在单GPU推理方面的进步
  3. “😂 vllm has an inferior flash attn implementation so uses more VRAM for context window than llama.cpp uses.”
    • 亮点:生动地比较了vllm和llamacpp在VRAM使用方面的差异
  4. “🤔 I highly recommend you just quant your own.”
    • 亮点:针对量化模型给出自己的建议
  5. “👀 The main problem of llamacpp (IMO) is its terrible management of concurrent streaming prompts!”
    • 亮点:指出llamacpp在并发流提示管理方面的问题

情感分析

总体情感倾向比较中立。主要分歧点在于llamacpp和vllm谁更优,原因在于不同用户在不同的使用场景(如单GPU、多GPU、单请求、批量操作等)下对二者的性能、吞吐量、量化、新模型支持等方面有着不同的需求和体验。

趋势与预测

  • 新兴话题:可能会有更多关于Dynamo的尝试和讨论,以及它是否能提高吞吐量等性能方面的探讨。
  • 潜在影响:对于相关软件的使用者来说,可以根据这些讨论更好地选择适合自己场景的软件;对于软件开发者而言,可以针对这些比较中发现的问题进行改进优化。

详细内容:

标题:关于模型切换选择的热门讨论

在 Reddit 上,有一个引起众多关注的帖子,标题为“Switching back to llamacpp (from vllm)”。该帖子的作者最初使用 llamacpp,但因需要“高吞吐量”尤其是处理并行请求,转而使用 vllm。然而,现在一些因素促使他考虑重新切换回 llamacpp。此贴获得了大量的点赞和众多的评论,引发了大家对于不同模型特点和性能的热烈讨论。

讨论的焦点主要集中在以下几个方面: 有人认为对于单用户请求,Exl2 在个人电脑上表现出色,SGLang 适用于工作和批量推理,而 vllm 在 SGLang 无法满足需求时可以使用,llama.cpp 类软件则可用于在手机上运行 llm。 也有人表示,如果确实需要高吞吐量, llama.cpp 在并发度为 1 时表现不错,但随着并发数增加会表现不佳。而 vLLM 和 SGLang 在测试中表现较好。 还有人提到 llama.cpp 在过去 6 个月对于单 GPU 推理有了很大提升,能在多种设备上运行。而 vllm 对于新模型的支持更快,但维护较复杂。 有人指出 llamacpp 的并发流提示管理存在问题,vllm 与 sglang 的性能取决于具体模型和批处理设置。 有人分享了自己的使用体验,如在单请求时选择 llama.cpp,批量处理时选择 vllm,并给出了相关的运行数据。

讨论中的共识在于,不同的模型在不同的场景下各有优劣,没有绝对的最佳选择。特别有见地的观点是,各种模型都有其独特之处,而且它们都是免费的,用户可以根据不同的需求进行选择。

总的来说,关于模型的选择取决于具体的使用场景和需求,大家在讨论中各抒己见,为其他人提供了丰富的参考和思考。