[論文レビュー] Optimizing Inference Performance of Transformers on CPUs
この論文では、モデルの精度を変更せずフレームワークの変更を要せず、1.44倍の高速化を実現する3つの行列乗算(matmul)最適化手法を提案することで、CPU上でのTransformer推論を最適化している。具体的には、適応的行列転置、matmul呼び出しにおける逐次的オーバーヘッドの低減、およびチューニングされた行列分割である。HuggingFaceのベンチマークを用いたBERTの評価において、これらの手法により最大2.37倍の高速化が達成された。
The Transformer architecture revolutionized the field of natural language processing (NLP). Transformers-based models (e.g., BERT) power many important Web services, such as search, translation, question-answering, etc. While enormous research attention is paid to the training of those models, relatively little efforts are made to improve their inference performance. This paper comes to address this gap by presenting an empirical analysis of scalability and performance of inferencing a Transformer-based model on CPUs. Focusing on the highly popular BERT model, we identify key components of the Transformer architecture where the bulk of the computation happens, and propose three optimizations to speed them up. The optimizations are evaluated using the inference benchmark from HuggingFace, and are shown to achieve the speedup of up to x2.37. The considered optimizations do not require any changes to the implementation of the models nor affect their accuracy.
研究の動機と目的
- 生産環境のWebサービスで広く使われているにもかかわらず、CPUベースのシステムにおけるTransformer推論性能の最適化はまだ十分に検討されていないという課題に取り組む。
- BERTのCPU上での推論において、行列乗算(matmul)が主なパフォーマンスボトルネックであることを同定する。
- モデルアーキテクチャの変更や推論精度への影響を伴わず、ハードウェアに適応した非侵襲的最適化を3つ提案し、matmul処理の高速化を実現する。
- Intel Skylake CPU上で、さまざまなシーケンス長およびスレッド数を想定した場合に、これらの最適化がスケーラビリティとパフォーマンスを顕著に向上させることを示す。
- BERTに限らず、異なるモデル(例:BERT-base)や数学ライブラリ(例:oneDNN)に対しても一般化可能であることを検証し、BERTにとどまらない応用可能性を拡張する。
提案手法
- 入力行列の転置を動的に選択する適応的行列転置を実装:データ局所性とキャッシュ利用効率を向上させる。
- ディープラーニングフレームワークにおけるmatmul呼び出しの毎回のレイテンシを分析し、スレッドレベルのスケーラビリティを向上させるために、逐次的オーバーヘッドを低減する。
- oneDNNのGEMMカーネルにおける行列分割パラメータ(BK, BM, BN)を最適化し、CPUキャッシュ階層に適合させる。特に、最終段階キャッシュ(LLC)ミスを低減する。
- BKを384から64に低減することで、より小さなキャッシュフレンドリーなサブ行列を生成し、命令レベル並列性を向上させるチューニングされた分割を適用する。
- パフォーマンスカウンタ(perfを介して取得)を用いて、最適化されたoneDNNバージョンでLLCミスが減少し、IPCが向上していることを検証する。
- PyTorchとoneDNNを用いたHuggingFaceの推論ベンチマークを用い、複数のシーケンス長およびスレッド数におけるレイテンシを測定することで、すべての最適化を評価する。
実験結果
リサーチクエスチョン
- RQ1なぜmatmulがCPU上でのBERT推論における主要なパフォーマンスボトルネックであり、スレッド数の増加に伴いそのスケーラビリティがどのように低下するのか?
- RQ2データ局所性とキャッシュ効率の向上によって、適応的行列転置がmatmulパフォーマンスにどの程度向上効果をもたらすのか?
- RQ3matmul呼び出しにおける逐次的オーバーヘッドがスケーラビリティを制限する理由は何か?また、基盤フレームワークを変更せずにこれを低減できるか?
- RQ4行列分割パラメータ(例:BK, BM, BN)のチューニングにより、CPUキャッシュの効果的利用とキャッシュミスの低減が達成され、実際にパフォーマンス向上が得られるのか?
- RQ5観察されたパフォーマンス向上は、異なるTransformerモデルや数学ライブラリに対しても一般化可能なのか?
主な発見
- 提案された最適化により、さまざまなシーケンス長およびスレッド数において、BERT-largeで最大2.37倍の推論高速化が達成された。
- 適応的行列転置は、短いシーケンス(例:8トークン)では最大1.44倍、長いシーケンス(例:384トークン)では16スレッドで1.19倍の高速化をもたらした。
- 行列分割サイズの低減(BKを384から64に)により、4スレッドで1.16倍、16スレッドで1.19倍の高速化が得られ、最終段階キャッシュ(LLC)ミスが顕著に減少した。
- パフォーマンスカウンタの結果から、最適化されたoneDNNバージョンではIPCが向上し、命令数はほぼ同等のまま、ハードウェア利用効率が向上していることが示された。
- これらの最適化は複数のモデルに有効である:BERT-baseに対してもチューニングされた分割により顕著なレイテンシ低減が確認され、より広範な適用可能性が裏付けられた。
- レイヤー正規化に費やす時間の割合は、1スレッドで2.9%から16スレッドで12%に上昇しており、今後の最適化対象としても同様の演算に注目すべきであることが示唆された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。