AI 시스템 구축: 분산 학습

ㅁ 분산 학습

ㅇ 정의:
여러 대의 컴퓨팅 자원을 활용하여 대규모 AI 모델 학습 속도를 높이거나 메모리 한계를 극복하기 위해 학습 데이터를 나누어 병렬 처리하는 기술.

ㅇ 특징:
– GPU/TPU 등 여러 장비를 네트워크로 연결
– 데이터 병렬(모델 복제) / 모델 병렬(모델 분할) / 하이브리드 방식 존재
– 통신 오버헤드와 동기화 방식이 성능에 영향
– 대규모 딥러닝 학습에서 필수적인 기술

ㅇ 적합한 경우:
– 단일 장비 메모리로 학습이 불가능한 대규모 모델
– 학습 속도를 극대화해야 하는 환경
– 클라우드 또는 온프레미스 GPU 클러스터 활용 시

ㅇ 시험 함정:
– “분산 학습 = 항상 속도만 빠르다”는 오답 (통신 오버헤드로 오히려 느려질 수 있음)
– 데이터 병렬과 모델 병렬의 차이 혼동
– Horovod, DeepSpeed를 단순한 프레임워크로만 이해하는 경우

ㅇ 시험 대비 “패턴 보기” 예시:
O: 분산 학습은 여러 장비에서 학습을 병렬 처리해 모델 학습 속도와 규모를 확장한다.
X: 분산 학습은 항상 단일 GPU 학습보다 빠르다.

================================

1. Data Parallel

ㅇ 정의:
동일한 모델 복사본을 여러 장비에 배포하고, 각 장비가 다른 데이터 배치를 병렬로 학습한 뒤 가중치를 동기화하는 방식.

ㅇ 특징:
– 구현이 비교적 단순
– 각 장비의 메모리에는 전체 모델이 올라감
– 주로 미니배치 단위로 데이터 분할
– 동기식(Synchronous) 또는 비동기식(Asynchronous) 업데이트 방식 존재

ㅇ 적합한 경우:
– 모델 크기는 장비 메모리에 적합하지만 데이터량이 많을 때
– 학습 속도 향상이 주요 목표일 때

ㅇ 시험 함정:
– 모델 병렬과 혼동
– 데이터 병렬은 “모델을 쪼갠다”라고 잘못 이해하는 경우
– 통신 병목에 따른 성능 저하 가능성 간과

ㅇ 시험 대비 “패턴 보기” 예시:
O: Data Parallel은 모델 복사본을 여러 장비에 배포하여 서로 다른 데이터 배치를 학습한다.
X: Data Parallel은 하나의 모델을 여러 장치에 나누어 저장한다.

================================

2. Model Parallel

ㅇ 정의:
하나의 모델을 여러 장비에 분할 배치하고, 각 장비가 해당 모델의 일부 연산을 담당하는 방식.

ㅇ 특징:
– 대규모 모델의 메모리 한계 극복 가능
– 연산 순서와 데이터 흐름이 장비 간 의존성을 가짐
– 파이프라인 병렬(Pipeline Parallelism)과 텐서 병렬(Tensor Parallelism) 방식이 있음

ㅇ 적합한 경우:
– 모델 크기가 단일 장비 메모리 한계를 초과하는 경우
– 초거대 언어모델(LLM) 학습 시

ㅇ 시험 함정:
– 데이터 병렬과 혼동
– 모델 병렬이 항상 빠르다고 오해 (통신 지연 가능성)
– 파이프라인 병렬과 텐서 병렬의 차이 미이해

ㅇ 시험 대비 “패턴 보기” 예시:
O: Model Parallel은 하나의 모델을 여러 장비에 나누어 학습한다.
X: Model Parallel은 각 장비가 전체 모델을 학습하고 결과를 합친다.

2.1 파이프라인 병렬(Pipeline Parallelism)

ㅇ 정의:
모델의 연산을 여러 단계로 나누어 순차적으로 처리하되, 각 단계는 다른 장비에서 동시에 다른 입력을 처리하는 방식.

ㅇ 특징:
– GPU 간 연산 파이프라인 구성
– 대기 시간 줄이기 위해 마이크로배치(Micro-batch) 사용
– 각 스테이지 간 통신 발생

ㅇ 적합한 경우:
– 모델의 계층 구조가 뚜렷할 때
– 메모리 용량을 초과하는 대규모 모델

ㅇ 시험 함정:
– 파이프라인 병렬이 데이터 병렬과 동일하다고 착각
– 마이크로배치 개념을 생략하거나 잘못 이해

ㅇ 시험 대비 “패턴 보기” 예시:
O: 파이프라인 병렬은 모델을 여러 단계로 나누어 각 단계가 다른 입력을 동시에 처리한다.
X: 파이프라인 병렬은 모든 장비가 동일한 연산을 수행한다.

2.2 텐서 병렬(Tensor Parallelism)

ㅇ 정의:
모델의 개별 연산(행렬 곱 등)을 여러 장비에 나누어 병렬 처리하는 방식.

ㅇ 특징:
– 동일한 연산을 여러 장비가 나눠서 수행
– 매우 큰 연산 단위를 분할하여 처리 속도 향상
– 장비 간 통신량이 많음

ㅇ 적합한 경우:
– 초거대 모델의 한 연산이 단일 장비 메모리 한계를 초과할 때
– 대규모 행렬 연산이 많은 모델

ㅇ 시험 함정:
– 모델 전체가 아니라 연산 단위를 나누는 것임을 간과
– 통신 오버헤드 무시

ㅇ 시험 대비 “패턴 보기” 예시:
O: 텐서 병렬은 한 연산을 여러 장비에 나누어 처리한다.
X: 텐서 병렬은 모델의 계층을 나누어 처리한다.

================================

3. Horovod

ㅇ 정의:
Uber에서 개발한 오픈소스 분산 학습 프레임워크로, TensorFlow, PyTorch, MXNet 등에서 데이터 병렬 학습을 쉽게 구현할 수 있도록 지원.

ㅇ 특징:
– AllReduce 방식으로 가중치 동기화
– 기존 코드에 최소한의 수정으로 분산 학습 적용 가능
– GPU, CPU, 클러스터 환경에서 동작

ㅇ 적합한 경우:
– 다양한 딥러닝 프레임워크를 사용하는 환경
– 데이터 병렬 중심의 분산 학습 구현

ㅇ 시험 함정:
– Horovod가 모델 병렬을 지원한다고 착각
– AllReduce를 브로드캐스트로 혼동

ㅇ 시험 대비 “패턴 보기” 예시:
O: Horovod는 AllReduce를 활용해 데이터 병렬 학습의 가중치를 동기화한다.
X: Horovod는 모델을 여러 장비에 분할하는 모델 병렬 전용 라이브러리이다.

================================

4. DeepSpeed

ㅇ 정의:
Microsoft에서 개발한 대규모 모델 학습 최적화 라이브러리로, 메모리 효율성과 학습 속도를 높이는 다양한 병렬화 기술을 제공.

ㅇ 특징:
– ZeRO(Zero Redundancy Optimizer)로 메모리 사용 최적화
– 데이터 병렬, 모델 병렬, 파이프라인 병렬 모두 지원
– Offload 기능으로 CPU/NVMe 메모리 활용
– 초거대 모델 학습 지원

ㅇ 적합한 경우:
– GPT-계열 초거대 언어 모델 학습
– GPU 메모리가 제한적인 환경에서 대규모 모델 학습

ㅇ 시험 함정:
– DeepSpeed = 단순히 빠른 학습 라이브러리라고만 이해
– ZeRO 단계를 혼동 (Stage 1, 2, 3)

ㅇ 시험 대비 “패턴 보기” 예시:
O: DeepSpeed는 ZeRO 기술로 메모리 사용을 최적화하여 초거대 모델 학습을 가능하게 한다.
X: DeepSpeed는 데이터 병렬만 지원하는 라이브러리이다.

원하시면 제가 다음 단계로 **각 항목별 핵심 암기표**를 만들어 드릴 수도 있습니다.
이 암기표는 시험 직전 1~2분 안에 볼 수 있는 초압축 요약본입니다.
진행할까요?

답글 남기기

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

*
*