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 は実行用に3つのプラグ可能なバックエンドをサポートしています:

  • Go: よりシンプルなワークロードや cgo のない環境向けのネイティブ Go バックエンド。
  • ONNX Runtime (ORT): 生成 AI を含むすべてのパイプラインをサポートする高性能 C バックエンド。
  • OpenXLA: TPU およびトレーニング/ファインチューニング機能をサポートする C バックエンド。

対象者

ゼロからカスタム推論やトレーニングコードを記述することなく、独自のハードウェア上で transformer パイプラインをデプロイおよびファインチューニングしたい Go 開発者や ML エンジニア向けに設計されています。

ハイライト

  • Hugging Face 互換性: Python から Go へモデルをそのまま移行し、同一の予測結果を得られます。
  • 多様なパイプラインサポート: テキスト生成、画像分類、オブジェクト検出、質問応答、ゼロショット分類を含みます。
  • ハードウェアアクセラレーション: CUDA、TPU、TensorRT、DirectML、CoreML、OpenVINO をサポートします。
  • トレーニング機能: XLA バックエンドを使用して、特徴抽出パイプライン(RAG やセマンティック検索など)のファインチューニングをサポートします。
  • プラグ可能なストレージ: デフォルトの OS ファイルシステムを、オブジェクトストア用のカスタムアダプタに置き換えることができます。

関連

  • Dispatch
  • プロジェクト
  • Dispatch
  • Dispatch
  • Dispatch