# GPU観測性 ## 定義 GPU観測性(GPU observability)とは、GPU 上で実行されるカーネル・メモリ転送・演算子・スケジューリングといった挙動を、性能ボトルネックや異常箇所の特定に足る粒度で外部から可視化する取り組み。ベンダー提供のプロファイラ(NVIDIA の CUPTI・NVBit・Nsight)が高い詳細度を持つ一方で、オーバーヘッドが大きい・稼働中カーネルを中断する侵襲的計装を要する・ベンダーロックインを伴う、という共通の課題を持つ。([[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]]) これを低オーバーヘッド・非侵襲・ベンダー非依存で代替しようとする系統が近年立ち上がっている。 ## 横断的知見 - **計装の「挿入時点」で 3 系統に分かれ、オーバーヘッドと粒度がトレードオフになる**: (a)**コンパイル時計装** — [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]] は LLVM パスで制御フローを静的に解いてバッファを事前確保し、Rodinia で全体 1.60×(中央値 1.26×)と類似研究比で 1 桁の低オーバーヘッドを得る。(b)**実行時 PTX 注入** — [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] は eBPF バイトコードを PTX に JIT して稼働中カーネルへ中断なしに注入する。(c)**ホスト側 eBPF フック** — [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]]・[[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]] はランタイム関数(uprobe)や GPU ドライバ呼び出し(ioctl)を傍受し、GPU 内部には踏み込まずホスト側からカーネル実行を再構成する。「先に制御フローを解く(コンパイル時)/稼働中に書き換える(PTX)/外から覗く(ホスト eBPF)」の差がそのままコストと観測対象の差になる。(Source: [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]]) - **ベンダー専用ツール回避が共通の動機**: CUPTI・NVBit・Nsight は eInfer・eGPU・TOPC のいずれもが「高オーバーヘッド/侵襲的/ベンダーロックイン」として明示的な比較対象に置く。eInfer はベンダー非依存で CUPTI に近い精度を、eGPU は NVBit ベースの gpumemtrace より低オーバーヘッドを主張する。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **ホスト側 eBPF は GPU 内部の死角が残る**: eInfer・eGPU はともに、SM 利用率などの GPU マイクロアーキテクチャ内部情報は依然ハードウェアカウンタ([[ハードウェアカウンタ]])に依存すると認める。eBPF はホスト側(ドライバ・スケジューリング・メモリ操作)の傍受に強いが、デバイス内部の可視性はカウンタや PTX 注入で別途補う必要がある。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **低オーバーヘッドが各系統で実証され始めた**: eInfer <4%、ProfInfer はランタイム速度低下 5% 未満(libbpf 最小 1.19%、token/graph レベルのみなら 0.1%)、TOPC は実行時間 1.5〜1.6×。低オーバーヘッドは「常時プロファイリングに近い本番運用」を可能にする点で各論文が価値とみなす。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]], [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]]) - **観測性は「正しさ検証」の基盤にもなる**: [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]](PICKER)は GPU 動的計装(NVBit 系)で全メモリアクセスを追跡し、カーネルの[[べき等性]]検証に用いる。GPU 観測性は性能診断だけでなく耐障害・スケジューリングの正しさ判定にも転用される。(Source: [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **全スタックトレースの計装方式で侵入度が分かれる**: [[@2024__NSDI__MegaScale - Scaling Large Language Model Training to More Than 10,000 GPUs]] はバックエンド(FSDP)へパッチを当てる侵入方式、[[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]] は CPython PyEval_SetProfile + LD_PRELOAD で非侵入・プラグアンドプレイを実現し全スタック性とバックエンド拡張性を両立する。(Source: [[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]], [[@2024__NSDI__MegaScale - Scaling Large Language Model Training to More Than 10,000 GPUs]]) - **プラットフォーム標準の GPU メトリクス監視が「平均値のみ」では低利用率の根本原因を隠す**: [[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]] が対象とした Platform-X は NVIDIA DCGM で GPU 利用率を収集し、平均 GPU 利用率 50% 以下をフィルタリング基準として低利用率ジョブを抽出した。しかし DCGM の平均利用率だけでは「なぜ低いか」——ホスト-GPU 転送待ち(27.90%)、バッチサイズ不足(25.64%)、同期チェックポイントのブロッキング(16.43%)——を区別できず、原因特定には別途コードレベルの人手分析が要った。標準的なプラットフォームメトリクス(DCGM 等)は利用率の閾値アラートには使えるが、根本原因の分類には粒度が不足している。(Source: [[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]]) - **Meta の 4 層スタックは「測定→分析→最適化」を組織的に分離している**: [[@2023__SystemAtScale__AI Observability]] は (1)ベアメタルテレメトリ([[Dynolog]])・(2)高度イントロスペクション([[Kineto]]/Strobelight/[[Gpusnoop]])・(3)スケール分析プラットフォーム(自動回帰検知)・(4)フリートダッシュボードという 4 層に役割を分け、ジョブ/ユーザー/モデル/プロダクト別のフリートリソース帰属を実現する。同じ問題を研究論文群(eInfer・eGPU・XPUTimer)は「単一プロファイラをどう低オーバーヘッドにするか」と問うのに対し、Meta は「複数ツールをどうスタックとして組み合わせ組織的に運用するか」と問う。研究視点と産業視点の分断が浮かぶ。(Source: [[@2023__SystemAtScale__AI Observability]]) - **FLOPs/sec と rDevice hour/Byte は「効率」の 2 つの軸を測る**: Meta は FLOPs/sec(計算量/時間)を一次効率メトリクスとし、rDevice hour/Byte を正規化コストメトリクスとして使い分ける。FLOPs/sec は「GPU が計算を速くこなせているか」を評価し、rDevice hour/Byte は「その計算コストがモデル/プロダクト横断で高いか安いか」を評価する。[[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]] でも MFU(Model FLOPs Utilization)が同様の役割を担うが、Meta はコスト正規化指標を別途持つ点が独自。(Source: [[@2023__SystemAtScale__AI Observability]], [[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]]) - **GPU 利用率の時系列波形は根本原因の手がかりを持つが、現状の監視スタックはこれを活用していない**: Platform-X のデバッグ手順では、利用率の「断続的なゼロ」はホスト-GPU 転送や分散通信起因、「一定の低水準値」はバッチサイズ不足、「エポック末の急落」はチェックポイントブロッキングという視覚的パターンが観察される([[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]])。既存のベンダー専用ツール(DCGM / Nsight)は時系列の収集はできるが、パターンからの根本原因推定は手動。eInfer・eGPU・XPUTimer のような細粒度計装と組み合わせて、DataLoader のピニング有無やチェックポイント呼び出しを GPU 利用率の波形と突き合わせる「原因つき時系列観測」は、現時点では研究提案段階([[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]] §5 のコードアドバイザー提案)であり、本番環境での実装は未解決である。(Source: [[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]], [[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]]) - **GPU ゼロコード計装が CUDA API 層・ドライバ層・GPU 内部層の 3 階層に整理された**: [[@2025__YAPC Fukuoka 2025__SREのためのテレメトリー技術の探究]](p.56–57)は GPU ゼロコード計装の最先端を 3 層に整理した。(1) CUDA API 層: uprobes / libcudart.so でメモリ割当・転送・同期・カーネル起動関数をフック。Python プロセスとの紐づけ可能だが非同期や GPU 内部の詳細計測は困難。(2) GPU ドライバ層: tracepoints / kprobes で OS カーネルの範疇を計測。ランキュー深さや XID エラーを計測可能。(3) GPU 内部層: PTX(GPU 中間表現)コードへ eBPF コードを注入する bpftime。非同期でも GPU 内部基準の時刻がわかり、ワープやスレッド単位の粒度で計測できる。さらに p.57 では分散トレーシングへの帰着には各層のイベントを相関させる必要があるが、現状そのようなツールは存在せず研究開発領域であるとする。これは本ページの「ホスト側 eBPF は GPU 内部の死角が残る」知見を 3 層の構造として再確認し、[[eGPU]] の PTX 注入が GPU 内部層に相当することを一般聴衆向けに位置づけた。(Source: [[@2025__YAPC Fukuoka 2025__SREのためのテレメトリー技術の探究]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **クラウド事業者の責任境界が GPU プロファイリングを制約する**: [[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]] は、AI スパコンサービスではユーザーのアプリケーションコードを計装できず、アプリケーションログも取得できないため、プロバイダ側の可観測性が GPU/CPU/NIC/ストレージなどのリソース分析から始まることを示す。PyTorch Profiler は順伝搬処理の内訳を見せられるが、ユーザーが有効化する必要があり、報告例では遅延を増やすため、プラットフォーム要件には合わない。これは eInfer/eGPU/XPUTimer 系の「非侵入・低オーバーヘッド」要求が、責任境界から来る運用要件であることを補強する。[[@2025__O11yConTokyo2025__AIスパコン「さくらONE」のオブザーバビリティ]] は同じ責任境界の制約を再確認しつつ、PyTorch Profiler のオーバーヘッドを EuroMLSys 2023 から引用して **1.42 倍の遅延増加**と定量化した。GPU 利用率 100% でもテンソルコア使用率 40–50% でようやく良い効率とする運用実感も口頭で補足されており、DCGM の平均利用率だけでは根本原因を区別できないという本ページの既存知見([[@2024__ICSE__An Empirical Study on Low GPU Utilization of Deep Learning Jobs]])を事業者視点で裏づける。(Source: [[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]], [[@2025__O11yConTokyo2025__AIスパコン「さくらONE」のオブザーバビリティ]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **CPU 側 CUDA API トレースが、GPU 観測性の実装入門として機能する**: [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]] は `libcudart.so` への uprobe により、メモリ割当・転送方向・カーネル起動・ストリーム/イベント同期をリアルタイムに可視化するチュートリアルである。CUDA API 呼び出しあたり約 2 µs のオーバーヘッドで、GPU 利用のライフサイクル(割当→H2D→カーネル→D2H→解放)を再構成できる。この実装は、GPU 内部に踏み込む PTX 注入(eGPU)の前段階として、ホスト側からの非侵襲計装がどのような粒度と限界を持つかを具体例で示す。(Source: [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]]) - **ARGUS は CUPTI Activity API 単体で「10,000 GPU 以上の本番常時稼働・2% 未満オーバーヘッド」を実証し、「カーネルトレースは高オーバーヘッド不可避」という仮定に反証した**: [[@2026__arXiv__ARGUS - Production-Scale Tracing and Performance Diagnosis for over 10,000-GPU Clusters]] は eGPU・eInfer・Neutrino のような「eBPF/PTX 注入で既存プロファイラのオーバーヘッドを下げる」方向とは別に、CUPTI Activity API を 3 経路アーキテクチャ(制御パス/収集パス/処理エクスポートパス)に分離することでコールバックのホットパスブロッキングを排除し、カーネルトレーシング単体で 1〜2% のオーバーヘッドを達成した。PyTorch Profiler が 20〜44% の遅延増加で OOM、nsys が常時稼働で訓練を破壊(オブザーバー効果)する実験と比較すると、「既存プロファイラが高コストなのは実装の選択の問題であり、原理的に不可避ではない」ことを示す。さらに KDE クラスタリングで生 10 MB を 2.7 KB に圧縮し、10,000 GPU スケールのリアルタイム cross-rank 比較を可能にした点は、「細粒度データは保存・比較できない」という別の制約も同時に覆す。6 ヶ月以上の本番デプロイはプロトタイプではなく生産システムとしての実証である。(Source: [[@2026__arXiv__ARGUS - Production-Scale Tracing and Performance Diagnosis for over 10,000-GPU Clusters]]) - **eGPU ブログ記事は既存 GPU ツールの制約を 3 類型に整理した**: [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]] は (1)CPU-GPU 境界トレースツール(黒箱)、(2)ベンダー専用重weightプロファイラ(閉じたイベントモデル・本番不向き)、(3)研究ツール(CUPTI/NVBit/NEUTRINO の高オーバーヘッド・アセンブリ依存)という 3 類型を提示し、eBPF on GPU がそれらの制約をプログラマブル・低オーバーヘッド・ベンダー非依存で解消する方向を示した。これは既存の「ベンダー専用ツール回避」動機を体系化した位置づけにある。(Source: [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]]) ## 未解決の問い - ホスト側傍受(eBPF)だけで GPU 内部の可視性(SM 占有・ワープ実行・キャッシュ挙動)をどこまで補えるか。PTX 注入(eGPU)とハードウェアカウンタ(PMC)の併用が現実解か。 - コンパイル時計装(TOPC)と実行時計装(eGPU/eInfer)の最適な使い分けは。決定的実行を要する正しさ検証は前者、動的・本番常時観測は後者、という分業が成り立つか。 - エッジ/オンデバイス(ProfInfer の Orange Pi・Rubik Pi)とサーバ/分散(eInfer・NCCLX)で得た観測知見は相互に外挿できるか。 - 本 vault の machine-level 箇所特定([[Pulse]]・[[Minder]])やアプリ層 AIOps と、GPU/カーネル/デバイス層の観測はどう統合されるか([[eBPF]] の問いと共通)。 - 選択計装の「重要オペレータのみ」前提は、新規アルゴリズムが minority kernel を増やしたときどこまで死角を残すか。([[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]]) - GPU ドライバ層・CUDA API 層・GPU 内部層を計装できても、それを深層学習フレームワーク層の順伝搬・逆伝搬・重み更新・集団通信スパンへどう帰着するか。講演資料は、分散トレーシングへの帰着には各層イベントの意味づけが必要だが、現状は研究開発領域だと整理する。([[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]]) - ARGUS は CUPTI Activity API を 3 経路分離で 1〜2% まで下げたが、PyTorch Profiler・nsys と比べると「何を取れていないか(SM 占有率・ワープ実行・L2 キャッシュ挙動等)」はどこか。CUPTI Activity API の粒度上限で診断できない障害クラスはあるか。 - eBPF on GPU(eGPU) の verifier が SIMT 実行モデルに対してどの程度の安全性保証を与えられるか。本番常時運用時のオーバーヘッドとサンプリング戦略の最適値は何か。([[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]]) ## 関連 - ソース: [[@2023__SystemAtScale__AI Observability]] / [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]] / [[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]] / [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] / [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]] / [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]] / [[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]] / [[@2024__NSDI__MegaScale - Scaling Large Language Model Training to More Than 10,000 GPUs]] / [[@2025__SpeakerDeck__AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性]] / [[@2025__O11yConTokyo2025__AIスパコン「さくらONE」のオブザーバビリティ]] - 概念: [[eBPF]] / [[動的計装]] / [[ハードウェアカウンタ]] / [[テレメトリ]] / [[LLM推論]] / [[GPUクラスタ運用]] / [[eGPU]] / [[PTX 注入]] - エンティティ: [[NVBit]] / [[CUPTI]] / [[PTX]] / [[bpftime]] / [[hip-analyzer]] / [[eGPU]] / [[eunomia-bpf]] / [[libbpf]] / [[yunwei37]] - 関連 MOC: [[AI Infra Telemetry - MOC]] ## 出典 - [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]](実行時 PTX 注入・NVBit/CUPTI 比較) - [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]](ホスト側 eBPF 傍受・ベンダー非依存) - [[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]](オンデバイス・5% 未満オーバーヘッド) - [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]](コンパイル時計装・1 桁削減) - [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]](観測による正しさ検証) - [[@2025__arXiv__XPUTimer - Anomaly Diagnostics for Divergent LLM Training in GPU Clusters of Thousand-Plus Scale]](CPython PyEval_SetProfile + LD_PRELOAD による非侵入・全スタック計装) - [[@2024__NSDI__MegaScale - Scaling Large Language Model Training to More Than 10,000 GPUs]](バックエンド計装による全スタックトレース) - [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]](CUDA API 層の uprobe トレース実装・約 2 µs オーバーヘッド) - [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]](既存 GPU ツールの 3 類型整理と eBPF on GPU の方向性)