knights-analytics/hugot

Onnx transformer pipelines in Golang

解决的问题

Hugot 提供了一种在 Go 应用程序中原生运行基于 transformer 的 AI 模型的方法。它消除了维护单独的 Python RPC 服务或依赖外部 REST API 进行推理的需求,让开发者能将 ML 模型与其 Go 生产技术栈紧密结合,从而获得更好的性能和可扩展性。

工作原理

该库使用 ONNX (Open Neural Network Exchange) 作为其主要模型格式。它允许将通过 Hugging Face transformers 库在 Python 中训练的模型导出为 ONNX,然后在 Go 中运行。Hugot 支持三个可插拔的后端来执行:

  • Go:一个原生 Go 后端,适用于较简单的工作负载和没有 cgo 的环境。
  • ONNX Runtime (ORT):一个高性能 C 后端,支持所有管道,包括生成式 AI。
  • OpenXLA:一个 C 后端,支持 TPU 和训练/微调功能。

适用人群

它专为想要在自己的硬件上部署和微调 transformer 管道,而无需从头编写自定义推理或训练代码的 Go 开发者和 ML 工程师而设计。

亮点

  • Hugging Face 兼容性:将模型从 Python 平移到 Go,并获得相同的预测结果。
  • 多样化的管道支持:包括文本生成、图像分类、目标检测、问答和零样本分类。
  • 硬件加速:支持 CUDA、TPU、TensorRT、DirectML、CoreML 和 OpenVINO。
  • 训练能力:支持使用 XLA 后端微调特征提取管道(例如用于 RAG 和语义搜索)。
  • 可插拔存储:允许使用自定义适配器替换默认的操作系统文件系统,以用于对象存储。

相关