在基于 LLM 的工具中你应该使用 Rust 来提高性能吗?| Bosun

主要观点:

  • 探讨在构建文本(代码)处理软件时,为何选择用 Rust 而不是 Python,尽管 LLM 推理会成为性能瓶颈,通过对比基于 Rust 的索引和查询管道与 Python 的 Langchain 的性能,发现 Rust 工具更快。
  • 用 Rust 实现 Swiftide 的动机包括构建快速高效的工具链、可靠且易于编写和维护,Rust 生态系统强大且工具优秀。
  • 虽然 Rust 有性能优势,但在处理大型语言模型时,仍依赖 GPU 处理,选择 Rust 不能仅基于语言性能,且要避免因低效预处理步骤导致基准测试受 CPU 限制。
  • 强调 GPU 处理步骤不一定是最昂贵的,管道中其他部分可能花费大量时间,Rust 能通过并行和字符串处理库提高性能,但具体是否有用取决于需求。

关键信息:

  • 用 Rust 构建的工具在处理文本数据集生成嵌入并插入向量数据库的基准测试中表现更优,如在小数据集 Rust Book 中比 Langchain 快 3.3 倍,在中等数据集 Rotten Tomatoes 中快 1.5 倍。
  • 在 Rust 中 90%时间用于 ONNX 运行时计算嵌入,而 Langchain 花费约 3 倍时间做类似工作,主要原因是 Langchain 在 Markdown 和 HTML 分区步骤花费 10 秒,切换为 Plain TextLoader后性能更合理。
  • 目标不是直接比较 Swiftide 和 Langchain,而是为 Swiftide 建立基准性能指标,同时说明硬件上 Rust 有接近上限的工具。

重要细节:

  • 基准测试使用 Qdrant 向量数据库和 FastEmbed 嵌入,最初在 NVIDIA A6000 GPU 上对 Rust Book 数据集进行测试,后切换为中等数据集 Rotten Tomatoes 增加压力。
  • 通过 cProfile模块和 snakeviz分析代码性能,找出 Langchain 性能差异的原因。
  • 可在swiftide.rsgithub了解 Swiftide,相关基准测试代码在github 仓库,基准测试在 NVIDIA A6000 GPU(从 Hyperstack 租用)和 Apple M1 Max 上进行。
阅读 17
0 条评论