AI 시스템 구축: 분산 학습 – Model Parallel
ㅁ 분산 학습
ㅇ 정의:
여러 대의 컴퓨터나 GPU를 활용하여 대규모 데이터나 복잡한 모델을 병렬로 학습시키는 방법으로, 학습 속도를 높이고 메모리 한계를 극복하기 위해 사용됨.
ㅇ 특징:
– 데이터 병렬(Data Parallel)과 모델 병렬(Model Parallel)로 구분됨
– 네트워크 통신 비용과 동기화 지연이 성능에 큰 영향을 미침
– 대규모 언어 모델, 이미지 생성 모델 등에서 필수적으로 활용
ㅇ 적합한 경우:
– 단일 GPU 메모리로는 모델 전체를 적재할 수 없을 때
– 학습 시간을 단축해야 하는 대규모 프로젝트
ㅇ 시험 함정:
– 데이터 병렬과 모델 병렬의 개념을 혼동하는 문제
– 분산 처리 시 병목이 CPU인지 GPU인지 구분하는 문제
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모델의 각 부분을 서로 다른 장치에 배치하여 학습하는 방식은 모델 병렬이다.”
X: “모델 병렬은 동일한 모델 전체를 모든 장치에 복제하여 학습한다.”
================================
1. Model Parallel
ㅇ 정의:
하나의 모델을 여러 장치(GPU/TPU)에 나누어 각 장치가 모델의 다른 부분을 담당하도록 하는 병렬 학습 방식.
ㅇ 특징:
– 모델의 파라미터나 레이어를 분할하여 각 장치에 배치
– 각 장치 간 순차적 연산이 필요하여 통신 지연 가능성 존재
– 메모리 사용량을 분산시켜 초대형 모델 학습 가능
ㅇ 적합한 경우:
– 모델 크기가 단일 장치 메모리를 초과하는 경우
– 파라미터 수가 매우 많은 대규모 신경망 학습
ㅇ 시험 함정:
– 데이터 병렬과 혼동: 데이터 병렬은 동일 모델 복제, 모델 병렬은 모델 자체 분할
– 통신 오버헤드가 없는 것처럼 기술하는 설명
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모델 병렬은 모델의 일부를 각 장치가 나누어 처리한다.”
X: “모델 병렬은 각 장치에서 전체 모델을 처리한다.”
ㅁ 추가 학습 내용
Model Parallel 학습은 파이프라인 병렬과 텐서 병렬로 구분된다.
파이프라인 병렬은 신경망의 레이어를 여러 장치에 나누어 순차적으로 처리하는 방식이다. 장점은 레이어 단위 분할로 장치 활용률을 높일 수 있다는 점이며, 단점은 파이프라인 버블로 인해 처리 효율이 떨어질 수 있다는 것이다. 주로 모델이 깊고 레이어별 연산량이 큰 경우에 적용된다.
텐서 병렬은 하나의 행렬 연산을 여러 장치에 나누어 병렬로 수행하는 방식이다. 장점은 대규모 행렬 곱셈 연산에서 병렬 처리 효율이 높다는 점이며, 단점은 장치 간 통신량이 많아진다는 것이다. 주로 매우 큰 매트릭스 연산이 필요한 대규모 모델에서 사용된다.
분산 학습에서는 동기식 업데이트와 비동기식 업데이트가 있다. 동기식은 모든 장치가 연산을 마친 후 파라미터를 동시에 갱신하므로 일관성이 높지만 느릴 수 있다. 비동기식은 장치가 독립적으로 파라미터를 갱신하므로 속도는 빠르지만 일관성이 떨어질 수 있다.
All-Reduce 통신 패턴은 각 장치의 연산 결과를 집계하고 다시 모든 장치에 동일하게 배포하는 방식으로, 분산 학습에서 파라미터 동기화에 널리 사용된다. NCCL은 NVIDIA에서 제공하는 고성능 통신 라이브러리로, GPU 간 효율적인 데이터 전송과 All-Reduce 같은 집단 통신 연산을 지원한다.