지원 장치에서는 bf16부터 검토해
bf16=True를 켜면 순전파와 역전파의 activation·gradient는 bf16으로 계산하고 optimizer용 기준 가중치는 fp32로 유지해. Ampere 이후 하드웨어에서는 품질 손실을 거의 늘리지 않으면서 속도와 메모리를 개선할 수 있어.
gradient accumulation은 메모리를 시간으로 바꿔
GPU에 예제 4개만 들어가지만 유효 batch 64가 필요하면 장치별 batch를 4, 누적 단계를 16으로 설정해. 16개 microbatch의 gradient를 모은 뒤 한 번 갱신하므로 결과적인 batch는 같지만 step마다 계산 시간이 늘어.
gradient_checkpointing=True는 activation을 다시 계산해 메모리를 줄이고 속도를 희생해.optim='adamw_8bit'는 optimizer 상태를 8비트로 저장해.torch.compile(model)은 모양이 안정적일 때 빨라질 수 있지만 동적 모양에서는 오히려 손해일 수 있어.