原贴链接

ONNX已经存在很长时间,被视为部署深度学习模型的标准。它既是一种格式,也是一种运行时推理引擎。然而,它似乎落后于专门针对大语言模型(LLM)的推理运行时,如LLAMA.CPP(使用GGUF格式)。为什么会发生这种情况呢?ONNX是否存在技术限制,从而阻碍其在常见的大语言模型架构中的性能?上个月的下载量:onnx - community/Llama - 3.2 - 1B - Instruct => 821,bartowski/Llama - 3.2 - 1B - Instruct - GGUF => 121227

讨论总结

该讨论围绕ONNX在LLM世界未成功这一主题展开。评论者们从不同角度分析了原因,包括ONNX自身技术特性如对动态图支持不足、量化能力欠缺、构建和运行困难,与其他技术相比在速度、灵活性、优化等方面的劣势,以及从用户体验角度阐述其存在的问题,如使用慢、易出错等,整体氛围偏向理性探讨。

主要观点

  1. 👍 ONNX在嵌入式尤其是视觉模型中被大量使用
    • 支持理由:评论者看到ONNX在嵌入式设备尤其是视觉模型中被大量使用,如在CPU上运行的嵌入服务器中被使用
    • 反对声音:无
  2. 🔥 ONNX的灵活性在LLM领域可能是缺点,因为像LLAMA.CPP这样更专门化的工具是专门针对LLM模型进行优化的
    • 正方观点:LLAMA.CPP等专门化工具针对LLM优化,而ONNX宽泛的关注点与LLM独特需求不太契合
    • 反方观点:无
  3. 💡 ONNX使用体验差、速度慢,在LLM领域有更好用的格式
    • 解释:评论者表示使用ONNX慢且痛苦,在LLM领域有更快且更易用的格式
  4. 💡 偏离Pytorch会导致运行事务时出现麻烦,这种麻烦随着偏离程度增加而呈指数级增长
    • 解释:这是从技术角度分析ONNX在LLM世界情况的一种观点
  5. 💡 ONNX相关内容常出现故障,有大量错误提示,设置稍变就要重新编译整个模型,使用不便
    • 解释:从用户体验角度指出ONNX存在的问题

金句与有趣评论

  1. “😂 我看到ONNX在嵌入式esp. 在视觉模型中被大量使用。”
    • 亮点:指出ONNX在嵌入式和视觉模型中的使用情况,与主题中它在LLM世界未成功形成对比
  2. “🤔 相当简单,你越是偏离Pytorch,在运行事物时就会遇到越多的痛苦,而且实际上是呈指数级增长的。”
    • 亮点:从与Pytorch的关系角度分析ONNX在运行时可能遇到的问题
  3. “👀 a_slay_nub:Has ONNX ever been a standard? Sure it’s probably one of the easiest things to use but it’s slow, painful to use, and easily the worst "standard".”
    • 亮点:直接否定ONNX是一个好的标准,强调其使用体验差
  4. “🤔 我原以为onnx只是用于深度伪造。”
    • 亮点:反映出部分人对ONNX用途的错误认知
  5. “👀 我对比过相同模型的ONNX和safetensors,ONNX版本要慢得多,至少慢4到5倍。”
    • 亮点:通过对比实验结果,直观地显示出ONNX在速度方面的劣势

情感分析

总体情感倾向对ONNX较为负面,主要分歧点在于ONNX是否完全没有成功之处。大部分评论者指出ONNX在LLM世界存在诸多问题,如技术局限、使用体验差等,但也有少数评论者认为它并非完全不成功,可能在某些场景下仍有一定的适用性,例如在本地TTS且GPU运行受限时。

趋势与预测

  • 新兴话题:GGUF等格式为何没有在图像领域更流行。
  • 潜在影响:如果ONNX不能解决在LLM世界面临的问题,可能会逐渐在这个领域被边缘化,而像LLAMA.CPP等针对LLM优化的工具可能会占据更多市场份额,影响深度学习模型部署的格局。

详细内容:

《为何 ONNX 在 LLM 领域未获成功?》

在 Reddit 上,一则题为“为何 ONNX 未能在 LLM 世界中取得成功?”的帖子引发了热烈讨论。该帖指出 ONNX 虽长期存在且被视为部署深度学习模型的标准,兼具格式和运行时推理引擎的功能,但似乎已落后于像 LLAMA.CPP 这样针对 LLM 的特定推理运行时(使用 GGUF 格式)。上个月的下载量数据显示,onnx-community/Llama-3.2-1B-Instruct 为 821 次,而 bartowski/Llama-3.2-1B-Instruct-GGUF 高达 121227 次。这一话题吸引了众多网友参与讨论,评论众多。

讨论焦点与观点分析: 有人指出 ONNX 在嵌入式特别是视觉模型中应用较多,在浏览器中也有用于浏览器内模型的情况,但不清楚其格式的具体细节。有人认为 ONNX 设计通用灵活,支持多平台,但也更侧重于视觉模型。还有人表示从个人经验来看,ONNX 感觉有漏洞。有人称越偏离 Pytorch,运行时问题越多。也有人觉得 ONNX 的灵活性在 LLM 领域可能是个缺点,因为像 LLAMA.CPP 这样更专业的工具针对特定模型进行了优化。有人提到 GGUF 在图像领域已流行,但某些模型的量化效果不佳。有人认为微软和英伟达在维护执行上下文方面做得不好,相比之下更倾向于使用 torch.compile()。有人认为 ONNX 一直更适用于固定计算图,对动态图的支持缓慢且有漏洞。有人表示在某些情况下会使用 ONNX 进行本地 TTS,但若有足够 VRAM 则不会选择。有人指出尝试导出大于 3B 的模型时会遇到问题,而 VITs 小于 1B 时会导出为 ONNX。有人称 LLAMA.CPP 可以进行量化,而 ONNX 不行。有人觉得 ONNX 在小模型于 CPU 上表现不错,但 llama 更好。有人认为 ONNX 在没有预编译轮子的平台上构建和运行是一场噩梦。

在这些讨论中,共识在于 ONNX 存在各种问题,在与专门针对 LLM 优化的工具相比时处于劣势。一些独特的观点如关于不同模型格式和工具之间的兼容性、便携性等问题的探讨,丰富了对这一话题的理解。

总之,关于 ONNX 在 LLM 领域的表现,Reddit 上的讨论揭示了其面临的诸多挑战以及与其他工具相比的不足,但也为未来的改进和发展提供了思考方向。