MegaTrain: 단일 GPU에서 1000억 개 이상의 파라미터를 가진 대규모 언어모델을 풀 프레시전으로 학습하기
논문 소개
오늘 소개할 논문은 GPU 메모리의 한계를 기존과는 완전히 다른 방식으로 극복한 연구입니다. Yuan Zhengqing을 포함한 연구팀이 발표한 MegaTrain은 단일 GPU 한 대로 1000억 개가 넘는 파라미터를 가진 대규모 언어모델을 학습할 수 있는 시스템입니다.
핵심 아이디어: 메모리 중심의 접근
기존 방식들이 GPU 중심으로 설계된 것과 달리, MegaTrain은 발상을 전환했습니다.
파라미터와 옵티마이저 상태를 호스트 메모리(CPU 메모리)에 저장하고, GPU는 단순한 계산 엔진으로만 사용하는 거죠. 각 레이어마다 필요한 파라미터를 CPU에서 GPU로 스트리밍으로 가져와서 연산하고, 그래디언트를 다시 내려보내는 방식입니다. 이렇게 하면 GPU에 지속적으로 유지해야 할 상태가 최소화됩니다.
성능의 핵심: 두 가지 최적화 기법
CPU와 GPU 사이의 대역폭이 병목이 될 수 있다는 문제를 해결하기 위해 연구팀은 두 가지 주요 기법을 적용했습니다.
첫 번째는 파이프라인화된 더블 버퍼링 실행 엔진입니다. 여러 CUDA 스트림을 활용해서 파라미터 프리페칭, 연산, 그래디언트 오프로딩을 겹쳐 실행합니다. 덕분에 GPU가 계속 일할 수 있습니다.
두 번째는 autograd 그래프 구조를 완전히 바꾼 것입니다. 기존처럼 지속적으로 그래프를 유지하는 대신, 가중치가 스트리밍으로 들어올 때마다 동적으로 바인딩하는 '상태 없는 레이어 템플릿' 방식을 사용했습니다. 이렇게 하면 그래프 메타데이터 오버헤드가 줄어들면서도 스케줄링 유연성이 높아집니다.
실제 성능
논문의 결과를 보면 꽤 인상적입니다.
1.5TB 호스트 메모리를 갖춘 H200 GPU 한 대로 1200억 개 파라미터 모델까지 안정적으로 학습할 수 있습니다. 14B 모델을 학습할 때는 DeepSpeed ZeRO-3의 CPU 오프로딩 방식보다 1.84배 빠른 처리량을 달성했습니다.
특히 흥미로운 점은 7B 모델을 GH200 GPU에서 512k 토큰 컨텍스트로 학습할 수 있다는 것인데요. 이는 기존에는 불가능하던 규모입니다.
마치며
MegaTrain은 단순히 더 큰 모델을 한 대의 GPU로 학습하는 것을 넘어, GPU 메모리 병목을 근본적으로 재설계한 연구입니다. 파라미터 스트리밍, 파이프라인 오버래핑, 상태 없는 그래프 설계 등의 기법들이 조화롭게 작동하면서 새로운 가능성을 열었습니다. 앞으로 리소스가 제한된 환경에서 대규모 모델을 다루는 방식에 영향을 미칠 것 같습니다.