[実践的パフォーマンスエンジニアリングによるAI高速化 \| 技術評論社](https://gihyo.jp/book/2026/978-4-297-15349-6)
## 目次
第1章 パフォーマンスエンジニアリング概論
1.1 パフォーマンスエンジニアリングとは
1.2 なぜ今パフォーマンスエンジニアリングか
1.3 AI 処理の概要
1.3.1 AI モデルとは
1.3.2 Llama3
1.3.3 BEVFusion
1.3.4 学習と推論
1.4 ハードウェア環境の概要
1.5 パフォーマンスエンジニアリングの実践方法
1.5.1 推測するな、計測せよ
1.5.2 体系的な分析手法:USE メソッドとRED メソッド
1.5.3 5 段階の実践プロセス
1.5.4 継続的パフォーマンスエンジニアリング
1.5.5 組織にパフォーマンス文化を根付かせる
1.6 本書の構成
第2章 まずはパフォーマンスを計測する
2.1 計測とは
2.2 計測の基本戦略
2.2.1 目的を定める
2.2.2 対象の絞り込み
2.2.3 理論性能と実効性能の差の把握
2.2.4 チェックリスト
2.3 計測のための基礎知識
2.3.1 ハードウェアの動作モデル
2.3.2 性能指標の種類
2.3.3 性能指標の取り扱い
2.3.4 性能のモデル化
2.3.5 仮説駆動の計測
2.3.6 計測における観測者効果
2.4 計測の実践
2.4.1 正しさの検証
2.4.2 タイマーによる時間計測
2.4.3 NVIDIA Nsight Systems
2.4.4 NVIDIA Nsight Compute
2.4.5 PyTorch Profiler
2.5 まとめ
第3章 次にパフォーマンスを改善する
3.1 どこから着手するか
3.1.1 効果の高いところから
3.1.2 優先順位の見極め
3.2 アプリケーション・データ層の改善
3.2.1 適切なモデル
3.2.2 高品質なデータ
3.2.3 目的達成に最適な処理方法
3.2.4 最適なAI 処理フレームワーク
3.2.5 MLOps を構築して持続的な性能維持
3.3 モデル・アルゴリズム層の改善
3.3.1 モデル改善
3.3.2 アルゴリズム改善
3.4 ソフトウェア・フレームワーク層の改善
3.4.1 集団通信手法の選定
3.4.2 複数台による処理:分散並列
3.4.3 メモリ余地の捻出
3.4.4 演算とそれ以外の同時実行
3.4.5 連続的なデータアクセス:テンソルの次元の順番
3.4.6 処理の固定:深層学習コンパイラ
3.4.7 特定のモデルに特化した高速ライブラリの利用
3.5 ハードウェア・カーネル層の改善
3.5.1 ハードウェアの特性に合わせた調整
3.5.2 カスタムカーネルによる演算コードの改善
3.5.3 ハードウェアの変更
3.6 まとめ
第4章 実践1:LLM 推論
4.1 問題設定
4.1.1 計測の対象
4.1.2 ベンチマークスクリプトの作成
4.1.3 本章の構成
4.2 ベースラインの計測
4.2.1 ベースラインの実行
4.2.2 理論限界スループットとの比較
4.2.3 PyTorch Profiler による分析
4.3 パフォーマンス改善の実践
4.3.1 改善策の実施と分析
4.3.2 性能の最大化:GPU 計算負荷の増加
4.3.3 メモリ使用量の削減:重みの量子化(Quantization)
4.3.4 バッチサイズの増加
4.3.5 モデルサイズの増加と投機的デコーディング
4.4 さらなる高みへ:推論エンジンと高度な技術
4.4.1 vLLM:高スループット推論エンジンの仕組み
4.4.2 vLLM によるベンチマーク結果
4.4.3 量子化による精度の補足
4.5 まとめ
第5章 実践2:LLM 事後学習
5.1 問題設定
5.1.1 環境構築
5.2 計測
5.2.1 学習時間とLoss 値の確認
5.2.2 NVIDIA Nsight Systems によるプロファイリング
5.2.3 PyTorch Profiler によるプロファイリング
5.3 パフォーマンス改善手法の考察
5.4 精度に影響のないパフォーマンス改善
5.4.1 MemoryCallback の削除
5.4.2 ハイパーパラメータチューニング
5.4.3 Torch Compile の適用
5.5 精度に影響のあるパフォーマンス改善
5.5.1 グローバルバッチサイズの調整
5.6 まとめ
第6章 実践3:LLM(継続)事前学習
6.1 問題設定
6.1.1 概要
6.1.2 LLM 学習処理のおさらい
6.2 評価基準の決定
6.3 観測と改善の繰り返し
6.3.1 初期問題の発見
6.3.2 最適化器の変更
6.3.3 プロファイリングで次の改善点を探す
6.3.4 ハイパーパラメータの調整
6.3.5 ハイパーパラメータチューニングの効果の確認
6.3.6 ハイパーパラメータの知見と影響の考察
6.4 まとめ
第7章 実践4:自動運転AI 学習
7.1 問題設定
7.2 プロファイルの設定
7.3 データローダーの分析
7.3.1 ログの確認によるデータローダー性能の評価
7.3.2 nsys によるデータローダーのプロファイリング
7.4 train プロセスの分析
7.5 Voxelize の分析と改善
7.6 TransFusionHead のget_targets の分析と改善
7.7 DepthLSSTransform の分析と改善
7.7.1 matmul の高速化
7.7.2 CPU 律速の改善
7.8 まとめ
第8章 実践5:自動運転AI 推論
8.1 問題設定
8.1.1 題材デバイス
8.1.2 題材モデル
8.1.3 使用ツールのバージョン
8.1.4 本章の構成
8.2 エッジデバイスへのデプロイの基本
8.2.1 高速なアクセラレータ・ランタイムエンジンの活用
8.2.2 カスタム実装
8.2.3 補足:モデルの修正
8.3 量子化適用の留意点
8.3.1 量子化の適用ステージ
8.3.2 混合精度量子化の留意点
8.3.3 キャリブレーション手法
8.3.4 対称量子化と非対称量子化
8.4 BEVFusion のデバイスへのデプロイ
8.5 CUDA-BEVFusion の更なる高速化(概要)
8.5.1 計測
8.6 CUDA-BEVFusion の更なる高速化(詳細)
8.6.1 Camera Backbone の改善
8.6.2 画像データの転送部の改善
8.7 まとめ