16 KYOTO UNIVERSITY 通常の 64 bit int の足し算 0000101110100010100000111111000011101100001111100111110000010011 0000010011001001010101111010000000010101011111010000000010010100 0001000001101011110110111001000100000001101110110111110010100111 + 64 bit Arithmetic Logic Unit (ALU) int64 int64 int64
23 KYOTO UNIVERSITY 高速化を意識した訓練 vs 後処理による高速化 ◼ 推論の高速化を意識した訓練 vs 後処理による高速化 という構図は、量子化に限らず、様々な高速化のアプローチで 出てきます。 ◼ ただし、いくつかのアプローチでは、後処理には対応できず、 訓練時から採用する必要が生じます。
34 KYOTO UNIVERSITY Reference ◼ 有名論文紹介: ◼ [Jacob+ CVPR 2018] Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference. Pytorch と TensorFlow の量子化実装はこの論文に基づきます。
40 KYOTO UNIVERSITY 知識蒸留は回りくどいがノイズのために必要 ◼ 知識蒸留は回りくどいことをしているように見えます。 なぜ最初から小さいモデルを訓練しないのでしょうか? [Ba+ NeurIPS 2014] Do Deep Nets Really Need to be Deep? 訓練データ (確率的) 教師モデルの 出力 (決定的) 小さいモデルはノイジーなデータに 当てはまるのに苦労します。 小さいモデルにとっては、決定的な信号に 当てはまる方が簡単です。
46 KYOTO UNIVERSITY 畳み込み層は F x C x 3 x 3 のパラメータを持つ ◼ 3x3 畳み込み層の復習: K C x H x W F x C x 3 x 3 ∗ F x H x W チャンネル数 フィルタ数 各フィルタはチャンネルごとに重 みをもっている convolution
47 KYOTO UNIVERSITY フィルタ枝刈りは K[f, :, :, :] をグループとする ◼ フィルタ枝刈りは K[f, :, :, :] という形のグループを用いて 疎性を作ります。 K F x C x 3 x 3 K- F- x C x 3 x 3 フィルタ枝刈り [Wen+ NeurIPS 2016] Learning Structured Sparsity in Deep Neural Networks.
48 KYOTO UNIVERSITY チャンネル枝刈りは K[:, c, :, :] をグループとする ◼ チャンネル枝刈りは K[:, c, :, :] という形のグループを 用いて疎性を作ります。 K F x C x 3 x 3 K- F x C- x 3 x 3 チャンネル枝刈り [Wen+ NeurIPS 2016] Learning Structured Sparsity in Deep Neural Networks.
49 KYOTO UNIVERSITY 位置枝刈りは K[:, c, h, w] をグループとする ◼ 位置枝刈りは K[:, c, h, w] という形のグループを用いて 疎性を作ります。 K F x (C x 3 x 3) K- F x D 位置枝刈り [Wen+ NeurIPS 2016] Learning Structured Sparsity in Deep Neural Networks.
51 KYOTO UNIVERSITY 畳み込み層は行列積により実現する ◼ 畳み込み層の詳細な流れ: K C x H x W F x C x 3 x 3 F x HW X 各位置について パッチを抽出 X’ (H x W) x (C x 3 x 3) = HW x 9C flatten K’ F x (C x 3 x 3) = F x 9C 行列積 Y’ unflatten F x H x W Y
52 KYOTO UNIVERSITY 位置枝刈りにより列の数を削減することができる ◼ 位置枝刈りにより列の数を削除することができます。 C x H x W F x HW X X’ (H x W) x (C x 3 x 3) = HW x 9C K- F x D Y’ unflatten F x H x W Y X’’HW x D 列を削除 各位置について パッチを抽出 行列積
59 KYOTO UNIVERSITY 構造枝刈りは意味がないという批判がある ◼ 構造枝刈りついての批判: ◼ 後でフィルタを消すくらいなら最初からフィルタ数をその分小さく しておいた方がよい場合もあるようなので、気を付けましょう。 [Liu+ ICLR 2019] Rethinking the Value of Network Pruning. For all state-of-the-art structured pruning algorithms we examined, fine-tuning a pruned model only gives comparable or worse performance than training that model with randomly initialized weights [Liu+ ICLR 2019]. Zhuang Liu
65 KYOTO UNIVERSITY アテンション行列 A はグラム行列のようだ ◼ 続いて、アテンションの高速化を考えます。 ◼ A ij はクエリ Q i とキー K j の類似度を表しています。 A はほぼグラム行列とみなすことができます。 一旦、 A はガウスカーネルのグラム行列とみなしましょう。 Y Softmax Q KT V = A
66 KYOTO UNIVERSITY グラム行列は効率よく近似することができる ◼ 続いて、アテンションの高速化を考えます。 ◼ グラム行列はランダム特徴量 [Rahimi+ NeurIPS 2008] や Nystrom 近似 [Williams+ NeurIPS 2000] などで高速に近似で きます。 Y Softmax Q KT V ≈ Q’ [Rahimi+ NeurIPS 2008] Random Features for Large-Scale Kernel Machines. [Williams+ NeurIPS 2000] Using the Nyström Method to Speed Up Kernel Machines. K’T Q のランダム特徴量 K のランダム特徴量
73 KYOTO UNIVERSITY Mobilenets は空間方向とチャンネル方向に分ける ◼ MobileNets: K1 C x H x W C x 3 x 3 ∗ F x H x W d C x H x W 深さごとの 畳み込み K2 F x C x 1 x 1 ∗ 標準の 畳み込み 1/F の削減 1/9 の削減
75 KYOTO UNIVERSITY FLOPs は良い評価指標ではない Irwan Bello [Bello+ NeurIPS 2021] Revisiting ResNets: Improved Training and Scaling Strategies. [Dehghani+ ICLR 2022] The Efficiency Misnomer. FLOPs is not a good indicator of latency on modern hardware. [Bello+ NeurIPS 2021] ◼ アーキテクチャの効率はしばしば FLOPs で評価されます。 ◼ 批判:
78 KYOTO UNIVERSITY 異なるテクニックは組み合わせることができる ◼ 高速化の種々のテクニックは組み合わせることができます。 ◼ Deep Compression [Han+ ICLR 2016] は枝刈りと量子化を 組み合わせて高い圧縮率を達成します。 [Han+ ICLR 2016] Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding.