Hugging Face Inference Endpoints を使用したエンベディングモデルのデプロイ
Hugging Face は、Text Embeddings Inference (TEI) を Inference Endpoints サービスに統合し、開発者が高スループットかつプロプライエタリな代替手段よりもはるかに低コストでオープンソースのエンベディングモデルをデプロイできるようにしました。この統合は、高速かつ効率的なデータのベクトル表現が品質の高い生成に不可欠である Retrieval Augmented Generation (RAG) ワークフローを最適化するために特別に設計されています。
Text Embeddings Inference (TEI) の機能
Text Embeddings Inference (TEI) は、オープンソースのテキストエンベディングモデルを提供するために特別に構築されたソリューションです。高パフォーマンスな抽出に最適化されており、Massive Text Embedding Benchmark (MTEB) リーダーボードの上位 10 モデル(E5、GTE、Ember、FlagEmbedding など)をサポートしています。
業界をリードするスループットとコスト効率を達成するため、TEI はいくつかの技術的最適化を実装しています:
- Inference Optimization: 最適化されたトランスフォーマーコードのために Flash Attention、cuBLASLt、および Candle フレームワークを利用します。
- Efficient Loading: Safetensors を使用して重みの読み込みを行い、モデルグラフのコンパイルステップを排除します。
- Operational Efficiency: 高速起動時間(サーバーレスパターンをサポート)のための小さな Docker イメージと、トークンベースの動的バッチングを特徴とします。
- Production Readiness: Prometheus メトリクスと、Open Telemetry を介した分散トレーシングを含みます。
パフォーマンスとコストベンチマーク
TEI を介してオープンソースモデルをデプロイすると、クローズドソースの API と比較して大幅なコスト削減が見込まれます。バッチサイズ 32、シーケンス長 512 トークンの Nvidia A10G Inference Endpoint で BAAI/bge-base-en-v1.5 モデルを使用したベンチマークでは、Hugging Face は次の成果を達成しました:
- Throughput: 1 秒あたり 450+ リクエスト。
- Cost: 1k トークンあたり $0.00000156 (1M トークンあたり $0.00156)。
Hugging Face の説明によると、これは OpenAI Embeddings(1k トークンあたり $0.0001 で価格設定)と比較して 64 倍のコスト削減を表しています。
Hugging Face Inference Endpoints を介したデプロイ
Inference Endpoints は、手動のインフラストラクチャ管理や MLOps の必要性をなくす管理された SaaS 環境を提供します。主な機能は次のとおりです:
- Simplified Deployment: 数回のクリックで本番稼働可能な API としてモデルをデプロイできます。
- Scaling and Cost Control: 自動スケールツーゼロをサポートし、非アクティブ期間中のコストを削減します。
- Enterprise Security: SOC2 Type 2 認証、GDPR データ処理契約、BAA、および直接 VPC 接続によるセキュアなオフライン エンドポイントを提供します。
- Broad Support: Sentence-Transformers、Diffusers、および 🤗 Transformers との互換性がすぐに利用可能です。
デプロイメントワークフロー
エンベディングモデルをデプロイするには、ユーザーはモデルリポジトリ(例えば BAAI/bge-base-en-v1.5)を選択し、クラウドプロバイダーとリージョンを選んで、インスタンスタイプを選択します。システムはモデルサイズに基づいてインスタンスタイプを提案しますが、高パフォーマンスベンチマークは Nvidia A10G のような GPU インスタンスを使用して達成されます。デプロイメントプロセスは通常、1 から 3 分かかります。
エンベディングエンドポイントの使用
エンドポイントがオンラインになると、Inference Widget を介して手動テストを行うか、cURL、Python、または JavaScript を使用した API リクエストでアクセスできます。
バッチ処理と切り詰め
TEI はバッチリクエストをサポートし、単一のリクエストで複数のドキュメントを送信してエンドポイントの利用率を高めることができます。ユーザーは、TEI が入力を自動的に切り詰めないことに注意する必要があります。切り詰めは、リクエストペイロードで truncate: true を設定することで明示的に有効にする必要があります。
Example Python request for batch embeddings:
import requests
API_URL = "https://your-endpoint-url.huggingface.cloud"
headers = {
"Authorization": "Bearer YOUR TOKEN",
"Content-Type": "application/json"
}
output = requests.post(API_URL, headers=headers, json={
"inputs": ["sentence 1", "sentence 2", "sentence 3"],
"truncate": True
}).json()