기술 가이드

그라데이션 누적

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

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

이 페이지에서2분 읽기
  1. 개요
  2. 심층 분석
  3. 실제 구현
  4. 그라디언트 축적의 미래
  5. 실천에 옮기기
  6. 계속 탐색하세요
  7. 자주 묻는 질문

개요

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

심층 분석

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

실제 구현

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

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

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

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

그라디언트 축적의 미래

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

실천에 옮기기

왜 중요한가요?

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

조심하세요

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

다음 단계

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

계속 탐색하세요

무료 뉴스레터

일일 AI 브리핑 받기

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

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

자신을 테스트해 보세요

Take the Gradient Accumulation quiz

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

퀴즈 시작

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

자주 묻는 질문

What is Gradient Accumulation?

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

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

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

With an accumulation factor N, when should optimizer.step() and zero_grad() occur?

Accumulate gradients across N micro-batches, call optimizer.step() once for the effective batch, then clear gradients before the next window; begin training with cleared buffers.

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

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

Why may four micro-batches with BatchNorm behave differently from one physical batch of the same total size?

Batch-dependent forward computations break exact equivalence.