기술 가이드

그라데이션 체크포인트

그라데이션 체크포인트(활성화 체크포인트라고도 함)는 순방향 전달 중에 대부분의 중간 활성화를 버리고 역전파 중에 즉시 다시 계산하는 메모리 절약 트릭입니다.

2분 읽기마지막 업데이트

개요

It lets you train deeper, larger networks by trading extra compute for much lower memory use.

심층 분석

신경망 훈련은 일반적으로 역전파에서 기울기를 계산하는 데 필요하기 때문에 순방향 전달 중에 모든 계층의 활성화를 저장합니다. 심층 모델의 경우 이러한 활성화가 메모리를 지배합니다. 대신 그라디언트 체크포인트는 희소한 '체크포인트' 레이어 세트에만 활성화를 저장하고 나머지는 삭제합니다. 역전파가 활성화가 삭제된 영역에 도달하면 해당 세그먼트에 대해서만 순방향 계산을 다시 실행하여 필요한 것을 재생성한 다음 진행합니다. 대략 N 제곱근 레이어마다 체크포인트가 배치되면 활성화를 위한 메모리가 N 차에서 N 제곱근 차수로 떨어지는 반면 컴퓨팅은 약 한 번의 추가 정방향 패스(대략 20-30% 느림)만큼만 증가합니다. 이를 통해 동일한 GPU에 더 큰 배치 크기나 더 깊은 변환기를 장착할 수 있습니다.

기술적 통찰력

이 기술은 시간 대 메모리 균형을 활용합니다. 모든 활성화를 저장하는 것은 빠르지만 메모리가 부족합니다. 이를 다시 계산하는 것은 메모리 부족으로 인한 비용에 비해 최신 가속기에서 저렴합니다. PyTorch(torch.utils.checkpoint)와 같은 프레임워크는 모듈을 래핑하여 순방향 출력은 저장되지만 내부는 역방향 중에 다시 계산됩니다. 체크포인트 배치 선택이 중요합니다. 대략 sqrt(N) 세그먼트의 균등한 간격은 전체 메모리를 최소화하는 동시에 전체 컴퓨팅의 단일 추가 정방향 패스만 추가합니다.

전략적 영향

비용 및 예산

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

더 명확한 결정들

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

품질 관리

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

그라데이션 체크포인트의 미래

이제 그라디언트 체크포인트는 대규모 모델 교육의 표준이며 라이브러리가 최적의 체크포인트 위치를 선택함으로써 점점 더 자동화되고 있습니다. FSDP, 혼합 정밀도 및 오프로딩과 자연스럽게 결합되어 모델 크기를 더 높일 수 있습니다. 비용이 많이 드는 작업(예: 주의 매트릭스)을 캐시된 상태로 유지하면서 저렴한 작업만 다시 계산하는 '선택적' 체크포인트와 최고의 속도 메모리 균형을 위해 저장할 항목과 다시 계산할 항목을 자동으로 결정하는 PyTorch의 torch.compile과 같은 도구의 컴파일러 기반 접근 방식을 기대하세요.

실제 구현

레이어 활성화를 삭제하고 다시 계산하여 단일 GPU에서 더 큰 배치 크기로 심층 변환기를 훈련합니다.

활성화 맵이 GPU 메모리를 오버플로할 수 있는 고해상도 이미지에서 비전 모델을 미세 조정합니다.

미세 조정 중에 10억 개의 매개변수 모델을 맞추기 위해 Gradient_checkpointing=True를 활성화하는 Hugging Face Transformers입니다.

체크포인트와 FSDP를 결합하면 매개변수와 활성화가 모두 작게 유지되므로 매우 큰 언어 모델을 훈련할 수 있습니다.

위험 및 가드레일

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

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

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

구현 로드맵

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 Checkpointing 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 Checkpointing?

그라데이션 체크포인트(활성화 체크포인트라고도 함)는 순방향 전달 중에 대부분의 중간 활성화를 버리고 역전파 중에 즉시 다시 계산하는 메모리 절약 트릭입니다. 훨씬 적은 메모리 사용을 위해 추가 컴퓨팅을 교환함으로써 더 깊고 더 큰 네트워크를 훈련할 수 있습니다.

메모리를 절약하기 위해 그라디언트 체크포인트는 주로 무엇을 거래합니까?

그라데이션 체크포인트는 역방향 전달 중에 폐기된 활성화를 다시 계산하여 메모리를 대폭 줄이는 대신 추가 계산을 수행합니다.

정방향 전달 중에 활성화가 일반적으로 저장되는 이유는 무엇입니까?

Backprop은 순방향 전달의 중간 활성화를 사용하여 기울기를 계산하므로 다시 계산하지 않는 한 사용할 수 있어야 합니다.

N 계층 네트워크의 모든 sqrt(N) 계층마다 체크포인트가 배치되는 경우 활성화 메모리는 대략 어떻게 확장됩니까?

모든 N 제곱근 레이어에 대한 간격 체크포인트는 저장된 활성화 메모리를 N차에서 sqrt(N)차로 줄입니다.

일반적으로 잘 배치된 그래디언트 체크포인트가 추가하는 추가 컴퓨팅 양은 대략 얼마나 됩니까?

체크포인트를 잘 배치하면 오버헤드는 대략 단일 추가 정방향 패스가 되며, 종종 약 20-30% 속도가 느려집니다.

PyTorch에서 모듈에 그래디언트 체크포인트를 적용하는 데 일반적으로 사용되는 유틸리티는 무엇입니까?

torch.utils.checkpoint는 모듈을 래핑하여 내부 활성화가 저장되는 대신 역방향 중에 다시 계산되도록 합니다.