트레이너에서 켜기 — Gradient Checkpointing과 메모리
트레이너에서 켜기 — Gradient Checkpointing과 메모리
Hugging Face Transformers의 Trainer 기반 훈련에서 gradient checkpointing은 한 줄 설정으로 켤 수 있어요. 효율적인 단일 GPU 훈련 가이드에서 메모리 절약 기법의 하나로 다뤄져요.
모델 메모리 해부
모델을 훈련할 때 메모리는 파라미터·그래디언트·옵티마이저 상태·순전파 활성화 로 나뉘어요. 특히 활성화는 시퀀스 길이·은닉 크기·배치 크기에 따라 커져, 큰 모델에서는 치명적이 되죠.
왜 체크포인팅인가
모든 활성화를 저장하는 대신 '전략적으로 선택한' 활성화만 남기고, 그래디언트를 위해 나머지를 다시 계산하는 방식이 gradient checkpointing이에요. 메모리를 확 줄이는 대신 대략 20% 정도 훈련이 느려진다는 게 일반적인 경험칙이에요.
켜는 방법
training_args = TrainingArguments(
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
gradient_checkpointing=True,
)
Trainer에 플래그를 넘기면 나머지는 내부에서 처리돼요. Accelerate를 쓴다면 모델의 gradient_checkpointing_enable() 을 호출해도 돼요.