이 문서는 머신러닝 섹션의 일부입니다.
왜 분산 학습이 필요한가?
딥러닝 모델의 크기와 학습 데이터의 양이 증가하면서, 단일 GPU로는 학습 시간이 수일에서 수주까지 걸릴 수 있습니다. 분산 학습(Distributed Training) 은 여러 GPU 또는 여러 노드에 학습을 분산하여 학습 시간을 크게 단축 합니다.💡 비유: 1,000페이지 책을 번역할 때, 한 명이 하면 100일 걸리지만, 10명이 나누어 하면 10일이면 됩니다. 분산 학습도 마찬가지로, 데이터와 연산을 여러 GPU에 나누어 병렬로 처리합니다.
분산 학습 전략
TorchDistributor 사용법
TorchDistributor 는 Databricks ML Runtime에서 PyTorch 분산 학습을 쉽게 실행할 수 있게 해주는 도구입니다. Spark 클러스터의 GPU를 자동으로 감지하고, 분산 학습 환경을 설정합니다.기본 사용법
TorchDistributor 주요 파라미터
local_mode 설정 가이드
DeepSpeed 연동
DeepSpeed 는 Microsoft가 개발한 분산 학습 최적화 라이브러리로, 대규모 모델 학습 시 메모리 효율을 크게 개선합니다.DeepSpeed ZeRO 단계
DeepSpeed 설정 파일 (ds_config.json)
TorchDistributor + DeepSpeed
Horovod
Horovod 는 Uber가 개발한 분산 학습 프레임워크로, MPI 기반의 올-리듀스(All-Reduce) 알고리즘을 사용합니다.💡 TorchDistributor vs Horovod: 새로운 프로젝트에서는 TorchDistributor(PyTorch DDP 기반)를 권장합니다. Horovod는 기존 Horovod 코드를 Databricks로 마이그레이션할 때 유용합니다.
멀티 GPU / 멀티 노드 설정
클러스터 설정 예시
분산 학습 규모별 가이드
MLflow 연동
분산 학습에서도 MLflow를 활용하여 실험을 추적할 수 있습니다.현업 사례: 분산 학습을 시작했는데 단일 GPU보다 느린 이유
“GPU 4개면 4배 빠르겠지?” — 현업에서 가장 흔한 오해입니다. 분산 학습이 오히려 느려지는 사례를 구체적으로 살펴보겠습니다.사례: 이미지 분류 모델 학습
왜 이런 일이 벌어지는가 — 분산 학습의 오버헤드
분산이 항상 빠르지 않은 경우
분산 학습이 꼭 필요한 경우 — 모델 크기 기준
💡 현업에서는 이렇게 합니다: 분산 학습이 의미 있으려면 연산 시간이 통신 시간을 압도 해야 합니다. 이것은 모델이 크거나 데이터가 많을 때 성립합니다.
분산 학습 성능을 최대화하는 실전 팁
⚠️ 현업에서는 이렇게 합니다: 분산 학습을 시작하기 전에 반드시 단일 GPU에서 프로파일링 을 합니다.torch.profiler로 연산 시간, 데이터 로딩 시간, 유휴 시간을 측정하세요. 데이터 로딩이 병목이면 GPU를 더 추가해도 의미가 없습니다. 먼저num_workers를 늘리고pin_memory=True를 설정하세요.
💡 비용 최적화 팁: Spot/Preemptible 인스턴스를 사용하면 GPU 비용을 60~70% 절약할 수 있습니다. 단, 30분~1시간마다 체크포인트를 저장 해야 합니다. Spot 인스턴스가 회수되면 마지막 체크포인트부터 재시작합니다. 체크포인트 없이 12시간 학습하다가 11시간째에 회수되면 11시간의 GPU 비용이 증발합니다.