기술 가이드

완전히 샤딩된 데이터 병렬

FSDP(Fully Sharded Data Parallel)는 모델의 매개변수, 기울기 및 최적화 상태를 여러 GPU에 분할하여 각 장치가 슬라이스만 보유하도록 하는 분산 교육 기술입니다.

이 가이드를 들어보세요AI 내레이션 · ~2 min

이 페이지에서2분 읽기
  1. 개요
  2. 심층 분석
  3. 실제 구현
  4. 완전히 샤딩된 데이터 병렬의 미래
  5. 실천에 옮기기
  6. 계속 탐색하세요
  7. 자주 묻는 질문

개요

It makes training huge models possible on hardware that could never fit the whole model in one GPU's memory.

심층 분석

기존 데이터 병렬 처리는 모든 GPU에 모델의 전체 복사본을 유지하므로 메모리가 낭비되고 모델 크기가 제한됩니다. Meta의 PyTorch에서 대중화되고 Microsoft의 ZeRO에서 영감을 받은 FSDP는 대신 매개변수, 그라디언트 및 최적화 상태라는 세 가지를 장치 전반에 걸쳐 분할합니다. 순방향 패스 동안 각 GPU는 임시로 올게더링을 통해 계산 중인 레이어의 전체 가중치를 수집하고 계산을 실행한 다음 수집된 복사본을 즉시 해제합니다. 역방향 패스도 비슷하게 작동하며, 그 다음에는 그라디언트 슬라이스를 소유 GPU에 다시 배포하는 산란 감소가 이어집니다. 각 장치는 모델의 일부만 영구적으로 저장하기 때문에 메모리 사용량은 GPU 수에 따라 대략 선형적으로 떨어지므로 팀은 수백억 또는 수천억 개의 매개변수를 사용하여 모델을 훈련할 수 있습니다.

실제 구현

개별적으로 전체 무게를 지탱할 수 없는 8개의 GPU에 걸쳐 700억 매개변수의 Llama 모델을 미세 조정합니다.

수백 개의 가속기에 걸쳐 최적화 프로그램 상태(Adam의 메모리를 지배함)를 샤딩하여 AI 연구소에서 대규모 언어 모델을 사전 훈련합니다.

연구원들은 PyTorch의 FSDP 래퍼를 사용하여 플래그십 80GB GPU를 구입하지 않고도 대학 클러스터에서 비전 변환기를 교육하고 있습니다.

FSDP와 혼합 정밀도 bfloat16을 결합하여 메모리를 대략 절반으로 줄이고 다중 모드 모델의 훈련 처리량을 가속화합니다.

완전히 샤딩된 데이터 병렬의 미래

FSDP는 PyTorch의 FSDP2를 통해 유용성과 매개변수별 샤딩을 개선하면서 개방형 대규모 모델 교육의 기본이 되고 있습니다. 1조 매개변수 모델을 위한 텐서 및 파이프라인 병렬 처리와의 긴밀한 통합, 혼합 정밀도 및 fp8에 대한 더 나은 지원, 샤딩 경계를 선택하는 더 스마트한 자동 래핑을 기대하세요. NVLink 및 InfiniBand와 같은 GPU 간 상호 연결이 빨라짐에 따라 샤딩의 통신 비용이 계속 줄어들어 더 큰 규모로 실용화됩니다.

실천에 옮기기

왜 중요한가요?

  • 비용 및 예산. 아키텍처 결정은 수년 동안 성능과 운영 비용을 결정합니다.
  • 더 명확한 결정들. 기술 교육은 팀이 최신 스택뿐만 아니라 올바른 스택을 선택하는 데 도움이 됩니다.
  • 품질 관리. 더 나은 엔지니어링 선택은 생산 시 신뢰성 사고를 줄입니다.

조심하세요

  • 하나의 벤치마크를 최적화하면 더 광범위한 시스템 약점을 숨길 수 있습니다.
  • 인프라 및 유지 관리 비용은 종종 과소평가됩니다.
  • 시스템이 더욱 복잡해짐에 따라 보안 및 관찰 가능성의 격차가 커질 수 있습니다.

다음 단계

  1. 구현하기 전에 지연 시간, 품질, 비용 목표를 정의하세요.
  2. 현실적인 로드 및 데이터 조건에서 벤치마킹합니다.
  3. 오류, 드리프트 및 사용자 영향에 대한 계측기 모니터링.
  4. 확장하기 전에 롤백 및 사고 대응 경로를 준비하세요.

계속 탐색하세요

무료 뉴스레터

일일 AI 브리핑 받기

매주 평일 아침마다 3개의 검증된 AI 스토리를 일반 영어로 작성합니다. 무료이며, 광고 없음.

매주 평일마다 한 번 이메일을 받습니다. 한 번 클릭으로 구독 해지. 주소를 판매하거나 공유하지 않습니다.

자신을 테스트해 보세요

Take the Fully Sharded Data Parallel quiz

모든 답변에 즉각적인 피드백과, 과정을 통과하면 검증 가능한 ID가 있는 공유 가능한 인증서를 제공합니다.

퀴즈 시작

무료 AI 교육을 지원합니다. AI Understanding는 501(c)(3) 비영리 단체입니다 — 광고 없음, 유료 장벽 없음, 영원히. 기부하기

자주 묻는 질문

What is Fully Sharded Data Parallel?

FSDP(Fully Sharded Data Parallel)는 모델의 매개변수, 기울기 및 최적화 상태를 여러 GPU에 분할하여 각 장치가 슬라이스만 보유하도록 하는 분산 교육 기술입니다. 이는 하나의 GPU 메모리에 전체 모델을 담을 수 없는 하드웨어에서 거대한 모델을 훈련하는 것을 가능하게 합니다.

표준 데이터 병렬 처리가 수행하지 않는 GPU 전반에 걸쳐 FSDP 샤딩은 무엇입니까?

FSDP는 모델의 매개변수, 기울기 및 최적화 상태를 여러 장치에 걸쳐 분할하는 반면, 표준 데이터 병렬 처리는 모든 GPU에서 전체 모델을 복제합니다.

FSDP는 레이어를 계산하기 직전에 레이어의 전체 가중치를 재구성하기 위해 어떤 집합적 작업을 사용합니까?

레이어가 실행되기 전에 FSDP는 전체 수집을 수행하여 모든 샤드의 전체 매개변수를 임시로 수집한 다음 나중에 해제합니다.

FSDP가 레이어 계산 직후에 수집된 전체 가중치를 해제하는 이유는 무엇입니까?

샤드만 영구적으로 보유하고 일시적으로 전체 가중치를 수집하는 것은 메모리 사용량을 낮게 유지하고 대략 모델의 한 부분에 비례합니다.

FSDP는 어떤 초기 메모리 최적화 접근 방식에서 크게 영감을 얻었습니까?

FSDP의 매개변수, 기울기 및 최적화 상태 분할은 DeepSpeed ​​라이브러리의 Microsoft의 ZeRO에 도입된 아이디어를 밀접하게 따릅니다.

FSDP는 가중치 수집에서 네트워크 대기 시간의 상당 부분을 어떻게 숨깁니까?

FSDP는 현재 레이어가 여전히 컴퓨팅을 수행하는 동안 다음 레이어의 매개변수를 프리페치하여 전체 수집 통신을 유용한 작업과 중첩합니다.