[論文レビュー] Automating Generation of Low Precision Deep Learning Operators
本論文は、TVMの自動チューニングおよびコード生成機能を活用して、CPU向けに高パフォーマンスな低精度ディープラーニング演算子を自動生成するワークフローを提示する。Raspberry Pi 3Bにおける1ビット重みおよび2ビット活性化畳み込みにおいて、16ビット整数ベースライン比で最大16倍の高速化を達成し、手動最適化されたARMカーネルよりも2.3倍の高い性能を発揮した。
State of the art deep learning models have made steady progress in the fields of computer vision and natural language processing, at the expense of growing model sizes and computational complexity. Deploying these models on low power and mobile devices poses a challenge due to their limited compute capabilities and strict energy budgets. One solution that has generated significant research interest is deploying highly quantized models that operate on low precision inputs and weights less than eight bits, trading off accuracy for performance. These models have a significantly reduced memory footprint (up to 32x reduction) and can replace multiply-accumulates with bitwise operations during compute intensive convolution and fully connected layers. Most deep learning frameworks rely on highly engineered linear algebra libraries such as ATLAS or Intel's MKL to implement efficient deep learning operators. To date, none of the popular deep learning directly support low precision operators, partly due to a lack of optimized low precision libraries. In this paper we introduce a work flow to quickly generate high performance low precision deep learning operators for arbitrary precision that target multiple CPU architectures and include optimizations such as memory tiling and vectorization. We present an extensive case study on low power ARM Cortex-A53 CPU, and show how we can generate 1-bit, 2-bit convolutions with speedups up to 16x over an optimized 16-bit integer baseline and 2.3x better than handwritten implementations.
研究の動機と目的
- CPU向けの最適化済み低精度演算子がディープラーニングフレームワークに不足している問題に対処する。
- 任意の低精度(1〜4ビット)向けに効率的なビットシリアル演算子を生成することで、低消費電力デバイスにおける高パフォーマンス推論を可能にする。
- 単純なビットシリアル実装では8ビット整数演算でさえも性能を下回る性能ボトルネックを克服する。
- 自動コード生成と自動チューニングが、ARMおよびX86アーキテクチャ上で手動最適化カーネルを上回ることを示す。
- 最小限の工学的作業と最大限の移植性で、極めて量子化されたモデル(例:1ビット重み、2ビット活性化)のデプロイを可能にする。
提案手法
- TVMに量子化データ型およびビットレベル演算(例:ビットパック、ビットシリアル行列乗算)をサポートする拡張を施す。
- TVMの自動チューニングインfraを活用し、CPUアーキテクチャに応じた最適なメモリタイリングおよびベクトル化パラメータを探索する。
- カスタマイズ可能なスケジューリングを備えた、量子化、ビットパック、低精度畳み込みのための柔軟な演算子ライブラリを実装する。
- ベクトル命令(例:ARM NEON、X86 AVX2)とインプレース畳み込みを活用し、メモリ帯域幅と重複を削減する。
- 低精度演算を下位のハードウェア命令セットに効率的にマップするため、テンソル化された内側ループスケジューリングを適用する。
- X86には汎用CPUスケジュールを、ARMにはカスタムスケジュールを適用し、ターゲットデバイスでのパフォーマンスを最大化する。
実験結果
リサーチクエスチョン
- RQ1自動コード生成と自動チューニングを用いることで、低消費電力CPU上で手動最適化実装を上回る低精度ディープラーニング演算子を生成できるか?
- RQ2メモリタイリングとベクトル化は、1〜4ビット精度のビットシリアル畳み込みカーネルのパフォーマンスにどのように影響するか?
- RQ3ARMおよびX86アーキテクチャにおいて、異なるビット幅の組み合わせ(例:W1A1、W2A2、W4A4)における低精度畳み込みのパフォーマンススケーリング特性はいかなるものか?
- RQ4ベクトル化されたpopcountや命令レベル並列性といったアーキテクチャ的特徴は、低精度推論における達成可能な高速化にどの程度寄与するか?
- RQ5最小限の手動チューニングで複数のCPUアーキテクチャを効果的にターゲットにできる単一のコード生成ワークフローを構築できるか?
主な発見
- 提案されたワークフローは、ARM Cortex-A53における1ビット重みおよび2ビット活性化畳み込みにおいて、16ビット整数ベースライン比で最大16倍の高速化を達成した。
- Raspberry Pi 3Bでは、シングルスレッド実装が手動最適化されたCaffe2超低精度ライブラリを2.3倍上回った。特にストライド2の1x1畳み込みで顕著な性能向上が見られた。
- TVMの自動チューニングによる最適化タイリングパラメータの適用により、性能が悪いレイヤーを除いて、ベースライン比で1.6倍のパフォーマンス向上が達成された。
- X86アーキテクチャでは、汎用CPUスケジュールが、32ビット浮動小数点ベースライン比で平均して5.38倍(W1A1)、2.73倍(W1A2)、1.69倍(W2A2)の高速化を達成した。
- W2A2はW1A4と同等の計算複雑度であったが、1.3倍の高いパフォーマンスを発揮した。これは、ビット平面間でのデータ再利用の向上による利点を示している。
- Raspberry Piで生成された1ビット重みおよび2ビット活性化演算子を用いたResNet18のエンドツーエンド推論では、フル精度推論比で3.3倍の高速化が達成された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。