기술 가이드

완전히 샤딩된 데이터 병렬

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

2분 읽기마지막 업데이트

개요

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 수에 따라 대략 선형적으로 떨어지므로 팀은 수백억 또는 수천억 개의 매개변수를 사용하여 모델을 훈련할 수 있습니다.

기술적 통찰력

FSDP는 메모리 절약을 위해 추가 통신을 교환합니다. 각 레이어의 가중치는 사용 직전에 모두 수집하여 필요에 따라 재구성되고 바로 폐기되는 반면, 그라디언트는 산란 감소를 통해 결합되고 분할됩니다. 현재 레이어가 실행되는 동안 다음 레이어의 매개변수를 프리페치하여 통신과 계산을 겹칠 수 있으며, 이로 인해 네트워크 대기 시간이 많이 숨겨집니다. 샤딩 세분성(래핑 정책)을 조정하면 메모리 공간과 통신 오버헤드의 균형이 맞춰집니다.

전략적 영향

비용 및 예산

아키텍처 결정은 수년 동안 성능과 운영 비용을 결정합니다.

더 명확한 결정들

기술 교육은 팀이 최신 스택뿐만 아니라 올바른 스택을 선택하는 데 도움이 됩니다.

품질 관리

더 나은 엔지니어링 선택은 생산 시 신뢰성 사고를 줄입니다.

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

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

실제 구현

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

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

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

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

위험 및 가드레일

하나의 벤치마크를 최적화하면 더 광범위한 시스템 약점을 숨길 수 있습니다.

인프라 및 유지 관리 비용은 종종 과소평가됩니다.

시스템이 더욱 복잡해짐에 따라 보안 및 관찰 가능성의 격차가 커질 수 있습니다.

구현 로드맵

1

구현하기 전에 지연 시간, 품질, 비용 목표를 정의하세요.

2

현실적인 로드 및 데이터 조건에서 벤치마킹합니다.

3

오류, 드리프트 및 사용자 영향에 대한 계측기 모니터링.

4

확장하기 전에 롤백 및 사고 대응 경로를 준비하세요.

계속 탐색하세요

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Fully Sharded Data Parallel quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

퀴즈 시작

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

자주 묻는 질문

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