AI 모델 개발: 기법 및 라이브러리 – Model Parallelism
ㅁ 기법 및 라이브러리
ㅇ 정의:
모델 병렬화(Model Parallelism)는 하나의 대규모 딥러닝 모델을 여러 장치(GPU/TPU 등)에 나누어 각 장치가 모델의 다른 부분을 처리하도록 하는 분산 학습 기법이다.
ㅇ 특징:
– 모델 파라미터가 단일 장치 메모리에 모두 적재되지 않는 경우 유용함
– 각 장치는 서로 다른 레이어나 연산을 담당하며 순차적으로 데이터가 흐름
– 통신 오버헤드가 크면 학습 속도가 저하될 수 있음
– 파이프라인 병렬화(Pipeline Parallelism)나 텐서 병렬화(Tensor Parallelism)와 조합 가능
ㅇ 적합한 경우:
– 모델 크기가 매우 커서 GPU 메모리에 단일 적재 불가능한 경우
– 동일 데이터셋을 사용하지만 모델 구조가 크고 복잡한 경우
– 대규모 언어 모델(LLM) 학습 시
ㅇ 시험 함정:
– Data Parallelism과 혼동: Data Parallelism은 동일 모델 복제, Model Parallelism은 모델 자체를 분할
– 통신 비용이 낮다고 항상 빠른 것은 아님
– 모델 병렬화는 메모리 한계를 극복하지만 학습 속도 향상을 보장하지 않음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모델 파라미터를 여러 장치에 분할하여 학습하는 방법은 모델 병렬화이다.”
X: “모델 병렬화는 동일 모델을 여러 장치에 복제하여 서로 다른 데이터를 처리한다.”
ㅁ 추가 학습 내용
Model Parallelism은 크게 파이프라인 병렬화와 텐서 병렬화로 나뉜다.
파이프라인 병렬화는 모델의 레이어 단위로 나누어 순차적으로 처리하는 방식이며, 각 장치가 서로 다른 레이어를 담당한다.
텐서 병렬화는 하나의 연산(예: 행렬 곱셈)을 여러 장치로 분할하여 동시에 처리하는 방식이다.
실무에서는 Data Parallelism과 Model Parallelism을 결합한 하이브리드 병렬화가 많이 사용되며, 이를 지원하는 라이브러리로 Megatron-LM, DeepSpeed, GPipe 등이 있다.
시험에서는 Data Parallelism과 Model Parallelism의 차이, 통신 오버헤드, 메모리 절감 효과, GPU 간 동기화 방식 등이 자주 출제된다.