기술 가이드

그라데이션 누적

그라데이션 누적을 사용하면 가중치를 업데이트하기 전에 여러 개의 작은 미니 배치에 대한 그라데이션을 합산하여 제한된 GPU 메모리에서 대규모 배치 크기를 시뮬레이션할 수 있습니다.

2분 읽기마지막 업데이트

개요

It is the standard workaround for training big models when memory is the bottleneck.

심층 분석

일반적으로 학습 단계는 하나의 배치를 처리하고 기울기를 계산하며 매개변수를 즉시 업데이트합니다. 그래디언트 누적을 사용하면 더 작은 마이크로 배치에서 여러 개의 정방향 및 역방향 전달을 실행하고 해당 그래디언트를 매개변수 버퍼에 함께 추가하고 N 마이크로 배치 후에만 최적화 단계를 호출하고 그래디언트를 0으로 만듭니다. 최대 메모리가 하나의 마이크로 배치 활성화만 보유하더라도 유효 배치 크기는 마이크로 배치 크기에 N을 곱한 값이 됩니다. 이는 많은 훈련 레시피가 안정적인 통계를 위해 대규모 배치를 가정하고 대형 변환기와 같은 모델이 단일 장치에 전체 대상 배치를 맞출 수 없기 때문에 중요합니다. 문제: 배치 정규화 통계는 마이크로 배치별로 계산되므로 레이어 표준 또는 그룹 표준은 누적과 더 잘 쌍을 이루며 효과적인 학습 속도를 올바르게 유지하려면 손실을 올바르게 조정해야 합니다.

기술적 통찰력

합산된 손실의 기울기는 가산되기 때문에 N 마이크로 배치에 대한 기울기를 누적하는 것은 수학적으로 평균을 적절하게 계산한 경우 하나의 큰 배치와 동일합니다. 구현에서는 일반적으로 각 마이크로 배치 손실을 역방향으로 나누기 전에 N으로 나눕니다. 따라서 누적된 기울기는 전체 유효 배치에 대한 평균과 같습니다. N번째 마이크로 배치까지 Optimizer.step() 및 zero_grad()를 건너뛰고 최대 메모리 감소를 위해 추가 컴퓨팅 시간을 교환합니다.

전략적 영향

비용 및 예산

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

더 명확한 결정들

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

품질 관리

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

그라디언트 축적의 미래

모델 크기가 단일 장치 메모리를 능가하므로 그라데이션 누적은 기본 레버로 유지됩니다. DeepSpeed ​​및 FSDP와 같은 프레임워크에서 혼합 정밀도, 활성화 체크포인트, ZeRO 샤딩 및 파이프라인 병렬 처리와 점점 더 결합됩니다. 라이브러리가 메모리 예산에 맞춰 축적 단계를 자동 조정하는 보다 엄격한 자동화와 그렇지 않으면 불가능했을 교육을 잠금 해제하는 소비자 GPU를 포함하여 일반 하드웨어에서 대규모 모델을 미세 조정하는 것이 계속해서 중요할 것으로 예상됩니다.

실제 구현

8개 또는 16개 이상의 마이크로 배치를 누적하여 수백 개의 효과적인 배치에 도달함으로써 단일 소비자 GPU에서 대규모 언어 모델을 미세 조정합니다.

2개의 배치도 적합하지만 레시피에는 효과적인 32개의 배치가 필요한 고해상도 비전 또는 분할 모델을 교육합니다.

Hugging Face Trainer와 PyTorch Lightning은 제한된 VRAM 설정에서 일상적으로 사용되는gradient_accumulation_steps 설정을 노출합니다.

누적을 통해 효과적인 배치 크기를 일치시켜 더 작은 하드웨어에서 논문의 대규모 배치 결과를 재현합니다.

위험 및 가드레일

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

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

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

구현 로드맵

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 Gradient Accumulation 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 Gradient Accumulation?

그라데이션 누적을 사용하면 가중치를 업데이트하기 전에 여러 개의 작은 미니 배치에 대한 그라데이션을 합산하여 제한된 GPU 메모리에서 대규모 배치 크기를 시뮬레이션할 수 있습니다. 이는 메모리에 병목 현상이 발생할 때 대규모 모델을 훈련하기 위한 표준 해결 방법입니다.

그래디언트 축적을 통해 주로 무엇을 할 수 있나요?

업데이트하기 전에 여러 마이크로 배치에 걸쳐 그래디언트를 합산하면 한꺼번에 메모리에 보관하지 않고도 대규모 배치를 모방할 수 있습니다.

누적 중에 언제 최적화 프로그램의 단계를 호출하고 기울기를 0으로 설정합니까?

N개의 마이크로 배치에 걸쳐 기울기를 누적하고 주기가 끝날 때 한 번만 업데이트합니다.

어떤 정규화 레이어가 그래디언트 누적과 더 명확하게 결합됩니까?

Batch-norm은 마이크로 배치당 통계를 계산하므로 레이어 또는 그룹 표준은 작은 마이크로 배치와의 불일치를 방지합니다.