AI VIDEO BRIEFING
MIT 6.S191 대규모 병렬 학습 강의 정리: 데이터·텐서·파이프라인 병렬과 샤딩, DeepSpeed·FSDP·Megatron 비교
MIT 딥러닝 입문 강의에서 Liquid AI 최고기술책임자가 GPU 수천 장으로 모델을 학습시키는 실제 방법을 설명했다. 학습에 필요한 메모리 계산, 활성값 체크포인팅과 샤딩, 다섯 가지 병렬화 축, 그리고 프레임워크 선택 기준을 정리한다.

핵심 메시지
쉽게 이해하기
MIT의 딥러닝 입문 강의 6.S191에 Liquid AI의 공동창업자 겸 최고기술책임자 마티아스 레히너가 초청 강연자로 나섰다. 그는 MIT CSAIL에서 리퀴드 신경망을 공동 고안한 뒤 회사를 창업했고, 이날 강연에서는 자사가 수천 장 규모의 GPU로 학습을 돌릴 때 실제로 쓰는 기법들을 순서대로 풀어놨다. 주제는 왜 규모를 키우는가, 무엇을 어떻게 쪼개는가, 그리고 어떤 프레임워크로 구현하는가 세 갈래였다.
강연자는 먼저 규모를 키우는 이유를 데이터로 보여줬다. 메타가 공개한 라마 2의 학습 곡선을 보면 같은 구조라도 학습 토큰이 늘수록 손실이 내려가고, 같은 데이터라도 파라미터가 많은 모델일수록 손실이 낮았다. 업계 흐름도 그 방향이어서 GPT-3는 1750억 파라미터를 3천억 토큰으로, 라마 2의 최대 모델은 700억 파라미터를 2조 토큰으로 학습했고, 자사가 최근 공개한 소형 모델은 12억 파라미터를 28조 토큰으로 학습했다고 소개했다. 그런데 모델 크기 자체는 오히려 줄고 있다. 학습은 한 번이지만 추론은 수백만 사용자가 반복하기 때문에, 모델 수명 전체의 연산 비용에서 학습이 차지하는 몫은 작다는 것이 그의 설명이다.
다음은 메모리 문제였다. 파라미터를 16비트로 저장한다고 해도 그래디언트 버퍼와 옵티마이저 상태, 역전파에 필요한 활성값이 함께 올라가기 때문에 10억 파라미터 모델의 학습에만 약 28GB가 든다. 700억 파라미터로 늘리면 2TB가 필요한데 현재 단일 GPU의 메모리는 수백 GB 수준이라 애초에 올라가지 않는다. 해법으로 제시된 것이 활성값 체크포인팅과 CPU 오프로딩, 그리고 샤딩이다. 체크포인팅은 연산을 더 써서 메모리를 아끼는 맞교환인데, GPU에서는 대체로 연산이 메모리보다 싸기 때문에 업계에서 널리 쓰인다. 반대로 오프로딩은 PCI 버스 대역폭이 병목이라 단일 GPU 파인튜닝처럼 다른 선택지가 없을 때 주로 쓰인다고 선을 그었다.
강연의 핵심은 병렬화 축을 하나씩 분해한 대목이다. 데이터 병렬은 모델을 복제해 배치를 나누는 가장 단순한 방식이지만 유효 배치 크기가 커지면 일반화 성능이 떨어져 한계가 있다. 파이프라인 병렬은 층을 깊이 방향으로 쪼개는데, 앞 GPU가 일할 때 뒤 GPU가 노는 파이프라인 버블이 생겨 마이크로배칭으로 겹쳐 돌린다. 텐서 병렬은 가중치 행렬 자체를 열 또는 행으로 쪼개는 방식이고, 트랜스포머의 MLP처럼 열 분할과 행 분할을 이어 붙이면 두 층을 통신 한 번으로 처리할 수 있다. 시퀀스·컨텍스트 병렬은 긴 문맥을 토큰 구간으로 나누는데 MLP나 레이어 정규화는 시간축에 독립적이라 통신이 필요 없고 어텐션만 별도 처리가 필요하다. 전문가 혼합 모델은 전문가를 서로 다른 장치에 두는 것이 자연스러운 분할이 된다.
마지막으로 도구 이야기가 나왔다. DeepSpeed의 ZeRO는 옵티마이저, 그래디언트, 파라미터를 단계적으로 쪼개고, PyTorch 네이티브인 FSDP는 층에 들어갈 때 필요한 가중치만 모았다가 나갈 때 다시 흩는 방식이다. Megatron-LM은 메모리보다 처리량과 병렬화에 무게를 두고 텐서·파이프라인 병렬을 자체 계층으로 제공한다. 강연자는 이 셋의 기능이 대체로 겹치며 가장 큰 차이는 만든 회사라고 농담하듯 정리하면서도, 코드 한 줄만 바꾸면 되는 DeepSpeed, PyTorch답게 모듈을 정의하는 FSDP, 통신 그룹을 직접 관리하는 Megatron으로 사용성과 제어권의 맞교환이 갈린다고 설명했다.
주요 인사이트
- 메모리와 연산 중 무엇이 더 비싼지가 기법 선택을 좌우한다. 활성값 체크포인팅이 널리 쓰이는 이유도, 오프로딩이 니치에 머무는 이유도 결국 GPU에서 연산은 상대적으로 싸고 메모리와 대역폭은 비싸다는 사실에서 나온다.
- 병렬화 전략은 클러스터의 배선 구조를 그대로 반영해야 한다. 통신이 잦은 텐서 병렬은 NVLink로 묶인 노드 한 대 안에 두고, 통신이 드문 데이터 병렬은 InfiniBand 너머로 펼치는 식이다. 강연자는 캐시, HBM, 노드 내 링크, 스케일아웃 망으로 이어지는 계층을 기억하는 것이 핵심 원칙이라고 말했다.
- 전문가 혼합 구조의 진짜 난제는 로드 밸런싱이다. 라우터가 특정 전문가로 쏠리면 학습이 불안정해질 뿐 아니라, 전문가를 장치별로 흩어놓은 상황에서는 일부 GPU만 일하고 나머지가 노는 결과로 이어진다. 강연자는 이 문제가 여전히 활발한 연구 주제라고 밝혔다.
- 작은 모델은 오히려 병렬화로 속도를 올리기 어렵다. 층 수도 적고 행렬도 작아 쪼갤 여지가 없기 때문이다. 이 경우에는 토큰을 더 빨리 흘리는 대신 교사 모델의 확률 분포를 함께 배우는 증류처럼 학습 신호 자체를 풍부하게 만드는 접근이 쓰인다.
- 데이터의 병목은 양이 아니라 품질이다. 초반 수조 토큰은 논문과 백과사전처럼 질 좋은 출처로 채울 수 있지만 그 이상은 웹 크롤 데이터를 걸러내야 하고, 합성 데이터로만 채우면 학습 동역학이 무너지는 현상이 나타난다고 강연자는 경고했다.
자주 묻는 질문
모델은 왜 GPU로 학습시키나?
학습 연산의 대부분이 행렬 곱이고 이 연산이 GPU 구조와 잘 맞기 때문이다. 강연에서는 입력 256×4096에 4096×4096 가중치를 곱하는 연산 하나가 약 80억 회의 부동소수점 연산에 해당한다는 예를 들어, 같은 작업을 당시 CPU로 했다면 2주가 아니라 1년 가까이 걸렸을 것이라고 설명했다.
데이터 병렬만으로는 왜 부족한가?
데이터 병렬은 장치를 늘릴수록 유효 배치 크기가 커진다. 배치가 일정 수준을 넘어가면 같은 데이터로 학습해도 일반화 성능이 떨어지기 때문에, 배치를 키우지 않으면서 처리량을 올리는 다른 축이 필요해진다.
DeepSpeed, FSDP, Megatron-LM 중 무엇을 골라야 하나?
강연자는 도메인 특화 모델을 학습한다면 코드 한 줄만 바꾸면 되고 오프로딩까지 갖춘 DeepSpeed가 진입점으로 좋다고 답했다. 자사의 경우 초기 멀티모달 실험에는 DeepSpeed를, 본격적인 사전학습에는 FSDP에 Megatron 포크를 결합해 쓴다고 밝혔다.
분산된 여러 장소에서 나눠 학습하는 것도 가능한가?
통신량이 가장 적은 데이터 병렬이 이런 환경에 잘 맞는다고 답했다. 실제로 데이터센터 여러 곳에 걸쳐 데이터 병렬을 돌리는 사례가 있으며, 속도가 제각각인 노드를 다루는 비동기 학습은 여전히 활발한 연구 영역이라고 덧붙였다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗