프로그래밍/LLM

[Day6] 한 권으로 LLM 온라인 스터디 1기 - GPU 병렬화 기법

31weeks 2025. 1. 25. 18:44
728x90
반응형

3.3 GPU 병렬화 기법

3.3.1 데이터 병렬 처리(Data Parallelism, DP)

  • 전체 데이터를 작은 덩어리 여러 개로 나눠 각각을 서로 다른 GPU에서 동시에 처리
  • 학습시간 크게 단축, 메모리 제약 없이 대규모 데이터셋을 효과적으로 다룰 수 있음
  • 모든 GPU의 VRAM을 균등하게 활용하지 못함 → 모델 병렬화 기법이 등장

 

3.3.2 모델 병렬화(Model Parallelism, MP)

  • 대규모 신경망 모델을 여러 GPU에서 나누어 처리하는 방식
  • 모델을 수직으로 분할해서 처리(수직 모델 병렬화)
  • 단일 GPU로는 처리하기 어려운 대규모 모델을 효율적으로 학습하고 실행
  • 특정 시점에 대부분의 GPU가 놀고 있을 수 있음
  • 기기 간 데이터 복사로 인한 부담이 전체적인 학습속도를 저하시킬 수 있음
    → 파이프라인 병렬화 등장

 

3.3.3 파이프라인 병렬화(Pipeline Parallelism, PP)

  • 모델을 여러 단계로 분할해 각 단계를 다른 GPU에서 동시에 실행 → 전체 모델의 실행속도를 향상 
  • MP와 거의 동일하지만 인위적으로 파이프라인을 생성 → 여러 GPU가 계산 프로세스에 동시에 참여할 수 있도록함

 

3.3.4 텐서 병렬 처리(Tensor Parallelism, TP)

  • 대규모 딥러닝 모델의 주요 계산 부하를 분산하는데 쓰이는 방법
  • 각 텐서를 작은 부분 행렬로 나누고, 이를 각기 다른 GPU에 할당 → 메모리 사용의 효율성이 높아짐
  • 각 GPU가전체 모델의 일부만 로드하기 때문에 개별 GPU의 메모리 제약을 더 잘 관리할 수 있음
  • 계산작업을 여러 GPU에 분산시켜 전체적인 처리시간 단축
  • 행렬 연산과 같은 복잡한 계산에 유리 

 

3.3.5 FSDP(Fully Sharded Data Paralle)

  • 딥러닝에서 사용되는 고급 데이터 병렬 처리 기법 중 하나로, 대규모 모델 학습에 효과적
  • GPU가 모델의 일부만을 메모리에 보유하도록 해 전체  모델의 메모리 요구 사항을 줄이는 것을 목표로 함
  • 모델을 샤드(Shads)라고하는 더 작은 조각으로 분할, 각 GPU에 샤드를 할당해서 실행하는 방식
  • FSDP의 작동 원리
    - 모델 샤딩 : 모델의 파라미터를 여러 개의 샤드로 나누고, 각 샤드를 별도의 GPU에 할당해 독립적으로 관리
    - 메모리 절약 : 각 GPU는 할당된 샤드의 파라미터만 메모리에 로드
    - 동적 샤드 로딩 : 필요에 따라 파라미터 샤드를 GPU 메모리에 로드하고, 사용이 끝나면 메모리에서 제거
    - 효율적인 그레이디언트 집계 : 각 GPU에서 계산된 그레이디언트는 중앙 집계 서버나 특정 GPU에서 수집되어 전체 모델의 파라미터를 업데이트 하는데 사용 → 네트워크 통신 비용을 최소화
728x90
반응형