AI 모델 개발: 기법 및 라이브러리
ㅁ 기법 및 라이브러리
ㅇ 정의:
대규모 AI 모델 학습 시 하나의 장비로 처리하기 어려운 연산을 여러 장비나 GPU에 분산하여 처리하는 방법과 이를 지원하는 라이브러리.
ㅇ 특징:
– 학습 속도 향상, 메모리 한계 극복
– 통신 오버헤드와 동기화 전략이 성능에 큰 영향을 미침
– 데이터 병렬, 모델 병렬, 샤딩 등 다양한 방식 존재
ㅇ 적합한 경우:
– 대규모 데이터셋 또는 대규모 파라미터 모델 학습
– 단일 GPU 메모리로 모델이 수용 불가능한 경우
ㅇ 시험 함정:
– 병렬화 방식의 차이를 혼동 (데이터 병렬 vs 모델 병렬)
– 라이브러리별 지원 기능 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “데이터 병렬 처리는 동일 모델 복제 후 다른 데이터 배치를 병렬 처리한다.”
X: “모델 병렬 처리는 동일 데이터 배치를 여러 모델 복제본에 나눠 처리한다.”
================================
1. Data Parallelism
ㅇ 정의:
동일한 모델을 여러 장치에 복제하고, 각 장치가 다른 데이터 배치를 처리한 뒤 파라미터를 동기화하는 방식.
ㅇ 특징:
– 구현이 비교적 간단
– 장치 간 통신으로 인한 동기화 비용 발생
– GPU 메모리 한계는 모델 크기와 동일하게 유지
ㅇ 적합한 경우:
– 모델이 단일 GPU에 적재 가능하나 데이터셋이 매우 큰 경우
ㅇ 시험 함정:
– 모델 병렬과 혼동
– 통신 오버헤드 무시
ㅇ 시험 대비 “패턴 보기” 예시:
O: “데이터 병렬 처리는 각 GPU가 다른 데이터 배치를 처리한다.”
X: “데이터 병렬 처리는 하나의 데이터 배치를 여러 GPU로 나눈다.”
================================
2. Model Parallelism
ㅇ 정의:
모델의 파라미터나 레이어를 여러 장치에 나누어 배치하고 순차적으로 연산을 수행하는 방식.
ㅇ 특징:
– 매우 큰 모델을 메모리 한계를 넘어 학습 가능
– 장치 간 데이터 전송 지연 발생 가능
ㅇ 적합한 경우:
– 모델이 단일 GPU 메모리에 적재 불가능한 경우
ㅇ 시험 함정:
– 데이터 병렬과 개념 혼동
– 파이프라인 병렬과 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모델 병렬 처리는 모델 파라미터를 여러 장치에 분산한다.”
X: “모델 병렬 처리는 동일 모델 복제본을 여러 장치에 배치한다.”
================================
3. Sharded Training
ㅇ 정의:
모델의 파라미터, 옵티마이저 상태, 그라디언트를 여러 장치에 분산 저장하여 메모리 사용량을 줄이는 학습 방식.
ㅇ 특징:
– ZeRO 기법에서 파생
– 메모리 효율성 극대화
– 구현 복잡도 높음
ㅇ 적합한 경우:
– 초거대 모델 학습 시 메모리 최적화 필요할 때
ㅇ 시험 함정:
– 데이터 병렬과 혼동
– 샤딩 대상(파라미터, 옵티마이저 상태 등) 구분 오류
ㅇ 시험 대비 “패턴 보기” 예시:
O: “샤딩은 파라미터를 여러 장치에 나눠 저장한다.”
X: “샤딩은 데이터를 여러 장치에 나눠 처리한다.”
================================
4. FairScale
ㅇ 정의:
PyTorch 기반의 분산 학습 라이브러리로 ZeRO, 파이프라인 병렬 등 다양한 메모리 최적화 및 병렬화 기법 지원.
ㅇ 특징:
– 모듈화된 API 제공
– ZeRO 구현 포함
– 연구 및 프로토타이핑에 적합
ㅇ 적합한 경우:
– PyTorch 환경에서 다양한 병렬화 실험 필요 시
ㅇ 시험 함정:
– DeepSpeed와 기능 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “FairScale은 PyTorch용 ZeRO 구현을 제공한다.”
X: “FairScale은 TensorFlow 전용 라이브러리다.”
================================
5. ZeRO
ㅇ 정의:
Zero Redundancy Optimizer의 약자로, 데이터 병렬 학습에서 중복 저장되는 파라미터, 그라디언트, 옵티마이저 상태를 분산 저장하는 기법.
ㅇ 특징:
– 메모리 사용량 획기적 절감
– 단계별(ZeRO-1, ZeRO-2, ZeRO-3) 최적화 범위 확대
ㅇ 적합한 경우:
– 초대형 모델 학습에서 메모리 한계 극복 필요 시
ㅇ 시험 함정:
– 샤딩과 ZeRO의 관계 혼동
– ZeRO 단계별 차이 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “ZeRO는 옵티마이저 상태를 분산 저장할 수 있다.”
X: “ZeRO는 데이터셋을 분산 저장하는 기법이다.”
================================
6. DeepSpeed
ㅇ 정의:
Microsoft에서 개발한 대규모 모델 학습 최적화 라이브러리로 ZeRO, 파이프라인 병렬, 혼합 정밀도 학습 등 지원.
ㅇ 특징:
– 대규모 분산 학습 최적화
– 다양한 하드웨어와 호환
– 성능 튜닝 옵션 풍부
ㅇ 적합한 경우:
– 대규모 모델을 효율적으로 학습해야 하는 산업 환경
ㅇ 시험 함정:
– FairScale과 기능 혼동
– ZeRO 지원 여부 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “DeepSpeed는 ZeRO를 지원한다.”
X: “DeepSpeed는 PyTorch에서 사용할 수 없다.”
ㅁ 추가 학습 내용
정리 내용
1) 파이프라인 병렬(Pipeline Parallelism)
– 모델의 레이어를 여러 장치에 나누어 순차적으로 처리
– 마이크로배치(Micro-batch)를 사용하여 각 장치가 놀지 않도록 하여 병목 현상 감소
– 주로 매우 깊은 네트워크에서 메모리 분산과 처리 효율을 위해 사용
2) 혼합 정밀도 학습(Mixed Precision Training)
– FP16(half precision)과 FP32(single precision) 연산을 혼합
– 메모리 사용량 절감 및 연산 속도 향상
– 손실 스케일링(Loss Scaling) 기법으로 FP16의 수치 안정성 보완
3) 통신 백엔드(Communication Backend)
– NCCL: NVIDIA GPU 간 고속 통신에 최적화
– Gloo: CPU 및 다양한 네트워크 환경 지원, 범용성 높음
– MPI: HPC 환경에서 표준화된 메시지 패싱 인터페이스, 다양한 하드웨어 지원
– 각 백엔드의 성능, 지원 환경, 사용 목적 차이 이해 필요
4) 데이터 병렬과 모델 병렬 혼합(Hybrid Parallelism)
– 데이터 병렬: 동일 모델을 여러 장치에 복제 후 서로 다른 데이터 배치 처리
– 모델 병렬: 모델을 여러 장치에 나누어 각 부분을 처리
– 하이브리드 병렬: 두 방식을 결합해 메모리와 연산 효율 모두 향상
5) 라이브러리별 장단점 및 지원 범위 비교
– 예: PyTorch DDP, DeepSpeed, Megatron-LM 등
– 지원하는 병렬화 방식, 통신 백엔드 호환성, 최적화 기능, 사용 난이도 등을 표로 정리
6) ZeRO(Zero Redundancy Optimizer) 단계별 차이
– ZeRO-1: 옵티마이저 상태(optimizer states) 분산 저장
– ZeRO-2: 옵티마이저 상태 + 그라디언트(gradients) 분산 저장
– ZeRO-3: 옵티마이저 상태 + 그라디언트 + 파라미터(parameters)까지 분산 저장
– 단계가 높아질수록 메모리 절약 효과 증가, 그러나 통신량도 증가할 수 있음
시험 대비 체크리스트
– 파이프라인 병렬의 개념과 마이크로배치의 역할을 설명할 수 있는가
– 혼합 정밀도 학습의 장점과 손실 스케일링의 필요성을 이해하고 있는가
– NCCL, Gloo, MPI의 특징과 차이를 비교할 수 있는가
– 데이터 병렬, 모델 병렬, 하이브리드 병렬의 차이와 적용 상황을 구분할 수 있는가
– 주요 분산 학습 라이브러리별 지원 범위와 장단점을 표로 정리했는가
– ZeRO-1, ZeRO-2, ZeRO-3의 차이를 정확히 설명할 수 있는가
– 각 기술의 장단점과 적용 시 고려사항을 사례와 함께 말할 수 있는가