目次
第1章 はじめに
1.1 高速化の意義
1.2 高速化の理論的背景
1.3 用語の整理
第2章 高速化手法の概要
2.1 量子化と低精度計算
2.2 枝刈り
2.3 蒸留
2.4 低ランク近似
2.5 高速なアーキテクチャ
2.6 ハードウェアの改善
2.7 複数の技法の組み合わせ
2.8 その他の技法
- 2.8.1 入力データの縮小
- 2.8.2 バッチサイズの引き上げ
- 2.8.3 コンパイル
- 2.8.4 メモリ配列の最適化
- 2.8.5 古典的なモデルの活用
- 2.8.6 パイプラインの最適化
第3章 量子化と低精度計算
3.1 16ビット浮動小数点数
- 3.1.1 メモリ消費量削減のための低精度化
- 3.1.2 通信量とストレージ消費削減のための低精度化
3.2 その他の低精度浮動小数点数フォーマット
- 3.2.1 BF16
- 3.2.2 TF32
- 3.2.3 FP8
3.3 自動混合精度計算
3.4 整数量子化
- 3.4.1 何を量子化するのか
- 3.4.2 追加訓練を含むか否か
- 3.4.3 量子化の演算
- 3.4.4 量子化スケールの決定方法
- 3.4.5 量子化する層の選択
- 3.4.6 量子化を意識した訓練
- 3.4.7 量子化による訓練の高速化
- 3.4.8 実例と事例紹介
- 3.4.9 量子化のライブラリ
- 3.4.10 量子化手法の決定手順
3.5 1ビット量子化
- 3.5.1 ビット並列計算
- 3.5.2 実例:BinaryNetとXNOR-Ne
- 3.5.3 実例:1 bit LLM
3.6 なぜ低精度計算でうまくいくのか
- 3.6.1 平坦解
- 3.6.2 確率的勾配降下法による平坦解と腑落ち
- 3.6.3 長い訓練の重要性
- 3.6.4 平坦解を得やすいアーキテクチャ
- 3.6.5 盆地と線形峰接続が表しているもの
- 3.6.6 平坦解が表しているもの
- 3.6.7 平坦解が最善とは限らない
第4章 枝刈り
4.1 代表的な枝刈り手法
- 4.1.1 正則化
- 4.1.2 事例
- 4.1.3 なぜ枝刈りでテスト性能が向上するのか
4.2 訓練前の枝刈り
4.3 構造枝刈り
- 4.3.1 畳み込み層とim2col操作
- 4.3.2 畳み込み層に対する構造枝刈り
- 4.3.3 注意層に対する構造枝刈り
4.4 枝刈りの実装
4.5 ReLU活性化関数を用いた適応的な枝刈り
- 4.5.1 ReLU活性化は構造枝刈りに対応する
- 4.5.2 ReLU化
- 4.5.3 疎性予測による適応的な枝刈り(Deja Vu)
4.6 なぜ枝刈りを行うのか・なぜうまくいくのか
- 4.6.1 宝くじ仮説
4.7 枝刈りの使いどころ
第5章 蒸留
5.1 蒸留の問題設定
5.2 蒸留のアプローチ
- 5.2.1 応答蒸留
- 5.2.2 特徴蒸留
5.3 生徒モデルの選び方
5.4 推論に必要なデータの変更
5.5 生成モデルの利用
5.6 事例
5.7 なぜ蒸留でうまくいくのか
5.8 蒸留の使いどころ
第6章 低ランク近似
6.1 低ランク性とは
- 6.1.1 データとパラメータの低ランク性
6.2 畳み込みニューラルネットワークの低ランク近似
- 6.2.1 空間方向の低ランク近似
- 6.2.2 フィルタ方向の低ランク近似
- 6.2.3 重み近似
- 6.2.4 出力近似
- 6.2.5 実例
6.3 注意機構の低ランク近似
- 6.3.1 注意機構について
- 6.3.2 カーネル法と注意機構
- 6.3.3 カーネル関数の定義
- 6.3.4 ランダム特徴量
- 6.3.5 ランダム特徴量を用いたカーネル法の近似
- 6.3.6 ランダム特徴量を用いた注意機構の近似
- 6.3.7 正値直交ランダム特徴量とPerformer
- 6.3.8 ナイストローム近似*
- 6.3.9 低ランク近似を組み込んだアーキテクチャを使う
第7章 高速なアーキテクチャ
7.1 深さ単位分離可能畳み込み
7.2 高速なトランスフォーマーの亜種
- 7.2.1 フラッシュアテンション
- 7.2.2 低ランクなトランスフォーマー
- 7.2.3 再帰型ニューラルネットワークとトランスフォーマーとMamba
- 7.2.4 疎なトランスフォー
- 7.2.5 Reformerと局所性鋭敏型ハッシュ
- 7.2.6 フーリエ変換を用いたアーキテクチャ
7.3 ニューラルアーキテクチャ探索
7.4 高速なアーキテクチャと圧縮手法の比較
第8章 チューニングのためのツール
8.1 PyTorchプロファイラ
8.2 CPU上のプロファイリング
- 8.2.1 Intel Vtune Profile
- 8.2.2 Perf
8.3 GPU上のプロファイリング
- 8.3.1 nvidia-smi
- 8.3.2 DLProfとNVIDIA Nsight
第9章 効率的な訓練
9.1 省メモリ化
- 9.1.1 パラメータ効率的ファインチューニング
- 9.1.2 勾配チェックポイント
9.2 モデルパラメータの算術
- 9.2.1 モデルスープ
- 9.2.2 整合性のないモデルのマージ
- 9.2.3 タスクベクトル
- 9.2.4 モデルパラメータとニューラルタンジェントカーネル