メインコンテンツまでスキップ
バージョン: v2509

性能を分析する

Performance Overview

このダッシュボードでは、観測対象のすべてのGPUホストの性能に関する情報を一覧することができます。

ページ最上部には、対象区間におけるGPUの重要なメトリクスの統計値が表示されています。 これらの値が100%に近いほど、GPUが頻繁に使用されていることを意味します。

grafana-performance-overview-1

その下には、これらのメトリクスのホストごとの時系列推移や、GPUごとのヒートマップが合わせて表示されています。

grafana-performance-overview-2

ダッシュボードの最下部では、ホストやジョブの情報がテーブルとして表示されています。 各行はハイパーリンクになっており、このリンクをクリックすることで、該当するホストやジョブごとのPerformance Detailsダッシュボードに遷移することができます。

grafana-performance-overview-3

ホストとは、AIBoosterが観測している各計算機ノードのことです。

ジョブとは、プロセスツリーIDと呼ばれるプロセスに関するメタ情報が、特定の条件に当てはまるプロセスを指します。 プロセスツリーIDとは、あるプロセスのすべての親プロセスにおける /proc/<pid>/comm を古い順に並べ、 / で区切ったものです。 デフォルトでは、以下の正規表現にマッチするプロセスツリーIDがジョブとして扱われます。

systemd.*/([a-z]*sh|containerd-shim-runc-v2)/.*python[0-9.]*$

この表現を解釈すると、コンテナ内、あるいはシェルから呼び出されたPythonプロセスは、すべてジョブとして扱われる、ということになります。

Performance Details / Host

Performance Overviewから指定のHostを選択すると、このダッシュボードを表示できます。 ホストごとの性能メトリクスを一覧できるため、特定のノードでのリソース使用状況やボトルネックを分析することができます。

grafana-3

続くパネルでは、以下のメトリクスを時系列グラフとして表示しています。

  • GPU Utilization
  • GPU SM Activity
  • CPU Utilization
  • Memory Bandwidth
  • L2 Cache Hit Ratio
  • L3 Cache Hit Ratio
  • Network Bandwidth
  • Storage Bandwidth

grafana-4

また、Profileパネルでは、ノード上で動作しているプログラムのフレームグラフを見ることができます。 フレームグラフは、サンプリングされたスタックトレース情報を再構築することで、プログラムのボトルネックをソースコードレベルで解析するためのパネルです。 フレームグラフの詳細については解説ページを参照してください。

grafana-5

以下のPrometheusエクスポーターがサポートされており、これらのメトリクス情報によってシステム全体のパフォーマンスボトルネックを特定し、最適化のポイントを見つけることができます。

これらのエクスポーターが収集するメトリクスを組み合わせることで、CPU、GPU、メモリ、ネットワーク、ストレージなど、システム全体のリソース使用状況を包括的に監視・分析できます。詳細については、リンク先の公式ドキュメントを参照してください。

これらのエクスポーターが提供するメトリクスを使用したパネルを追加できます。詳細な手順については、カスタムパネルを追加するを参照してください。

Performance Details / Job

Performance Overviewから指定のJobを選択すると、このダッシュボードを表示できます。 ジョブごとの性能情報が確認でき、各種メトリクスはジョブの実行時間およびホストに予めフォーカスされているため、特定ジョブでのリソース使用状況やパフォーマンスのボトルネックを分析できます。

grafana-performance-details-job-1

実行中のジョブのうち、特定の条件に当てはまるものについては、Open Profilerが表示されます。これをクリックすることで後述の詳細プロファイリング機能を使用することができます。 プロファイリング機能の詳細については、次のセクションを参照してください。

Performance Details / Profiling [Beta]

特定のプロセス、特にPyTorchプログラムに関するGPUの詳細なプロファイル情報を取得したい場合にこの機能を使用します。 この機能によって、実行中のプログラムに対して外部から瞬間的にPyTorch Profilerと同等の情報を取得することができます。 詳細プロファイルによる性能劣化を避けたい場合は、必要な区間のみプロファイルを取得するようにしてください。

grafana-performance-details-profiling-1

動作条件

本機能は、PyTorch Profilerの内部で使用しているpytorch/kinetoライブラリの機能に依存しています。

本機能に対応しているかは、プロファイルを取得したいPyTorchプログラムの実行環境で以下のスクリプトを実行することで確認できます。 すべてがTrueとなれば本機能を利用できます。

$ python -c 'import torch; print(torch.cuda.is_available());print(torch.profiler.kineto_available());print(torch.__config__.show().find("-DUSE_KINETO")>0)'
True
True
True

事前準備

本機能を有効にするには、適切なスコープで以下の環境変数を設定する必要があります。

export KINETO_USE_DAEMON=1
export KINETO_DAEMON_INIT_DELAY_S=3
export KINETO_IPC_SOCKET_DIR="/var/run/aibooster/dynolog_socket_dir"

この環境変数を設定することで、KINETO_DAEMON_INIT_DELAY_Sに指定した秒数に応じたオーバーヘッドが生じます。

また、詳細プロファイル機能から情報を取得している間は、その区間中のみ数%から最大50%程度の追加オーバーヘッドが発生します。

プロファイルの実行

Traceボタンをクリックすると、選択した回数だけプログラムのトレースが行われます。

Traceによってプロファイルを取得すると、下のパネルにキャプチャされたプロファイル情報が表示されます。

  • Viewをクリックすると、詳細なプロファイル情報を別ウィンドウで表示します
  • Analyzeをクリックすると、プロファイルの要約情報を確認できます

grafana-performance-details-profiling-3

警告

本機能で取得するデータのサイズは大きくなるため、情報の表示に時間がかかる場合があります。

プロファイリングのトラブルシューティング

プロファイリングが取得できない場合は以下を確認してください。

  • 動作条件を満たしているか確認してください
  • 事前準備の各環境変数が適切に設定されているか確認してください
    • echo ${KINETO_USE_DAEMON} (shell) または os.getenv("KINETO_USE_DAEMON") (Python)

環境変数が正しく読み込まれた場合、PyTorchプログラムの実行時に以下のような出力が表示されることがあります。

INFO:2025-09-16 03:58:15 109546:109546 init.cpp:140] Registering daemon config loader, cpuOnly =  0
INFO:2025-09-16 03:58:15 109546:109546 CuptiActivityProfiler.cpp:243] CUDA versions. CUPTI: 24; Runtime: 12060; Driver: 12090
INFO:2025-09-16 03:58:15 109546:109546 DaemonConfigLoader.cpp:66] Setting communication fabric enabled = 1
INFO:2025-09-16 03:58:15 109546:109546 IpcFabricConfigClient.cpp:88] Setting up IPC Fabric at endpoint: dynoconfigclientd8255d6f-2eed-4bde-a9c1-dd6baa485caf status = initialized
INFO:2025-09-16 03:58:15 109546:109546 DaemonConfigLoader.cpp:66] Setting communication fabric enabled = 1
INFO:2025-09-16 03:58:15 109546:109546 DaemonConfigLoader.cpp:28] Reading base config
WARNING:2025-09-16 03:58:15 109546:109546 IpcFabricConfigClient.cpp:146] Missing IPC Fabric implementation for getLibkinetoBaseConfig

(出力の詳細はPyTorchのバージョンによって異なる場合があります)