Hugging Face: 10億件の分類におけるコストとレイテンシの最適化

1日あたり10億件以上の分類または埋め込みを処理することは、主に財務的な課題です。Hugging Faceは、大規模推論におけるコストとレイテンシを計算し、最適化するための手法を開発しました。これにより、ハードウェア、バッチサイズ、並列処理の適切な組み合わせによって、クラウド支出を大幅に削減できることを実証しました。

10億件の入力に対するコストベンチマーク

NVIDIA L4 GPU($0.8/時)を使用した場合、10億件の入力を処理するコストは、モデルアーキテクチャとタスクによって劇的に異なります:

ユースケース モデル ハードウェア 10億件の入力コスト
Classification lxyuan/distilbert-base-multilingual-cased-sentiments-student nvidia-L4 $253.82
Embedding Alibaba-NLP/gte-modernbert-base nvidia-L4 $409.44
Vision-Embedding vidore/colqwen2-v1.0-merged nvidia-L4 $44,496.51

技術的な最適化フレームワーク

これらのコストを達成するために、Hugging Faceはデプロイと負荷テストに特定のスタックを利用しました:

  • Inference Server: マルチモーダル埋め込みの提供と、さまざまなハードウェア(AMD, Nvidia, CPU, Inferentia)のサポート能力から、Infinityが選ばれました。
  • Deployment: 柔軟なハードウェア選択が可能なHugging Face Inference Endpointsと、プログラムによるデプロイのためのHugging Face Hub Libraryを使用しました。
  • Load Testing: Grafanaのk6を使用し、shared-iterationsエグゼキュータを用いて並列クライアントリクエストをシミュレートし、スループットとP95レイテンシを測定しました。

主要な最適化パラメータ

効率は主に3つの変数によって駆動されます:

  1. INFINITY_BATCH_SIZE: 何個のドキュメントがフォワードパスを行うかを決定します。低すぎるとGPUの利用率が低下し、高すぎるとGPUの容量を超えてしまいます。
  2. Virtual Users (VUs): バッチサイズが十分に活用されるように、並列クライアントリクエストをシミュレートします。
  3. Hardware Choice: NVIDIA L4は、最新のワークロードにおいてNVIDIA T4やCPUよりも優れたパフォーマンス対コスト比を提供することが判明しました。

ユースケース分析

Text Classification

軽量な分類タスクには、DistilBERTが評価されました。10億件の入力に対して最も費用対効果の高い構成($253.82)は、デフォルトのInfinityイメージを使用し、バッチサイズ64、448 VUsでNVIDIA L4 GPUを利用したものでした。

Text Embeddings

ModernBERTは、Flash-Attention-2のサポートと8kのコンテキストウィンドウにより、埋め込みタスクに使用されました。10億件の入力に対する最適な構成($409.44)は、バッチサイズ32、256 VUsでNVIDIA L4 GPUを使用しました。

Vision Embeddings

ColQwen2を使用したVision-embeddingタスクは、モデルのパラメータサイズが2.21Bであること、およびColBERTスタイルのマルチベクトル表現(入力ごとに1つのベクトルではなく、各トークンに対してベクトルを返す)により、大幅に高価になります。10億件の入力に対する最も安価な構成は$44,496.51で、バッチサイズ4、4 VUsでNVIDIA L4を利用しました。

主な知見とトレードオフ

  • ハードウェア効率: 最新のエンコーダーワークロードには、T4よりもNVIDIA L4が好ましい選択肢です。
  • レイテンシとコストのトレードオフ: 許容レイテンシを増やすと、通常はスループットが向上し、全体的なコストが削減されます。この関係はパレート曲線によって可視化できます。
  • Visionコストのペナルティ: 画像ベースの検索は、モデルサイズが大きく、複雑なアーキテクチャ(デコーダーを含む)を持ち、画像データに対するAPI/エグレスコストが高いため、テキストベースのタスクよりも約2桁高価です。
  • スケーリング戦略: 水平方向にスケールさせるには、単一GPUのベースラインが確立された後、レプリカGPUを追加することでスループットを増やすことができます。

Sources