기술 가이드

CPU 및 NVMe에 대한 최적화 상태 오프로딩

부족한 GPU 메모리 대신 CPU RAM 또는 NVMe SSD에 훈련(최적화 상태, 그라데이션, 때로는 가중치)의 무거운 기록을 보관하는 메모리 절약 트릭입니다.

2분 읽기마지막 업데이트

개요

It lets people train far larger models than their GPU's memory would otherwise allow.

심층 분석

Adam과 같은 옵티마이저를 사용하여 신경망을 훈련할 때 모든 매개변수에는 두 개의 실행 통계(운동량 및 분산)와 전체 정밀도의 가중치 사본 및 기울기 등 추가 수하물이 포함됩니다. 혼합 정밀도 훈련에서 이는 매개변수당 대략 총 16바이트가 될 수 있으며, 이는 가중치 자체의 2바이트를 왜소하게 만듭니다. 오프로드는 해당 수하물을 GPU에서 이동시킵니다. CPU 오프로드는 최적화 프로그램 상태를 PCIe 버스를 통해 일반 시스템 RAM으로 스트리밍하는 반면, NVMe 오프로드는 이를 빠른 솔리드 스테이트 디스크까지 푸시합니다. DeepSpeed의 ZeRO-Infinity 및 ZeRO-Offload로 대중화된 이 기술은 원시 속도를 용량으로 교환하여 단일 GPU 또는 소규모 클러스터가 수십억 개의 매개변수를 사용하여 모델을 미세 조정할 수 있도록 합니다.

기술적 통찰력

핵심은 데이터 이동과 계산이 겹치는 것입니다. 최적화 상태는 CPU/NVMe에 있습니다. 역방향 패스 중에 파티션은 필요하기 직전에 PCIe를 통해 프리패치되고 최적화 단계 자체는 CPU에서 실행되는 경우가 많습니다. ZeRO-Offload는 float32 마스터 가중치와 Adam 순간을 CPU에 유지하므로 순방향 및 역방향 수학만 GPU에 유지됩니다. NVMe는 계층형 캐시를 추가하여 핫 파티션이 RAM에 유지되는 동안 테라바이트 규모의 상태가 디스크에 유출되도록 합니다.

전략적 영향

비용 및 예산

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

더 명확한 결정들

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

품질 관리

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

CPU 및 NVMe에 대한 옵티마이저 상태 오프로딩의 미래

모델이 GPU 메모리를 계속 초과함에 따라 계층형 오프로드는 이색적이지 않고 표준이 되고 있습니다. CPU-GPU 경계를 흐리게 하는 NVLink-C2C 및 CXL 메모리 풀과 같은 더 빠른 상호 연결과 프리페치할 상태를 예측하는 더 스마트한 스케줄러를 통해 더욱 긴밀하게 통합될 수 있습니다. Grace Hopper와 같은 통합 메모리 아키텍처는 PCIe 페널티를 줄이고 프레임워크는 다중 계층 오프로드를 거의 투명하게 만들어 취미 사용자가 적당한 하드웨어에서 대형 모델을 미세 조정할 수 있도록 추진하고 있습니다.

실제 구현

DeepSpeed ​​ZeRO-Offload를 사용하여 단일 24GB 소비자 GPU에서 130억 매개변수 LLM을 미세 조정하여 Adam 상태를 CPU RAM으로 푸시합니다.

ZeRO-Infinity를 사용하여 최적화 상태를 NVMe 드라이브에 유출하여 몇 개의 GPU에서 수십억 개의 매개변수 모델을 훈련하는 소규모 연구실입니다.

Hugging Face Accelerate 구성은 CPU 오프로드를 활성화하여 사용자가 메모리 부족 오류가 발생할 수 있는 전체 미세 조정 작업을 실행할 수 있도록 합니다.

비용에 민감한 스타트업은 최고급 80GB 카드 비용을 지불하는 대신 더 저렴하고 메모리가 적은 클라우드 GPU를 임대하고 연결된 NVMe로 오프로드합니다.

위험 및 가드레일

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

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

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

구현 로드맵

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 Optimizer State Offloading to CPU and NVMe 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

다음 가이드

Adam과 적응형 최적화 프로그램

자주 묻는 질문

What is Optimizer State Offloading to CPU and NVMe?

부족한 GPU 메모리 대신 CPU RAM 또는 NVMe SSD에 훈련(최적화 상태, 그라데이션, 때로는 가중치)의 무거운 기록을 보관하는 메모리 절약 트릭입니다. 이를 통해 사람들은 GPU 메모리가 허용하는 것보다 훨씬 더 큰 모델을 훈련할 수 있습니다.

최적화 프로그램 상태를 CPU 또는 NVMe로 오프로드하는 주요 목표는 무엇입니까?

오프로드는 무거운 최적화 상태를 GPU에서 CPU RAM 또는 NVMe로 이동하여 GPU 메모리를 확보하므로 더 큰 모델을 동일한 하드웨어에서 교육할 수 있습니다.

혼합 정밀도의 Adam 최적화 프로그램의 경우 일반적으로 매개변수당 가장 많은 메모리를 소비하는 데이터는 무엇입니까?

Adam은 모멘텀, 분산 및 매개변수당 대략 총 16바이트의 완전 정밀도 마스터 가중치를 저장합니다. 이는 2바이트 반 정밀도 가중치보다 훨씬 큽니다.

대규모 최적화 프로그램 오프로딩을 대중화한 프레임워크는 무엇입니까?

DeepSpeed의 ZeRO-Offload 및 ZeRO-Infinity는 CPU 및 NVMe에 대한 오프로딩 최적화 상태를 대규모로 도입하고 대중화했습니다.

CPU 또는 NVMe로 오프로드하는 데 드는 주요 성능 비용은 얼마입니까?

상태를 GPU 외부로 이동한다는 것은 데이터를 PCIe 또는 NVMe로 전송하는 것을 의미하며, 이는 GPU상의 메모리보다 느리므로 컴퓨팅과 겹치지 않는 한 처리량이 떨어집니다.

오프로딩 시스템은 전송 대기 시간의 상당 부분을 어떻게 숨깁니까?

스케줄러는 GPU가 여전히 컴퓨팅을 수행하는 동안 PCIe를 통해 필요한 파티션을 프리페치하여 대기 시간을 마스크하기 위해 컴퓨팅과 통신을 겹칩니다.