기법 및 라이브러리: Data Parallelism
ㅁ 기법 및 라이브러리
ㅇ 정의:
데이터 병렬 처리(Data Parallelism)는 동일한 모델을 여러 장치에 복제하고, 입력 데이터를 분할하여 병렬로 처리하는 방법이다.
ㅇ 특징:
– 데이터의 독립성을 활용하여 여러 프로세서에서 동시에 처리 가능.
– 모델의 크기가 크지 않은 경우 적합.
– GPU 메모리 사용량은 모델 크기에 따라 결정.
ㅇ 적합한 경우:
– 대규모 데이터를 처리할 때.
– 동일한 모델을 여러 배치 데이터에 병렬로 적용할 때.
ㅇ 시험 함정:
– 데이터 병렬 처리와 모델 병렬 처리의 차이를 혼동할 수 있음.
– 데이터 분할 시 데이터 불균형 문제를 간과할 가능성.
ㅇ 시험 대비 “패턴 보기” 예시:
1. O/X: 데이터 병렬 처리는 동일한 모델을 여러 장치에 복제하여 입력 데이터를 병렬로 처리하는 방식이다. (O)
2. O/X: 데이터 병렬 처리는 모델의 각 부분을 다른 장치에서 병렬로 처리하는 기법이다. (X)
3. O/X: 데이터 병렬 처리는 GPU 메모리 사용량이 데이터 크기에 따라 결정된다. (X)
ㅁ 추가 학습 내용
데이터 병렬 처리와 모델 병렬 처리는 딥러닝에서 큰 모델을 효율적으로 학습하기 위한 두 가지 주요 병렬 처리 방법입니다. 다음은 이 두 가지를 비교하고 학습해야 할 주요 내용을 정리한 것입니다:
1. 데이터 병렬 처리:
– 동일한 모델이 여러 장치(GPU 또는 CPU)에서 독립적으로 작동합니다.
– 각 장치는 서로 다른 데이터 샘플을 처리하며, 모든 장치의 결과가 최종적으로 통합됩니다.
– 장점: 구현이 비교적 간단하고, 모델의 구조를 변경하지 않아도 됩니다.
– 주요 학습 내용:
– 데이터 불균형 문제 해결 전략:
– 데이터 샘플링: 데이터의 균형을 맞추기 위해 소수 클래스 데이터를 증강하거나 다수 클래스 데이터를 감소시키는 방법.
– 가중치 조정: 손실 함수에서 특정 클래스의 중요도를 높여 불균형을 완화하는 방법.
– 배치 크기 조정: 각 장치가 처리하는 데이터 크기를 적절히 설정하여 균형을 유지.
– 통합 과정: 각 장치에서 계산된 결과를 효율적으로 합치는 방법.
2. 모델 병렬 처리:
– 모델의 파라미터를 여러 장치에 분할하여 처리합니다.
– 모델의 각 부분은 서로 다른 장치에서 병렬적으로 실행되며, 장치 간 통신을 통해 결과를 공유합니다.
– 장점: 매우 큰 모델을 학습할 때 유용하며, 메모리 사용을 최적화할 수 있습니다.
– 주요 학습 내용:
– 파라미터 분할 전략: 모델의 구조를 분석하여 병렬 처리에 적합한 방식으로 파라미터를 분할.
– 장치 간 통신 최적화: 데이터 전송 속도를 높이고 통신 오버헤드를 줄이는 방식.
– 모델 구조 분석: 모델 병렬 처리가 적합한 모델인지 판단하는 기준.
두 처리 방식의 핵심 차이점은 데이터 병렬 처리가 동일한 모델을 사용하여 데이터를 분산 처리하는 데 초점을 맞추는 반면, 모델 병렬 처리는 모델 자체를 분할하여 병렬적으로 처리한다는 점입니다. 데이터 병렬 처리에서는 데이터 불균형 문제 해결이 중요하며, 모델 병렬 처리에서는 파라미터 분할과 장치 간 통신이 주요 학습 주제가 됩니다.