AI 모델 개발: 기법 및 라이브러리 – Sharded Training
ㅁ 기법 및 라이브러리
ㅇ 정의:
대규모 모델 학습 시 모델 파라미터, 옵티마이저 상태, 그래디언트를 여러 장비나 GPU에 분할 저장하고 연산하는 분산 학습 기법. 메모리 사용량을 줄여 더 큰 모델 학습을 가능하게 함.
ㅇ 특징:
– 각 장비가 전체 모델의 일부만 보유하므로 메모리 효율이 높음
– 통신 비용이 발생하나, 적절한 통신 스케줄링으로 성능 최적화 가능
– ZeRO(Zero Redundancy Optimizer)와 같은 알고리즘에서 활용됨
– 데이터 병렬, 모델 병렬과 혼합 사용 가능
ㅇ 적합한 경우:
– GPU 메모리가 부족한 환경에서 초대규모 모델 학습 시
– 옵티마이저 상태나 그래디언트 저장에 따른 메모리 병목이 발생할 때
ㅇ 시험 함정:
– Sharded Training은 항상 속도를 높이는 것이 목적이 아니라 메모리 절감이 주목적임
– 데이터 병렬 처리와 혼동하는 문제 출제 가능
– 모든 레이어를 균등하게 나누는 것이 아니라, 메모리 사용 패턴에 따라 분할 방식이 달라질 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Sharded Training은 모델 파라미터를 여러 장비에 분산 저장하여 메모리 사용량을 줄인다.”
X: “Sharded Training은 모든 GPU에 전체 모델 복사본을 저장한다.”
X: “Sharded Training의 주목적은 계산 속도 향상이다.”
ㅁ 추가 학습 내용
학습 정리
1. ZeRO Stage 1~3 차이와 분할 요소
– Stage 1: 옵티마이저 상태(optimizer states)만 분할
– Stage 2: 옵티마이저 상태 + 그래디언트(gradients) 분할
– Stage 3: 옵티마이저 상태 + 그래디언트 + 파라미터(parameters) 모두 분할
2. Sharded Training 지원 라이브러리
– PyTorch FairScale: Sharded Data Parallel(SDP) 제공, ZeRO 구현, PyTorch와의 호환성 높음
– DeepSpeed: ZeRO Stage 1~3 지원, 대규모 모델 학습 최적화, 다양한 통신 및 메모리 최적화 기능 제공
3. 통신 최적화 기법
– Overlapping communication & computation: 통신과 연산을 동시에 수행하여 대기 시간 감소
– 통신 패턴 최적화로 병목 완화
4. 모델 병렬과의 차이점
– Sharded Training: 데이터 병렬의 확장, 메모리 절감을 위해 상태를 분할
– 모델 병렬: 모델 자체를 여러 장치에 나누어 배치, 메모리 한계를 넘는 대형 모델 처리 가능
5. Sharded Training의 통신 병목 문제와 해결 전략
– 병목 원인: 빈번한 통신, 대규모 데이터 전송
– 해결 전략: 통신과 연산 겹치기, 통신 압축, 효율적인 통신 스케줄링, 네트워크 대역폭 최적화