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つの変数によって駆動されます:
INFINITY_BATCH_SIZE: 何個のドキュメントがフォワードパスを行うかを決定します。低すぎるとGPUの利用率が低下し、高すぎるとGPUの容量を超えてしまいます。- Virtual Users (VUs): バッチサイズが十分に活用されるように、並列クライアントリクエストをシミュレートします。
- 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
- Original1 Billion Classifications