이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 대규모 훈련 — 거대한 모델을 효율적으로 → 분산 훈련(Distributed Training)
all-reduce 그래디언트 동기화를 사용한 다중 GPU 훈련을 위해 DistributedDataParallel을 구현합니다.
안녕하세요, 오늘은 분산 학습이 왜 필요한지 알아보겠습니다.
화면 왼쪽 위를 보시면 레즈넷 50 모델이 보입니다.
이 모델은 2천 5백만 개 파라미터로, 지피유 하나에 충분히 올라갑니다.
그런데 옆에 있는 지피티 투를 보세요.
파라미터가 15억 개이고, 학습 시 48기가바이트가 필요합니다.
라마 세븐 비 모델은 더 심각합니다.
파라미터만 28기가바이트이고, 학습에 224기가가 필요하죠.
A100 80기가짜리가 4장에서 8장 필요합니다.
맨 오른쪽 지피티 포급 모델은 수천 개 지피유가 필수입니다.
그러면 왜 학습 메모리가 파라미터의 8배에서 20배나 될까요?
아래쪽 분석을 보시면 됩니다.
FP16 파라미터 2N, 그래디언트 2N, 아담 상태 8N이 핵심입니다.
특히 아담 옵티마이저의 m과 v 상태가 각각 FP32로 저장되어 8N을 차지합니다.
활성화 메모리까지 합치면 12N에서 20N 바이트가 됩니다.
가운데 파란 강조 박스를 보세요.
7B 모델이면 최소 336기가바이트입니다.
A100 80기가 한 장으로는 절대 불가능하죠.
그래서 여러 지피유에 분산하는 것이 유일한 해결책입니다.
데이터 병렬, 모델 병렬, 파이프라인 병렬 같은 전략이 있습니다.
오늘 레슨에서는 가장 많이 사용되는 데이터 병렬, 특히 디디피를 집중적으로 다룹니다.
다음 슬라이드에서 데이터 병렬의 핵심 아이디어를 시각적으로 확인해 보겠습니다.
선생님: 여기서 학생분들이 자주 궁금해하는 게 있어요.
학생: 단일 지피유로 큰 모델을 학습할 수 없는 근본적인 이유가 뭔가요?
선생님: 좋은 질문이에요! 학습 메모리가 파라미터의 8배에서 20배까지 필요하기 때문이에요.
선생님: 파라미터 자체, 그래디언트, 아담의 m과 v 상태, 활성화까지 합치면 지피유 메모리를 훨씬 초과하죠.
학생: 그러면 추론은 괜찮은데 학습만 문제인 건가요?
선생님: 맞아요! 추론은 파라미터만 있으면 되지만, 학습은 그래디언트와 옵티마이저 상태가 추가로 필요해서 메모리가 크게 늘어나요.