Roofline モデル(性能上限解析)
計算カーネルの実行時間の理論下限を、メモリ転送時間と演算時間の max で見積もるモデル。「演算律速 (compute-bound)」か「帯域律速 (bandwidth-bound)」かを切り分け、実装がどこまで最適に近いかを定量化する。realtime-vla-v2 / realtime-vla の推論最適化で「あとどれだけ縮められるか」を示す根拠として使われた。
GEMM 1 演算の下限
次元 N×K×M の BF16 行列積について、下限は
t_roofline = max( 2KM / T_bandwidth , NKM / T_compute )
- 第1項: 重み行列(K×M)の HBM ロード時間。活性化(N×K)と結果(N×M)はネットワークでは L2 キャッシュに載るため、メモリ項は重み2列ぶんのみを数える。
- 第2項: テンソルコアでの MAC 演算時間。
- RTX 4090 では帯域 1.01 TB/s、ブースト後 91.4 TMAC/s を使用。
ネットワーク全体への適用
pi0 の推論を 24 個の GEMM に分解し、各演算の roofline を和で合算する(sum-of-parts)。連続する2つの matmul は理論上オーバーラップ可能だが、Vision Encoder と LLM は演算律速、Action Expert は帯域律速とはっきり分かれるため、重なりは無視してよい。
| 1 view | 2 views | 3 views | |
|---|---|---|---|
| Roofline (GEMM のみ) | 12.8 ms | 19.7 ms | 26.7 ms |
| + 同期オーバーヘッド | 13.7 ms | 20.6 ms | 27.6 ms |
| 実装値 | 20.0 ms | 27.3 ms | 36.8 ms |
実装は下限まで約 30% の余地。すなわち「もう最適に近い」ことの証明になる。
同期オーバーヘッドの推定
1378 個のカーネルを連続起動する実験で、純計算(fused, no-sync)を基準に同期コストを測定:
- PyTorch 逐次起動: +12.92 ms(CPU オーバーヘッド込み)
- CUDA Graph: +1.72 ms
- ソフトウェアバリア(Triton の
atomic_add/atomic_orで全ブロック同期): +0.86 ms - fused no-sync: 0 ms(基準)
ソフトウェアバリアは CUDA Graph より速いが、グリッドサイズ整合やレジスタ増の副作用があり実用ではなく「下限の指標」として用いた。
ロボット実行への類推(V2)
faster-than-demonstration-execution では、計算の roofline に倣い、ロボット動作の実行速度の上限を「motion bounded(加速度・速度・ジャークがハード限界)」と「control bounded(制御遅延で成功率が崩れる)」の2領域に分解する upperbound 解析を提案している。
関連: vla-inference-graph-optimization / triton-language / parallel-computing