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 系統上作為背景服務(守護程序)執行。它包含兩個主要部分:負責資料收集的 dynolog 伺服器,以及用於與伺服器本地或遠端通訊的 dyno 命令列工具。
伺服器支援兩種模式:
- 持續監控:持續收集系統指標(CPU、網路、I/O)、CPU 硬體性能事件(如每秒指令數與週期數),以及透過 NVIDIA 的 DCGM 庫取得的 NVIDIA GPU 指標。
- 深度剖析:透過遠端程序呼叫(RPC)按需啟用。對於 PyTorch,啟用一個旗標(
--enable_ipc_monitor)並設定環境變數(KINETO_USE_DAEMON=1),然後使用dyno gputrace命令即可捕獲特定程序的追蹤資料——即使跨越遠端節點或分散式訓練工作。
指標可記錄至檔案,或透過 OpenTelemetry 協定(OTLP)導出至可觀測性後端(如 Grafana、Datadog、New Relic)。此守護程序設計輕量,不會影響生產工作負載的效能。
適用對象
Dynolog 面向在 GPU 集群上訓練或執行大型 AI 模型的工程師與研究人員,特別是使用 PyTorch 並需要在生產或分散式環境中調試效能問題的使用者。也適用於任何在 Linux 上運行異構 CPU-GPU 系統並希望獲得統一監控與剖析工具的使用者。
主要亮點
- 按需 PyTorch 剖析:透過單一命令遠端觸發追蹤,即使跨越數百個 GPU 或分散式訓練工作。
- 統一的 CPU+GPU 監控:集中收集 Linux 內核指標、CPU 硬體性能事件(Intel/AMD)以及 NVIDIA GPU 指標(透過 DCGM)。
- OpenTelemetry 導出:可將指標傳送至任何 OTLP 相容後端,如 Grafana、Datadog 或 New Relic。
- 輕量且生產友好:設計為可長期運行,不會造成效能下降。
- 安裝簡單:提供 RPM/Debian 套件,也支援無 root 權限的使用者空間模式。
相關
- Dispatch
- 專案
- 專案
- 專案
- 專案