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 和語意搜尋)。
  • 可插拔儲存:允許使用自訂介面卡取代預設的作業系統檔案系統,以用於物件儲存。

相關