horovod/horovod
Distributed training framework for TensorFlow, Keras, PyTorch, and Apache MXNet.
What it solves
Horovod는 딥러닝 학습을 단일 GPU에서 다중 GPU 및 다중 호스트로 확장하는 과정을 단순화합니다. 파라미터 서버 관리와 같은 분산 학습에 일반적으로 수반되는 복잡성을 제거하고, 클러스터 전반에 모델을 병렬로 실행하는 보다 직관적인 방법을 제공합니다.
How it works
Horovod는 MPI(Message Passing Interface) 기반 모델을 사용해 워커 간 통신을 처리합니다. 중앙 서버 대신 allreduce와 같은 집합 통신 연산을 이용해 모든 워커의 그래디언트를 평균화합니다. TensorFlow, Keras, PyTorch, Apache MXNet 등 인기 프레임워크와 통합됩니다. 구현 시 사용자는 Horovod를 초기화하고, GPU를 특정 프로세스에 고정하며, 학습률을 스케일하고, 옵티마이저를 DistributedOptimizer로 래핑합니다.
Who it’s for
대규모 데이터셋과 대형 모델을 여러 GPU 또는 서버에서 학습해야 하는 머신러닝 엔지니어와 인프라 팀을 위해 설계되었으며, 확장에 필요한 코드 변경을 최소화합니다.
Highlights
- Multi-Framework Support: Works with TensorFlow, PyTorch, Keras, and MXNet.
- Tensor Fusion: Improves performance by batching small allreduce operations and interleaving communication with computation.
- High Scaling Efficiency: Demonstrates high efficiency (up to 90% for certain models) when scaling across hundreds of GPUs.
- Autotuning: Includes a system to automatically optimize performance settings to reduce trial-and-error tuning.
- Flexible Deployment: Can be run via
horovodrun, Docker, Kubernetes, Spark, Ray, and various HPC clusters.