Hugging Face Accelerated Inference API Optimization

Hugging Faceは、Accelerated Inference API内でのtransformer推論において100倍のパフォーマンス向上を実現するために、一連の最適化戦略を実装しました。この改善は、リアルタイムの消費者向けアプリケーションのレイテンシが主要な制約となる本番環境に、大規模なNLPモデルをデプロイする際に極めて重要です。

High-Level Library and Pipeline Optimizations

Hugging Faceは、ターゲットとなるハードウェアに依存せず、TransformersおよびTokenizersライブラリ内の最も効率的な手法を利用することで、初期段階で10倍の高速化を実現しています。

Efficient Model Pipelines

APIは、各フォワードパス中の計算を削減するために、最適化されたモデルパイプラインを利用しています。GPTベースのテキスト生成タスクの場合、これは各パスにおける最後のトークンの新しいアテンションのみに焦点を当てることで、アテンション行列の計算の次元を削減することを含みます。

Rust-Based Tokenization

トークン化は推論効率のボトルネックになることが多いため、Hugging Faceは🤗 Tokenizersライブラリを介してモデルトークナイザーのRust実装を採用しています。スマートなキャッシングと組み合わせることで、このアプローチは全体のレイテンシを最大10倍高速化します。

Hardware-Specific Compilation and Low-Level Tuning

Hugging Faceは、初期の利得を超えてさらなる10倍のパフォーマンス向上を達成するために、モデルアーキテクチャとターゲットハードウェア(CPUまたはGPU)に特有の低レベル最適化を適用しています。

Static Graph Optimizations for CPU

CPUベースの推論の場合、チームは計算効率を最大化するために静的グラフ技術を採用しています。これらには以下が含まれます:

  • Graph Optimization: モデルグラフ内の未使用のデータフローを削除すること。
  • Layer Fusion: 特定のCPU命令を使用してレイヤーを結合すること。
  • Quantization: 精度と計算要件を削減するために操作を最適化すること。

Custom ONNX Runtime Implementations

Transformersと共にONNX Runtimeのようなオープンソースツールを使用することもできますが、Hugging Faceは、特に量子化の際、標準的な機能では最適ではない結果や大幅な精度低下を招く可能性があると指摘しています。チームは、TransformersのコードとONNX Runtimeの設定を、特定のモデルアーキテクチャに合わせて手動でチューニングすることで、さらなる高速化を実現しています。

Scaling for Large-Scale Model Architectures

モデルサイズの急速な増加(BERTの1億1000万パラメータからGPT-3の1750億パラメータへの成長)は、本番環境へのデプロイをますます困難にしています。Hugging Faceは、TransformersおよびTokenizersライブラリのメンテナーとしての地位、ならびにIntel、NVIDIA、Qualcomm、Amazon、Microsoftといったハードウェアおよびクラウドベンダーとのパートナーシップを活用し、最新のハードウェア最適化技術を使用してモデルとインフラストラクチャの交差点をチューニングしています。

Sources