Hasty Briefsbeta

双语

14× faster embeddings: how we rebuilt the ONNX path in Manticore

10 days ago
  • #embedding-models
  • #inference-optimization
  • #database-performance
  • Manticore Search 中的自动嵌入功能最初基于 Candle 使用 SentenceTransformers,但在不同配置下性能仅为每秒处理 5–11 个文档。
  • 新版 ONNX Runtime 后端(随版本 27.1.5 发布)平均提速约 14 倍,在相同硬件和模型下实现每秒 70–230 个文档的处理能力。
  • 关键改进包括:禁用 intra_op_spinning 以避免 CPU 忙等待,并因填充开销而放弃在工作线程内进行批处理,转而逐个处理文档。
  • 在 Linux/macOS 上使用线程安全的共享 ONNX 会话,并采用自适应并行策略:单文档 INSERT 走快速路径,而批量操作则通过工作线程并行处理。
  • 性能调优建议:为达到最大吞吐量,可使用大批次(32–128)配合单客户端线程,最高可达每秒 233 个文档;单行 INSERT 现已实现每秒 72 个文档。
  • 迁移至 ONNX 无需对现有使用 ONNX 兼容模型的表进行 API 更改;切换模型只需添加新列或导出并重新加载数据。
  • 未来改进计划包括 GPU 支持、Windows 性能对标,并将 ONNX 路径扩展至更多模型架构,如 T5 和 GGUF。