knights-analytics/hugot

Onnx transformer pipelines in Golang

それは何か

Hugot は、Go コードから直接 Hugging Face スタイルのトランスフォーマーパイプラインを実行できる Go ライブラリです。ONNX 形式にエクスポートされたモデルで動作し、テキスト分類、質問応答、画像セグメンテーション、音声文字起こし、ゼロショット分類など、幅広いタスクをサポートします。ライブラリは 3 つの交換可能なバックエンドを提供します:

  • 純 Go(C 依存なし、小規模モデルに適しています)
  • ONNX Runtime (ORT) – 最速の CPU/GPU バックエンド
  • OpenXLA – TPU サポートと他の XLA アクセラレータを有効にします。

誰が使うか

  • 別の Python サーバーを呼び出さずにサービスに AI 推論を組み込みたい Go 開発者。
  • Go ベースの本番スタックで Hugging Face モデルをデプロイする ML エンジニア。
  • オンプレミス、CPU、GPU、または TPU で推論を実行し、単一言語のコードベースを好むチーム。

コア機能(README に記載されているとおり)

機能 詳細
モデル互換性 Optimum を介して ONNX にエクスポートできる Hugging Face モデルはすべて動作し、予測は Python リファレンスと一致します。
サポートされるパイプライン テキスト、ビジョン、オーディオ、マルチモーダル、クラシック ML をカバーする 30 以上のパイプライン(例:textClassification、imageSegmentation、automaticSpeechRecognition、zeroShotClassification、objectDetection など)。一部のパイプラインは ORT 専用です。
バックエンド選択 ビルドタグ(-tags ORT、-tags XLA、-tags ALL)でコンパイル時に選択します。Go バックエンドは cgo を必要としません。ORT と XLA はハードウェアアクセラレーションを提供します。
ハードウェアアクセラレーション CPU(デフォルト)、CUDA 経由の NVIDIA GPU(ORT または XLA)、TPU(XLA のみ)、さらに ONNX Runtime を通じて TensorRT、DirectML、CoreML、OpenVINO をサポート。
トレーニング/ファインチューニング goMLX を使用して ONNX モデルをロードし、ファインチューニングし、ONNX に書き戻します。現在、FeatureExtraction パイプラインで利用可能です(セマンティック検索埋め込みに便利)。
生成 AI ONNX Runtime の Generative AI エンジンを通じて生成モデルを実行します。WithGenerativeEngine による同時リクエストとバッチ処理をサポートします。
インストール go get github.com/knights-analytics/hugot; ORT/XLA 用のオプションの C ライブラリはリリースまたは Docker イメージから取得できます。
使用例 README には、感情モデルをダウンロードし、テキスト分類パイプラインを作成し、文字列のバッチで実行し、JSON 結果を出力する完全な Go プログラムが含まれています。

仕組み(高レベル)

  1. モデルダウンロード – hugot.DownloadModel が Hugging Face ハブから ONNX モデルを取得します。
  2. セッション作成 – NewGoSession、NewXLASession、または NewORTSession が選択したバックエンドにバインドされたランタイムコンテキストを作成します。
  3. パイプライン構築 – 設定(例:TextClassificationConfig)を session.NewPipeline に渡します。
  4. 推論 – pipeline.RunPipeline(ctx, inputs) を呼び出します。ライブラリがトークン化、モデル実行、出力解析を処理します。
  5. トレーニング – セッションから Trainer を作成し、データセット(sentence1、sentence2、score を含む JSONL)を提供し、trainer.Train を呼び出します。ファインチューニングされたモデルは保存して、他のパイプラインと同様に再利用できます。

エコシステムとライセンス

  • プロジェクトはオープンソースです(MIT スタイルのバッジリンクは寛容なライセンスを示唆しています)。
  • 純 Go および XLA バックエンドには goMLX を、ORT バックエンドには ONNX Runtime を基盤としています。
  • すべての依存関係がプリインストールされた Docker イメージが提供されており、迅速なテストが可能です。

Hugot を選ぶべき時

  • すでに Go でサービスを書いており、Python から Go への RPC レイヤーを避けたい場合。
  • 低遅延のオンデバイス推論(例:エッジサービス、マイクロサービス、リアルタイム API)が必要な場合。
  • モデルが ONNX にエクスポート可能な場合(ほとんどの Hugging Face モデルが該当)。
  • Go エコシステムを離れずにオプションの GPU/TPU アクセラレーションを希望する場合。

上記のすべての情報はリポジトリの README から直接取得したものであり、外部の仮定は追加されていません。

関連

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