AI 모델 개발: 도구및 프레임워크 – FairScale

ㅁ 도구및 프레임워크

ㅇ 정의:
PyTorch 기반의 대규모 분산 학습과 메모리 최적화를 지원하는 오픈소스 라이브러리로, 모델 병렬화, 혼합 정밀도 학습, 체크포인팅 등 대규모 AI 모델 학습 효율화를 위한 기능을 제공함.

ㅇ 특징:
– Fully Sharded Data Parallel(FSDP)로 모델 파라미터를 샤딩하여 GPU 메모리 사용량을 줄임
– Pipeline Parallelism, Tensor Parallelism 등 다양한 병렬 학습 전략 지원
– Optimizer state sharding을 통한 분산 처리 성능 향상
– PyTorch와의 높은 호환성, 모듈 단위 적용 가능

ㅇ 적합한 경우:
– 수십억~수천억 파라미터 규모의 대규모 언어 모델 학습 시
– GPU 메모리 한계로 인해 단일 장비에서 학습이 어려운 경우
– 분산 환경에서 학습 속도와 자원 효율을 동시에 높이고자 할 때

ㅇ 시험 함정:
– FairScale은 PyTorch의 공식 라이브러리가 아니라 Meta AI에서 개발한 별도의 오픈소스임 (공식 PyTorch 기능과 혼동 주의)
– Horovod, DeepSpeed 등과 비교 시 기능 차이를 묻는 문제에서 혼합 정밀도 지원 여부, 병렬화 방식 등을 혼동하기 쉬움

ㅇ 시험 대비 “패턴 보기” 예시:
O: “FairScale은 FSDP를 통해 GPU 메모리 사용량을 줄인다.”
O: “FairScale은 Optimizer state를 샤딩할 수 있다.”
X: “FairScale은 TensorFlow 전용 분산 학습 프레임워크이다.”
X: “FairScale은 PyTorch의 공식 내장 모듈이다.”

ㅁ 추가 학습 내용

FairScale, DeepSpeed, Horovod 비교 정리

1. 메모리 최적화 방식
– FairScale FSDP(Fully Sharded Data Parallel): 모델 파라미터, 그라디언트, 옵티마이저 상태를 모두 샤딩하여 GPU별로 분산 저장. Forward/Backward 시 필요한 shard만 로드하여 메모리 사용 최소화.
– DeepSpeed ZeRO(Zero Redundancy Optimizer): 단계별(ZeRO-1, ZeRO-2, ZeRO-3)로 옵티마이저 상태, 그라디언트, 파라미터를 분산 저장. ZeRO-3는 FSDP와 유사하게 파라미터까지 샤딩. 세밀한 메모리 절감 단계 조절 가능.
– Horovod: 주로 데이터 병렬 학습을 위한 프레임워크로, 메모리 최적화보다는 효율적인 AllReduce를 통한 그라디언트 동기화에 초점.

2. Pipeline Parallelism 구현 차이
– FairScale: Pipe 모듈 제공. 모델을 여러 stage로 나누고 micro-batch 단위로 파이프라인 처리.
– DeepSpeed: Pipeline parallelism과 ZeRO를 결합 가능. Interleaved schedule, 1F1B(One-Forward-One-Backward) 등 다양한 스케줄링 지원.
– Horovod: 기본적으로 파이프라인 병렬을 직접 제공하지 않음. 필요 시 사용자가 모델 분할 로직 구현.

3. 혼합 정밀도 학습 지원(FP16, BF16)
– FairScale: PyTorch AMP(Automatic Mixed Precision) 기반 FP16, BF16 지원.
– DeepSpeed: Native FP16, BF16 지원. ZeRO와 결합 시 메모리 절감 극대화.
– Horovod: PyTorch/TensorFlow의 AMP 또는 Apex를 통한 FP16, BF16 지원.

4. FairScale 주요 모듈
– fsdp: FullyShardedDataParallel, 파라미터 샤딩 기반 분산 학습.
– nn.data_parallel: 데이터 병렬 처리 모듈.
– optim: 샤딩된 옵티마이저 구현.

5. PyTorch 적용 예시 (FSDP)
from fairscale.nn.data_parallel import FullyShardedDataParallel as FSDP
model = MyModel()
model = FSDP(model)

6. GPU 메모리 절감 효과 예시
– FSDP 또는 ZeRO-3 적용 시, 동일 모델 크기에서 GPU당 메모리 사용량을 최대 4~8배 절감 가능.

7. 통신 오버헤드 감소 원리
– AllReduce: 각 GPU의 그라디언트를 집계 후 모든 GPU에 동일하게 배포. 대규모 GPU 환경에서 통신량이 많아 병목 가능.
– Broadcast: 한 GPU의 데이터를 모든 GPU로 전송. 초기 파라미터 동기화 등에 사용.
– 병목 감소 방법: 파라미터/그라디언트 샤딩, 통신과 연산 오버랩, 효율적인 토폴로지 기반 통신 스케줄링.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*