이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 대규모 훈련 — 거대한 모델을 효율적으로 → 분산 훈련(Distributed Training)
파이프라인 병렬성과 torch.cuda.amp를 사용한 혼합 정밀도 훈련을 구현합니다.
GPT-3의 파라미터가 1750억 개예요. 이걸 숫자로 바꿔볼게요.
에프피삼십이에서 파라미터 하나가 4바이트예요. 175B 곱하기 4는 700기가바이트예요.
그림 왼쪽 첫 번째 박스를 보세요. 파라미터만 700기가바이트라고 적혀 있어요.
그런데 학습할 때는 파라미터만 있으면 안 돼요. 그래디언트도 같은 크기가 필요해요.
두 번째 빨간 박스를 보면 그래디언트가 플러스 700기가바이트예요. 벌써 1.4테라바이트죠.
세 번째 주황 박스가 옵티마이저 상태예요. 아담은 모멘텀과 분산 두 개를 저장해요.
모멘텀이 700기가 분산이 700기가예요. 옵티마이저만 1.4테라바이트예요. 파라미터의 두 배죠.
네 번째 보라색 박스가 활성화예요. 배치 사이즈와 시퀀스 길이에 비례해서 수백 기가가 필요해요.
다 합치면 약 3.1테라바이트예요. 가운데 빨간 합산 바를 보세요.
아래쪽 GPU 비교를 보세요. 에이원백은 80기가바이트예요. 에이치이백도 141기가바이트밖에 안 돼요.
3100기가를 80기가로 나누면 에이원백이 39장이나 필요해요. 한 장에 2만 달러예요.
비이백이 192기가바이트로 가장 크지만 그래도 16장은 필요해요.
GPU 메모리 증가보다 모델 크기 증가가 훨씬 빨라요. 격차가 계속 벌어지고 있어요.
그래서 분산 학습은 선택이 아니라 필수예요. 오른쪽 하단에 초록색으로 적혀 있죠.
파이프라인 병렬화 텐서 병렬화 데이터 병렬화 그리고 혼합 정밀도가 이 문제를 해결해요.
이번 레슨에서 이 네 가지 기법을 하나씩 파헤쳐볼 거예요.
먼저 파이프라인 병렬화부터 시작해봅시다. 레이어를 GPU에 나누는 가장 직관적인 방법이에요.
왜 옵티마이저가 파라미터의 두 배 메모리를 차지하는지 기억하세요. 이게 제로 최적화의 핵심이에요.
다음 슬라이드에서 파이프라인 병렬화의 구조와 마이크로배치를 자세히 그림으로 볼 거예요.
GPT-3 학습에 실제로 1만 개 이상의 GPU가 사용됐어요. 규모감을 느껴보세요.
선생님: GPT-3가 1750억 파라미터라고 했는데, 왜 학습 때 메모리가 파라미터 크기의 4배 이상 필요할까요?
학생: 파라미터 자체 외에 그래디언트와 옵티마이저 상태가 추가로 필요하기 때문 아닌가요?
선생님: 맞아요. 아담 옵티마이저는 모멘텀과 분산 두 가지 상태를 각각 에프피삼십이로 저장하니까, 옵티마이저만 파라미터의 두 배 메모리를 써요.
학생: 그러면 추론할 때는 파라미터만 있으면 되니까 메모리가 훨씬 적게 드는 거네요?
선생님: 정확해요. 추론은 그래디언트나 옵티마이저가 필요 없어서 에프피십육이면 350기가면 충분해요. 학습의 9분의 1 수준이죠.