facebookincubator/dynolog

Dynolog is a telemetry daemon for performance monitoring and tracing. It exports metrics from different components in the system like the linux kernel, CPU, disks, Intel PT, GPUs etc. Dynolog also integrates with pytorch and can trigger traces for distributed training applications.

何を解決するか

Dynologは、多数のマシンを跨いで実行され、CPUとGPUの両方を使用する大規模AI学習ワークロードの監視とプロファイリングの問題を解決します。大きなモデルを学習する際、ボトルネックがどこにあるか(GPUがCPU、ネットワーク、またはディスクを待っているか)を把握するのは難しいです。既存のツールはCPUとGPUを別々に監視するため、全体像を得ることはできません。Dynologは各マシン上で継続的に実行される軽量デーモンで、CPU、GPU、Linuxカーネルからのパフォーマンスメトリクスを収集し、必要に応じてディープダイブプロファイリングをトリガーできます。たとえば、一度に数百のGPUにわたるPyTorchトレースをキャプチャできます。

動作方法

DynologはLinuxシステム上でバックグラウンドサービス(デーモン)として実行されます。2つの主要な部分から構成されています:データを収集する dynolog サーバーと、ローカルまたはリモートでサーバーと通信する dyno コマンドラインツールです。

サーバーは2つのモードをサポートしています:

  • 常時監視:継続的にシステムメトリクス(CPU、ネットワーク、I/O)、CPUハードウェアパフォーマンスイベント(1秒あたりの命令数やサイクル数など)、NVIDIA GPUメトリクス(NVIDIAのDCGMライブラリ経由)を収集します。
  • ディープダイブプロファイリング:リモートプロシージャコール(RPC)によってオンデマンドで有効化されます。PyTorchの場合、フラグ(--enable_ipc_monitor)を有効化し、環境変数(KINETO_USE_DAEMON=1)を設定した後、dyno gputrace を使用して特定のプロセスからのトレースをキャプチャできます。リモートノードや分散学習ジョブ間でも可能です。

メトリクスはファイルにログ記録されるか、OpenTelemetry Protocol(OTLP)を使用して可視化バックエンド(Grafana、Datadog、New Relicなど)にエクスポートされます。デーモンは軽量設計であり、プロダクションワークロードのパフォーマンスに悪影響を与えないように設計されています。

対象ユーザー

Dynologは、GPUクラスタ上で大規模AIモデルを学習または実行するエンジニアや研究者を対象としています。特にPyTorchを使用しており、プロダクション環境や分散環境でのパフォーマンス問題のデバッグが必要な方々に適しています。また、Linux上で異種のCPU-GPUシステムを運用しているが、統合監視・プロファイリングツールを求めるすべての人にとって有用です。

特徴

  • オンデマンドPyTorchプロファイリング:1つのコマンドで、数百のGPUや分散学習ジョブにわたってリモートからトレースをトリガーできます。
  • 統合CPU+GPU監視:Linuxカーネルメトリクス、CPUハードウェアパフォーマンスイベント(Intel/AMD)、NVIDIA GPUメトリクス(DCGM経由)を1か所で収集します。
  • OpenTelemetryエクスポート:Grafana、Datadog、New Relicなど、OTLP互換バックエンドにメトリクスを送信できます。
  • 軽量でプロダクション対応:パフォーマンス低下を引き起こさないよう設計されており、継続的に実行可能です。
  • インストールが簡単:RPM/Debianパッケージとして利用可能。root権限がなくてもユーザー空間モードで動作します。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト