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
- 项目
- 项目
- 项目
- 项目