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 view2 views3 views
Roofline (GEMM のみ)12.8 ms19.7 ms26.7 ms
+ 同期オーバーヘッド13.7 ms20.6 ms27.6 ms
実装値20.0 ms27.3 ms36.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