[論文レビュー] Cortex: A Compiler for Recursive Deep Learning Models
Cortexは、カーネル結合やモデル永続化などのエンドツーエンド最適化を可能にするコンパイラであり、ベンダーライブラリに依存せずに、CPUおよびGPU上で先行研究と比較して最大14倍の低遅延推論を実現する。
Optimizing deep learning models is generally performed in two steps: (i) high-level graph optimizations such as kernel fusion and (ii) low level kernel optimizations such as those found in vendor libraries. This approach often leaves significant performance on the table, especially for the case of recursive deep learning models. In this paper, we present Cortex, a compiler-based approach to generate highly-efficient code for recursive models for low latency inference. Our compiler approach and low reliance on vendor libraries enables us to perform end-to-end optimizations, leading to up to 14X lower inference latencies over past work, across different backends.
研究の動機と目的
- 再帰的および動的ディープラーニングモデルの推論遅延のギャップを解消すること、特にCPUおよびGPU上で。
- cuDNN や MKL のようなベンダーライブラリが TreeLSTM や MV-RNN のようなあまり一般的でないモデルをサポートしていないという制限を克服すること。
- ブラックボックス型カーネル抽象化を避けることで、カーネル結合やモデル永続化などの積極的な最適化を可能にすること。
- 静的コンパイラベース最適化により、動的制御フローを伴う再帰的モデルの効率的な実行を可能にすること。
- 多様なハードウェア基盤で高いパフォーマンスを発揮できる、ポータブルでバックエンドに依存しないコンパイルスタックを提供すること。
提案手法
- 制御が入力データ構造にのみ依存することに着目し、再帰的制御フローを効率的なループベースの表現に下げる。
- スケジューリングプリミティブを用いて、テンソル計算の前段階で特殊化や動的バッチ処理などの静的最適化を実施する。
- 繰り返しの計算を再帰ループの外側に移動する計算ホイストを適用し、重複作業を削減する。
- 再帰的制御フローとテンソル代数を統合する中間表現(IR)を採用し、エンドツーエンド最適化を可能にする。
- スパース多面体フレームワークおよびインスペクターエグゼキューターモデルの技術を活用して、間接メモリアクセスとデータ構造レイアウトの表現および最適化を行う。
- モデル永続化やカーネル結合といった最適化を、コンパイラパイプライン内での一等級変換プリミティブとして形式化する。
実験結果
リサーチクエスチョン
- RQ1ベンダーライブラリベースのフレームワークと比較して、コンパイラベースのアプローチが再帰的ディープラーニングモデルの推論最適化において優れているか。
- RQ2実行時オーバーヘッドなしに、コンパイラIR内で再帰的制御フローを効果的に表現・最適化できるか。
- RQ3ベンダーライブラリの抽象化を避ける状況下で、カーネル結合やモデル永続化といったエンドツーエンド最適化を再帰的モデルにどの程度適用できるか。
- RQ4動的バッチ処理や計算ホイストといった静的最適化が、コンパイル時に再帰的モデルに効果的に適用できるか。
- RQ5多様なハードウェアバックエンドにおいて、カスタムコンパイルスタックのパフォーマンスは、既存のフレームワークと比較してどの程度優れているか。
主な発見
- Cortexは、CPUおよびGPUを含む複数のバックエンドで、先行研究と比較して最大14倍の低遅延推論を達成する。
- ベンダーライブラリを避けることで、積極的なカーネル結合が可能となり、カーネル起動オーバーヘッドが低減され、メモリアクセスパターンが改善される。
- モデル永続化が再帰的モデルに効果的に適用され、頻繁に再利用されるパラメータが高速なオンチップメモリに保持され、オフチップメモリアクセスが削減される。
- コンパイラベースのアプローチにより、静的動的バッチ処理と特殊化が可能となり、DyNet や PyTorch のようなフレームワークで見られる実行時オーバーヘッドが排除される。
- IR設計により、再帰的制御フローとテンソル計算を統合的に表現でき、両分野にわたる統合最適化が可能になった。
- Cortexの最適化は一般化可能であり、上位レベルのフレームワークの低レベルバックエンドとして利用可能で、動的モデルにおけるパフォーマンス向上に貢献できる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。