마이크로 배치 크기, 누적 단계 수, 데이터 병렬 복제본 수, 샘플당 활성값 비용으로부터 그래디언트 누적으로 도달하는 유효 배치 크기와 그에 필요한 활성값 메모리를 계산합니다.
입력
배치 구성
GPU 한 장에서 한 번의 순전파와 역전파로 처리하는 샘플 수입니다. 누적되는 마이크로 배치 수와 무관하게, 최대 활성값 메모리를 결정하는 값입니다.
옵티마이저가 가중치를 갱신하기 전에 그래디언트를 합산하며 실행하는 마이크로 배치의 수입니다. 이 값을 높이면 활성값 메모리를 늘리지 않고도 유효 배치를 키웁니다.
각자 자신의 마이크로 배치를 처리하는 데이터 병렬 복제본의 수입니다. 그래디언트가 매 단계 평균되므로, 각 복제본이 유효 배치를 곱하는 효과를 냅니다.
메모리
순전파와 역전파 동안 샘플 하나에 대한 활성값 메모리(GB)로, 시퀀스 길이, 은닉 크기, 깊이, 그리고 활성값 체크포인팅 적용 여부에 따라 결정됩니다.
결과
값을 입력하면 계산 결과가 표시됩니다.
한 번의 옵티마이저 단계에 그래디언트가 기여하는 총 샘플 수로, 마이크로 배치에 누적 단계 수와 데이터 병렬 GPU 수를 곱한 값입니다.
세부 정보
GPU 한 장의 최대 활성값 메모리로, 4 샘플에 각 0.5 GB를 곱한 값입니다. 마이크로 배치에만 의존하므로 누적은 이를 늘리지 않습니다.
그래디언트 누적 메모리
대규모 언어 모델은 큰 배치로 학습할 때 가장 잘 동작하지만, 큰 배치란 많은 샘플을 한꺼번에 메모리에 올린다는 뜻이며 — 활성값 메모리는 GPU를 가장 먼저 넘치게 하는 요소인 경우가 많습니다. 그래디언트 누적은 이 긴장을 해소합니다. 최대 활성값 메모리는 작은 마이크로 배치 하나의 크기에 머무르면서도 큰 유효 배치에 도달하게 해 줍니다. 이 계산기는 그 트레이드오프의 양쪽 면을 보여 줍니다 — 어떤 구성이 도달하는 유효 배치, 그리고 실제로 보유하는 활성값 메모리입니다.
그래디언트 누적이 하는 일
보통 트레이너는 매 배치 후에 가중치를 갱신합니다. 누적에서는 여러 마이크로 배치를 순차적으로 실행하고 그래디언트를 합산한 뒤, 목표한 마이크로 배치 수가 처리된 후에야 한 번의 옵티마이저 단계를 적용합니다. 합산된 그래디언트는 그 합쳐진 크기의 단일 배치가 만들어 냈을 값과 같으므로 갱신은 수학적으로 동일하며 — 타이밍만 달라집니다. 가중치는 마이크로 배치마다가 아니라 누적 주기마다 한 번씩 움직입니다.
메모리가 일정하게 유지되는 이유
최대 활성값 메모리는 한 순간에 살아 있는 가장 큰 순전파와 역전파에 의해 좌우되며, 그것은 마이크로 배치 하나입니다. 누적은 한 번에 마이크로 배치 하나씩 처리하고 그래디언트의 누적 합만 유지하는데, 그 크기는 모델의 파라미터 수와 일치하고 단계 수에 따라 늘어나지 않습니다. 따라서 누적 수를 늘리면 활성값 메모리는 건드리지 않은 채 유효 배치가 커집니다. 바로 그것이 핵심입니다. 한꺼번에 다 담을 수 없는 메모리 예산 위에서 큰 유효 배치를 얻는 것입니다.
공식
마이크로 배치 크기를 , 누적 단계 수를 , 데이터 병렬 복제본 수를 , 샘플당 활성값 비용을 기가바이트라 하면 다음과 같습니다.
EM=b⋅a⋅g=b⋅A
여기서 는 유효 배치 크기, 은 GPU 한 장의 최대 활성값 메모리입니다. 유효 배치는 모든 복제본과 모든 누적 단계에 걸쳐 곱해지는 반면, 메모리 항은 마이크로 배치에만 의존합니다.
계산 예시
샘플 4개의 마이크로 배치를 GPU 한 장에서 8단계에 걸쳐 누적하고, 각 샘플이 0.5 GB의 활성값을 차지하는 경우를 예로 들어 봅니다.
EM=4×8×1=32=4×0.5=2GB
이 학습은 배치가 32인 것처럼 진행되지만, 메모리에 상주하는 활성값은 2 GB뿐입니다. 동일한 구성을 데이터 병렬 GPU 4장에 펼치면 유효 배치는 로 올라가고, GPU당 활성값 메모리는 여전히 2 GB입니다.
결과 읽기
유효 배치 크기는 마이크로 배치가 아니라 학습률 스케줄을 비롯한 여러 하이퍼파라미터가 기준으로 삼는 수치입니다. 다만 활성값 메모리는 학습 예산의 일부일 뿐입니다. 옵티마이저 상태, 그래디언트, 그리고 파라미터 자체가 보통 더 큰 비중을 차지하며, 이 계산기는 배치 구성의 트레이드오프를 드러내기 위해 활성값 항을 의도적으로 분리합니다. 전체 메모리 그림은 LLM 학습 VRAM 계산기를 참고하고, 저랭크 어댑터로 학습 가능한 파라미터 수를 줄이는 방법은 LoRA 파라미터 계산기를 참고하시기 바랍니다.
자주 묻는 질문 (FAQ)
그래디언트 누적은 어떻게 동작하나요?
매 마이크로 배치마다 가중치를 갱신하는 대신, 트레이너는 여러 마이크로 배치를 순차적으로 실행하고 그래디언트를 합산한 뒤, 목표한 마이크로 배치 수에 도달하면 단 한 번의 옵티마이저 단계를 적용합니다. 합산된 그래디언트는 동일한 총 크기의 단일 대형 배치가 만들어 내는 값과 같으므로 갱신의 수학은 변하지 않으며, 타이밍만 달라집니다. 가중치는 마이크로 배치마다가 아니라 누적 주기마다 한 번씩 움직입니다.
누적 단계 수가 늘어도 메모리가 일정하게 유지되는 이유는 무엇인가요?
최대 활성값 메모리는 한 시점에 메모리에 동시에 유지되는 가장 큰 순전파와 역전파에 의해 결정되며, 이는 마이크로 배치 하나입니다. 누적은 한 번에 마이크로 배치 하나씩 처리하고 그래디언트의 누적 합만 유지하는데, 그 크기는 모델의 파라미터 수와 같고 단계 수에 따라 늘어나지 않습니다. 따라서 누적 단계 수를 두 배로 하면 활성값 메모리는 그대로인 채 유효 배치가 두 배가 됩니다 — 제한된 메모리에서 큰 유효 배치를 가능하게 하는 핵심 트레이드오프입니다.
유효 배치 크기란 무슨 의미인가요?
유효 배치 크기는 단 한 번의 가중치 갱신에 영향을 미치는 샘플의 수입니다. 데이터 병렬화에서는 각 복제본이 자신의 마이크로 배치를 기여하고, 누적에서는 각 복제본이 여러 마이크로 배치를 차례로 기여하므로, 유효 배치는 마이크로 배치, 누적 단계 수, 복제본 수의 곱이 됩니다. 학습률 스케줄을 비롯한 여러 하이퍼파라미터는 마이크로 배치가 아니라 이 유효 수치를 기준으로 조정됩니다.
면책조항
이 추정은 활성값 메모리를 마이크로 배치만으로 모델링하며, 전체 학습 메모리를 좌우하는 옵티마이저 상태, 그래디언트, 파라미터, 프레임워크 오버헤드는 제외합니다. 완전한 메모리 예산이 아니라 배치 구성의 트레이드오프를 가늠하는 용도로 사용하시기 바랍니다.