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 GPU 메트릭을 지속적으로 수집합니다. NVIDIA DCGM 라이브러리를 통해 GPU 메트릭을 수집합니다.
- 심층 프로파일링: 원격 프로시저 호출(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 프로파일링: 수백 개의 GPU나 분산 학습 작업에 걸쳐 원격에서 단일 명령어로 트레이스를 트리거할 수 있습니다.
- 통합 CPU+GPU 모니터링: Linux 커널 메트릭, CPU 하드웨어 성능 이벤트(Intel/AMD), NVIDIA GPU 메트릭(DCGM를 통해)을 한 곳에서 수집합니다.
- OpenTelemetry 내보내기: Grafana, Datadog, New Relic 등 OTLP 호환 백엔드로 메트릭을 전송할 수 있습니다.
- 경량 및 프로덕션 친화적: 성능 저하 없이 지속적으로 실행되도록 설계되었습니다.
- 설치가 간편: RPM/Debian 패키지로 제공되며, root 권한이 없어도 사용자 공간 모드로 실행 가능합니다.
관련
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트