1. DP ( Data Parallel )
동일한 딥러닝 모델 복사본을 여러 GPU에 배치하고 병렬로 학습 시키는 방법.
가장 기본적인 방법. DP를 사용하면 동일한 모델의 복사본이 각 GPU에 배치되고, 미니배치 데이터를 여러 GPU에 나누어 병렬로 학습.
장점 | 쉬운 구현 | 프레임워크에서 제공하는 데이터 병렬화 기능을 통해 복잡한 코드 변경 없이 병렬 처리 손쉽게 구현 가능. |
효율적인 자원 활용 | 여러 GPU 동시에 활용하여 학습 속도를 크게 향상시킬 수 있으며, 더 큰 모델 학습 및 대규모 데이터 처리에 적합. | |
단점 | 비효율적인 기울기 집계 | GPU 간 기울기 집계 과정에서 네트워크 통신 오버헤드가 발생하여 전체 학습 속도가 느려질 수 있음. |
메모리 낭비 | 각 GPU가 동일한 모델 복사본을 가지므로 모델 크기가 큰 경우 메모리 사용량이 비효율적. GPU 메모리가 제한적일 경우 문제 악화. | |
동기화 문제 | 기울기 집계 후 파라미터 업데이트 시 모든 GPU가 동기화되어야 하며, 느린 GPU를 기다리는 병목 현상이 발생할 수 있음. |
2. DDP ( Distributed Data Parallel )
PytTorch에서 제공하는 병렬 처리 기법 중 하나로, 모델을 여러 GPU와 여러 노드에 걸쳐 병렬로 학습시킬 수 있는 기능.
DDP는 DP와 비슷해 보일 수 있지만, DDP가 DP보다 효율적이고 확장 가능한 방식으로, 특히 대규모 학습 작업에 적합.
장점 | 확장성 | 여러 GPU뿐 아니라 여러 노드에서도 동작할 수 있어 대규모 작업에 유리. |
효율성 | 통신 오버헤드가 적어 더 빠른 기울기 동기화 가능. | |
독립적 실행 | 각 프로세스가 독립적으로 실행되어 CPU와 GPU간의 자원 경합이 줄어들고, 전체적인 성능이 향상. | |
단점 | 복잡한 구현 | DP에 비해 DDP는 구현이 상대적으로 복잡하며, 프로세스 간의 동기화 및 통신을 고려해야함. |
메모리 사용량 증가 | 각 프로세스가 독립적으로 실행되기 때문에 DP에 비해 메모리 사용량 증가할 수 있음. |
DP와 DDP의 차이
DP | DDP | |
실행 방식 | 하나의 프로세스가 여러 GPU를 사용 | GPU마다 하나의 프로세스를 사용 |
성능 | 느림 (병목 생김) | 빠름 (효율적 통신 구조) |
구현 간편성 | 쉬움 (model = nn.DataParallel(model)) | 복잡함 (초기화, 통신 설정 필요) |
권장 여부 | 테스트용 또는 소규모 실험 | 실제 학습 시 대부분 DDP 권장 |
3. FSDP ( Fully Sharded Data Parallel )
PytTorch에서 제공하는 또 다른 병렬 처리 기법 중 하나로, 대규모 모델 학습시 메모리 사용을 최적화하기 위해 설계되었음.
FSDP는 모델의 파라미터를 GPU간에 분할(sharding)하여 메모리 효율을 극대화하면서 병렬 학습을 가능하게 함.
해당 방식은 대규모 모델을 학습할 때 매우 유용.
장점 | 메모리 효율성 | 모델 파라미터를 분할하여 저장함으로써 메모리 사용량을 줄임. |
대규모 모델 학습 | 메모리 절약 효과로 인해 대규모 모델의 학습이 가능. | |
확장성 | 여러 GPU와 노드에 걸쳐 확장 가능하며 대규모 작업에 적합. | |
단점 | 복잡한 통신 패턴 | 파라미터 분할 및 동기화 과정에서 네트워크 통신 오버헤드가 발생할 수 있음. |
높은 구현 복잡성 | 효과적으로 사용하려면 추가적인 설정과 조정이 필요. |
4. DP vs DDP vs FSDP
DP는 가장 구현하기 쉬운 방법, 주로 여러 GPU 활용해 모델 학습 속도를 높이는데 사용. 그러나 동기화와 메모리사용 측면에서 비효율적인 경우 발생 가능
DDP는 DP를 확장한 방식으로, 여러 GPU뿐 아니라 여러 노드 간에도 동작할 수 있도록 설계.
효율적인 통신과 동기화가 가능하며 CPU와 GPU 충돌도 줄일 수 있음. 다만 구현이 상대적으로 더 복잡하여 메모리 사용량이 증가.
FSDP는 대규모 모델 학습을 위해 설계된 방법으로, 모델 파라미터를 GPU간에 나누어 저장함으로써 메모리 효율성을 극대화.
하지만 통신 패턴과 구현이 매우 복잡하여 네트워크 오버헤드가 발생할 수 있다는 점 고려.
기법 | 장점 | 단점 |
DP | 쉬운 구현, 효율적인 자원 활용, 상대적으로 단순한 코드 | 비효율적인 기울기 집계, 메모리 낭비, 동기화 문제 발생 가능 |
DDP | 확장성, 효율적인 통신 및 동기화, CPU/GPU 자원 경합 감소 | 복잡한 구현, 높은 메모리 사용량 |
FSDP | 메모리 효율성, 대규모 모델 학습 가능 | 복잡한 통신 패턴, 높은 구현 복잡성, 네트워크 오버헤드 |
5. DeepSpeed
DeepSpeed 는 Microsoft에서 개발한 딥러닝 모델 학습을 위한 최적화 라이브러리로, 특히 대규모 모델의 학습을 가능하게 하고 이를 효율적으로 수행할 수 있도록 여러가지 혁신적인 기능을 제공.
DeepSpeed는 메모리 효율성, 학습 속도, 확장성 등을 극대화하여 기존의 훈련 방식으로는 학습이 불가능하거나 매우 비효율적인 거대 모델을 학습할 수 있도록 돕습니다.
장점 |
대규모 모델 학습 | ZeRO 기술을 활용하여 기존 방법으로는 어려웠던 초대형 모델의 효율적인 학습이 가능. |
메모리 효율성 | 모델 파라미터와 옵티마이저 상태를 분할 관리하여 메모리 사용을 최적화. | |
확장성 | 여러 GPU와 노드에 걸쳐 확장 가능하며, 높은 효율성을 제공. | |
학습 속도 향상 | 혼합 정밀도 훈련과 Sparse Attention을 통해 학습 속도를 크게 향상시킬 수 있음. | |
단점 |
복잡한 설정 | 고도의 최적화를 위해 복잡한 설정이 필요할 수 있음. |
구현 난이도 | 초대형 모델 학습 시 다양한 최적화 기법과 기능을 이해하고 구현해야 하므로 학습 곡선이 가파를 수 있음. | |
환경 의존성 | 최적의 성능을 발휘하려면 특정 하드웨어 및 소프트웨어 환경에서 실행해야 할 수도 있음. |
'공부 정리 > 면접 준비' 카테고리의 다른 글
[ 인공지능 ] LLM 관련 정리 (1) | 2025.05.20 |
---|---|
[ 인공지능 ] PEFT 학습 (0) | 2025.05.18 |
간단 선형대수 용어 정리 (0) | 2025.02.26 |
확증적 데이터 분석 vs 탐색적 데이터 분석 (0) | 2025.02.26 |
LangGraph 기본 개념 (0) | 2025.02.26 |