기술 가이드

ZeRO 및 샤디드 옵티마이저

ZeRO(Zero Redundancy Optimizer)는 GPU 전체에서 최적화 상태, 기울기 및 가중치를 샤딩하여 데이터 병렬성의 낭비적인 메모리 중복을 제거합니다.

개요

ZeRO(Zero Redundancy Optimizer)는 GPU 전체에서 최적화 상태, 기울기 및 가중치를 샤딩하여 데이터 병렬성의 낭비적인 메모리 중복을 제거합니다. 이를 통해 데이터 병렬 처리의 단순성과 GPU당 메모리의 일부만으로 거대한 모델을 훈련할 수 있습니다.

ZeRO 및 샤디드 최적화 도구는 모델 품질, 인프라 비용, 대기 시간 및 규모에 따른 안정성에 영향을 미치는 기술 구성 요소입니다.

심층 분석

일반적인 데이터 병렬 처리에서 모든 GPU는 최적화 프로그램 상태, 그라데이션 및 매개변수의 중복된 전체 복사본을 저장합니다. 이는 특히 최적화 프로그램 상태가 모델 자체 크기의 몇 배일 수 있는 Adam의 경우 매우 낭비입니다. DeepSpeed의 Microsoft에 의해 도입된 ZeRO는 GPU 전체에 걸쳐 이러한 텐서를 분할하여 각 장치가 슬라이스만 소유하도록 하여 이러한 중복성을 제거합니다. ZeRO는 세 가지 점진적인 단계로 제공됩니다. 1단계는 샤드 최적화 상태, 2단계는 그래디언트 샤딩 추가, 3단계는 매개변수 자체를 샤딩합니다. 필요에 따라 GPU는 통신을 통해 누락된 슬라이스를 수집하고 계산한 다음 이를 해제합니다. 그 결과, GPU당 메모리가 대폭 줄어들어 수십억에서 수조 개의 매개변수 훈련이 가능해지면서 동시에 데이터 병렬성의 쉬운 프로그래밍 모델을 유지할 수 있습니다.

기술적 통찰력

ZeRO는 메모리 절약을 위해 추가 통신을 교환합니다. 3단계에서는 레이어의 순방향 전달 이전에 올게더가 해당 레이어의 전체 매개변수를 각 GPU에 수집합니다. 이후에는 소유되지 않은 슬라이스가 삭제되어 메모리를 회수합니다. 그라디언트는 감소 분산되므로 각 GPU는 자신이 소유한 매개변수와 일치하는 그라디언트 슬라이스만 유지합니다. PyTorch의 FSDP(Fully Sharded Data Parallel)는 동일한 아이디어를 기본적으로 구현하여 모듈을 래핑하여 즉시 샤딩 및 리샤딩합니다.

ZeRO 및 샤디드 옵티마이저 마스터하기

ZeRO(Zero Redundancy Optimizer)는 GPU 전체에서 최적화 상태, 기울기 및 가중치를 샤딩하여 데이터 병렬성의 낭비적인 메모리 중복을 제거합니다. 이를 통해 데이터 병렬 처리의 단순성과 GPU당 메모리의 일부만으로 거대한 모델을 훈련할 수 있습니다. ZeRO 및 샤디드 최적화 도구는 모델 품질, 인프라 비용, 대기 시간 및 규모에 따른 안정성에 영향을 미치는 기술 구성 요소입니다. 깊은 이해를 구축하려면 ZeRO 및 Sharded Optimizer를 단일 기능이 아닌 운영 모델로 취급하십시오. 원하는 결과를 정의하고, 가정을 명확히 하며, 시스템이 안정적으로 수행할 수 있는 작업과 여전히 전문가 판단이 필요한 작업을 분리하세요.

실제로 ZeRO 및 Sharded Optimizer를 사용하는 강력한 팀은 안정성과 비용에 맞춰 아키텍처, 데이터 및 인프라 선택을 최적화합니다. 명시적인 성공 기준을 문서화하고, 현실적인 데이터 및 워크플로를 기준으로 테스트하며, 일회성 벤치마크 승리보다는 관찰된 실패 패턴을 기반으로 반복합니다. 이론적 이해가 제품, 정책, 운영 전반에 걸쳐 지속 가능한 역량으로 바뀌는 곳입니다.

아키텍처 결정은 수년간 성능과 운영 비용을 결정합니다. 동시에 하나의 벤치마크를 최적화하면 더 광범위한 시스템 약점을 숨길 수 있습니다. 가장 탄력적인 접근 방식은 실험 속도와 거버넌스 규율을 결합하는 것입니다. 즉, 파일럿 실행, 증거 캡처, 결정 로그 게시, 모델 동작, 사용자 기대 및 규제 요구 사항이 발전함에 따라 보호 장치를 지속적으로 업데이트합니다.

전략적 영향

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

아키텍처 결정은 수년간 성능과 운영 비용을 결정합니다. 고품질 배포에서는 이는 측정 가능한 운영 규칙, 소유권 경계 및 반복적인 검토 의식으로 변환되므로 팀은 모호성을 확장하는 대신 자신감을 확장할 수 있습니다.

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

기술 교육은 팀이 최신 스택뿐만 아니라 올바른 스택을 선택하는 데 도움이 됩니다. 고품질 배포에서는 이는 측정 가능한 운영 규칙, 소유권 경계 및 반복적인 검토 의식으로 변환되므로 팀은 모호성을 확장하는 대신 자신감을 확장할 수 있습니다.

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

더 나은 엔지니어링 선택은 생산 시 신뢰성 사고를 줄입니다. 고품질 배포에서는 이는 측정 가능한 운영 규칙, 소유권 경계 및 반복적인 검토 의식으로 변환되므로 팀은 모호성을 확장하는 대신 자신감을 확장할 수 있습니다.

ZeRO와 샤디드 옵티마이저의 미래

샤딩은 이국적인 옵션이 아닌 대규모 훈련의 기본이 되고 있습니다. 오프로딩(ZeRO-Infinity를 통해 슬라이스를 CPU 또는 NVMe로 푸시)과의 더 깊은 통합, 비용을 숨기기 위한 계산과 함께 전체 수집 및 분산 감소의 더 나은 중첩, 텐서 및 파이프라인 병렬 처리와의 결합을 기대합니다. 모델이 계속 성장함에 따라 메모리 효율적인 샤딩 최적화 프로그램은 모델을 현실적인 하드웨어 예산에 맞추는 데 핵심입니다.

실제 구현

DeepSpeed ​​ZeRO Stage 2를 사용하여 GPU 메모리가 오버플로될 수 있는 수십억 개의 매개변수 언어 모델을 미세 조정합니다.

매개변수, 경사도, 최적화 상태를 GPU 전반에 걸쳐 분할하고 필요에 따라 레이어별로 수집하는 PyTorch FSDP를 사용한 교육입니다.

ZeRO-Offload를 적용하여 최적화 상태를 CPU 메모리로 푸시하여 단일 GPU가 VRAM보다 몇 배 더 큰 모델을 훈련할 수 있도록 합니다.

GPU 및 CPU 메모리가 부족할 때 NVMe 스토리지에서 매개변수 샤드를 스트리밍하여 ZeRO-Infinity로 1000조 매개변수 모델을 확장합니다.

구현 패턴

ZeRO 및 샤디드 최적화 프로그램의 실제 사례

DeepSpeed ​​ZeRO Stage 2를 사용하여 GPU 메모리가 오버플로될 수 있는 수십억 개의 매개변수 언어 모델을 미세 조정합니다.

DeepSpeed ZeRO Stage 2를 사용하여 GPU 메모리가 오버플로될 수 있는 수십억 개의 매개변수 언어 모델을 미세 조정합니다. 팀은 일반적으로 품질 임계값을 미리 정의하고, 극단적인 경우에 대한 인적 에스컬레이션 경로를 유지하고, 시간이 지남에 따라 생산성 향상과 오류 비용을 모두 추적할 때 더 나은 결과를 얻습니다.

ZeRO 및 샤디드 최적화 프로그램의 실제 사례

매개변수, 경사도, 최적화 상태를 GPU 전반에 걸쳐 분할하고 필요에 따라 레이어별로 수집하는 PyTorch FSDP를 사용한 교육입니다.

GPU 전반에 걸쳐 매개변수, 그라디언트 및 최적화 프로그램 상태를 샤딩하고 필요에 따라 레이어별로 수집하는 PyTorch FSDP를 사용한 교육 팀은 일반적으로 품질 임계값을 미리 정의하고, 극단적인 경우에 대한 인적 에스컬레이션 경로를 유지하고, 시간이 지남에 따라 생산성 향상과 오류 비용을 모두 추적할 때 더 나은 결과를 얻습니다.

ZeRO 및 샤디드 최적화 프로그램의 실제 사례

ZeRO-Offload를 적용하여 최적화 상태를 CPU 메모리로 푸시하여 단일 GPU가 VRAM보다 몇 배 더 큰 모델을 훈련할 수 있도록 합니다.

최적화 상태를 CPU 메모리에 푸시하기 위해 ZeRO-Offload를 적용하여 단일 GPU가 VRAM 팀보다 몇 배 더 큰 모델을 훈련할 수 있도록 하면 일반적으로 품질 임계값을 미리 정의하고, 극단적인 경우에 대한 인적 에스컬레이션 경로를 유지하고, 시간이 지남에 따라 생산성 향상과 오류 비용을 모두 추적할 때 더 나은 결과를 얻을 수 있습니다.

ZeRO 및 샤디드 최적화 프로그램의 실제 사례

GPU 및 CPU 메모리가 부족할 때 NVMe 스토리지에서 매개변수 샤드를 스트리밍하여 ZeRO-Infinity로 1000조 매개변수 모델을 확장합니다.

GPU 및 CPU 메모리가 부족할 때 NVMe 스토리지에서 매개변수 샤드를 스트리밍하여 ZeRO-Infinity로 1000조 매개변수 모델을 확장합니다. 팀은 일반적으로 품질 임계값을 미리 정의하고, 엣지 케이스에 대한 인적 에스컬레이션 경로를 유지하고, 시간이 지남에 따라 생산성 향상과 오류 비용을 모두 추적할 때 더 나은 결과를 얻습니다.

위험 및 가드레일

!

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

!

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

!

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

구현 로드맵

1

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

구현하기 전에 지연 시간, 품질, 비용 목표를 정의하세요. 각 단계를 증거 게이트로 처리합니다. 기준이 충족되지 않으면 롤아웃을 일시 중지하고 간격을 좁힌 다음 사용을 확장합니다.

2

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

현실적인 로드 및 데이터 조건에서 벤치마킹합니다. 각 단계를 증거 게이트로 처리합니다. 기준이 충족되지 않으면 롤아웃을 일시 중지하고 간격을 좁힌 다음 사용을 확장합니다.

3

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

오류, 드리프트 및 사용자 영향에 대한 계측기 모니터링. 각 단계를 증거 게이트로 처리합니다. 기준이 충족되지 않으면 롤아웃을 일시 중지하고 간격을 좁힌 다음 사용을 확장합니다.

4

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

확장하기 전에 롤백 및 사고 대응 경로를 준비하세요. 각 단계를 증거 게이트로 처리합니다. 기준이 충족되지 않으면 롤아웃을 일시 중지하고 간격을 좁힌 다음 사용을 확장합니다.

계속 탐색하세요