horovod: 여러 GPU 및 호스트에 걸쳐 모델을 확장하기 위한 분산 딥러닝 학습 프레임워크
horovod: 여러 GPU 및 호스트에 걸쳐 모델을 확장하기 위한 분산 딥러닝 학습 프레임워크
해결하는 문제
Horovod는 단일 GPU에서 여러 GPU 및 여러 호스트로 딥러닝 학습을 확장하는 프로세스를 단순화합니다. 파라미터 서버 관리와 같이 분산 학습과 관련된 일반적인 복잡성을 제거하고, 클러스터 전체에서 모델을 병렬로 실행하는 더 간단한 방법을 제공합니다.
작동 방식
Horovod는 워커 간의 통신을 처리하기 위해 MPI 기반 모델(Message Passing Interface)을 사용합니다. 중앙 서버 대신, 모든 워커에 걸쳐 그래디언트를 평균화하기 위해 allreduce와 같은 집합 통신 연산을 사용합니다. TensorFlow, Keras, PyTorch, Apache MXNet을 포함한 인기 있는 프레임워크와 통합됩니다. 이를 구현하기 위해 사용자는 Horovod를 초기화하고, GPU를 특정 프로세스에 할당(pin)하며, 학습률을 조정하고, 옵티마이저를 DistributedOptimizer로 래핑합니다.
대상 사용자
확장 시 필요한 코드 변경을 최소화하면서 여러 GPU 또는 서버에서 대규모 데이터셋을 사용하여 대규모 모델을 학습시켜야 하는 머신러닝 엔지니어 및 인프라 팀을 위해 설계되었습니다.
주요 특징
- Multi-Framework Support: TensorFlow, PyTorch, Keras, MXNet과 함께 작동합니다.
- Tensor Fusion: 작은 allreduce 연산을 배치로 묶고 통신과 계산을 교차 배치하여 성능을 개선합니다.
- High Scaling Efficiency: 수백 개의 GPU로 확장할 때 높은 효율성(특정 모델의 경우 최대 90%)을 보여줍니다.
- Autotuning: 시행착오를 통한 튜닝을 줄이기 위해 성능 설정을 자동으로 최적화하는 시스템을 포함합니다.
- Flexible Deployment:
horovodrun, Docker, Kubernetes, Spark, Ray, 그리고 다양한 HPC 클러스터를 통해 실행할 수 있습니다.
Sources
- undefinedhorovod/horovod