← AI 용어집

AI 용어집 · 심화 · 효율·인프라 · MLOps·LLMOps

분산 학습 Distributed Training

분산 학습은 모델 하나를 학습시키는 일을 여러 GPU나 여러 서버에 나눠 맡겨 함께 처리하는 방식이다. 모델이나 학습 데이터가 GPU 한 장에 다 들어가지 않거나, 한 장으로는 너무 오래 걸릴 때 쓴다.

용어 정보
난이도
심화 · 구조·원리까지 알아야 하는 전문 용어
추가
2026-10-12
쉽게 말하면 두꺼운 책 한 권을 여러 번역가가 장을 나눠 맡고, 중간중간 모여 용어를 맞추는 것과 비슷하다. 맞추는 회의가 길어지면 사람을 늘려도 그만큼 빨라지지 않는다는 점도 닮았다.

어떻게 작동하나

가장 흔한 방식은 데이터 병렬화다. 모든 GPU가 같은 모델 사본을 들고 서로 다른 데이터 묶음으로 학습한다. 그다음 각자 계산한 기울기(모델을 어느 쪽으로 고칠지 알려 주는 값)를 모아 평균을 내고, 모두 똑같이 모델을 고친다. 모델이 너무 커서 한 GPU에 들어가지 않으면 모델 자체를 쪼개는 모델 병렬화를 함께 쓴다. 가중치·기울기·옵티마이저 상태(학습 도구가 따로 기억하는 값)를 GPU마다 나눠 들게 해서 메모리를 아끼는 샤딩 방식도 널리 쓰이며, FSDP나 ZeRO라는 이름으로 자주 보인다.

일을 나누는 세 가지 방식

데이터 병렬화데이터를 나눈다

  • GPU마다 모델 사본 전체
  • 가장 단순하고 흔함
  • 모델이 한 장에 들어가야 함

샤딩(FSDP·ZeRO)학습 상태를 나눈다

  • 가중치·기울기·옵티마이저 상태 분담
  • 메모리를 크게 아낌
  • 통신이 더 늘어남

모델 병렬화모델을 나눈다

  • 층이나 계산을 GPU에 나눠 실음
  • 아주 큰 모델에 필요
  • 설정이 가장 복잡함

공통 모두 여러 GPU가 하나의 모델을 함께 학습하게 하는 방법이다

무엇을 나눠 맡기느냐에 따라 방식이 갈린다. 실제 학습에서는 셋을 섞어 쓰는 경우가 많다.

왜 중요한가

오늘날 LLM 사전 학습은 GPU 한 장으로는 사실상 할 수 없다. 학습할 때는 가중치뿐 아니라 기울기, 옵티마이저 상태, 중간 계산 결과까지 메모리에 올려야 해서 추론할 때보다 메모리가 훨씬 많이 든다. 분산 학습은 이 메모리 부담과 학습 시간을 여러 장비에 나누는 기본 기술이다. 모델이 크면 파인튜닝처럼 비교적 작은 작업에도 여러 GPU가 필요해진다.

어디서 보고 어떻게 감을 잡나

실무에서는 PyTorch의 DDP·FSDP, DeepSpeed, Megatron-LM 같은 학습 프레임워크 설정에서 이 말을 만난다. 학습 스크립트에 나오는 GPU 수, world size, ZeRO stage 같은 옵션이 바로 분산 방식을 정하는 값이다. 감을 잡으려면 '학습 메모리는 가중치 메모리보다 몇 배 크다'고 기억하면 된다. 흔한 혼합 정밀도 학습에서는 파라미터 수 × 약 16바이트 ≈ 가중치·기울기·옵티마이저 상태 메모리라는 어림셈이 자주 쓰이고, 여기에 중간 계산 결과 몫이 더 붙는다.

알아 둘 점

GPU를 두 배로 늘려도 속도가 두 배가 되지는 않는다. GPU끼리 결과를 주고받는 통신 시간이 들기 때문이고, 그래서 NVLink·InfiniBand 같은 인터커넥트 성능이 중요하다. 서버를 여러 대 묶으면 한 대만 멈춰도 전체가 멈출 수 있어서 체크포인트를 자주 저장해야 한다. 분산 학습부터 준비하기 전에, LoRA나 양자화로 GPU 한 장 안에서 끝낼 수 있는지 먼저 따져 보는 편이 비용 면에서 대개 낫다.

예시

70억(7B) 파라미터 모델을 전체 파인튜닝하려는 팀이 있다고 하자. 위 어림셈대로라면 70억 × 16바이트 ≈ 112GB가 가중치·기울기·옵티마이저 상태에만 들어서, 메모리가 80GB인 GPU 한 장(예시)에는 들어가지 않는다. 그래서 팀은 GPU 여러 장이 달린 서버 한 대를 빌려 FSDP나 DeepSpeed ZeRO로 이 상태들을 나눠 담을지, 아니면 LoRA로 바꿔 GPU 한 장에서 끝낼지를 비용과 품질을 놓고 비교한다.

함께 보면 좋은 용어