LLM 학습 VRAM 계산기
입력
| 파라미터 수 | 7 |
|---|---|
| 파라미터당 메모리 | 혼합 정밀도 Adam (16바이트/파라미터) |
| 활성화 메모리 | 0 |
LLM 학습 VRAM 계산기
대규모 언어 모델을 전체 파인튜닝할 때 필요한 GPU VRAM을, 파라미터 수와 옵티마이저 선택, 활성화 메모리로부터 추정합니다. 혼합 정밀도 Adam 기준 파라미터당 16바이트 규칙을 사용합니다.
입력
모델
활성화
결과
값을 입력하면 계산 결과가 표시됩니다.
세부 정보
LLM 학습 VRAM
대규모 언어 모델을 전체 파인튜닝하는 데 필요한 GPU 메모리는 모델을 단순히 실행할 때보다 훨씬 큽니다. 그 이유는 옵티마이저에 있습니다. 추론은 가중치만 들고 있으면 되지만, 학습은 모든 파라미터마다 기울기를 유지하고 옵티마이저의 실행 상태까지 보관한 뒤, 순전파 중에 저장된 활성화를 더해야 합니다. 이 계산기는 파라미터 수, 파라미터당 옵티마이저 메모리 비용, 그리고 따로 입력하는 활성화 값으로부터 전체 파인튜닝에 필요한 전체 VRAM을 추정합니다.
모델 상태가 가장 크다
학습에서 가장 큰 고정 비용은 모델 상태, 즉 가중치와 그 기울기, 옵티마이저 상태입니다. 파라미터 수를 10억 단위로 , 파라미터당 바이트를 라 하면 모델 상태는 다음만큼 차지합니다.
M=N⋅B GBAdam을 쓰는 혼합 정밀도 학습의 표준 값은 파라미터당 16바이트이며, 내역은 다음과 같습니다. 순전파에 쓰는 16비트 가중치 2바이트, 그 16비트 기울기 2바이트, 수치 안정성을 위해 유지하는 32비트 마스터 가중치 사본 4바이트, 그리고 Adam의 두 모멘트 추정값(모멘텀과 분산) 각 4바이트씩입니다. 즉 모든 파라미터마다 입니다. 더 저렴한 옵티마이저는 옵티마이저 상태 항을 줄입니다. 8비트 Adam은 모멘트를 낮은 정밀도로 저장해 파라미터당 약 12바이트, 모멘텀을 쓰는 일반 SGD는 약 8바이트가 필요합니다.
활성화는 따로 입력한다
모델 상태는 모델과 옵티마이저가 정해지면 고정되지만 활성화는 그렇지 않습니다. 활성화는 역전파가 기울기를 계산할 수 있도록 순전파 중에 캐시해 두는 중간값으로, 그 크기는 파라미터 수가 아니라 배치 크기와 시퀀스 길이에 따라 커집니다. 이런 독립성 때문에 이 계산기는 활성화 메모리를 별도 입력으로 받아 단순히 더합니다.
V=M+A여기서 는 활성화 메모리(GB)입니다. 활성화 메모리는 학습 한 스텝을 실행해 피크 사용량을 읽어 측정하거나, 활성화를 보관하는 대신 역전파에서 다시 계산하는 활성화 체크포인팅으로 크게 줄일 수 있습니다.
계산 예시
혼합 정밀도 Adam으로 파인튜닝하는 70억 파라미터 모델을 두고, 우선 활성화 추정치 없이 시작해 봅니다.
MV=7×16=112 GB=112+0=112 GB모델 상태만으로도 112 GB로, 이미 단일 80 GB 가속기를 넘어섭니다. 현실적인 활성화 20 GB를 더하면 합계는 132 GB가 되어, 핵심이 분명해집니다. 16비트 추론으로는 손쉽게 서빙되는 7B 모델조차 주류 GPU 한 장으로는 전체 파인튜닝이 불가능합니다. 모델을 단순히 실행하는 데 필요한 훨씬 작은 메모리는 LLM 추론 VRAM 계산기에서 다룹니다.
LoRA가 그림을 바꾸는 이유
파라미터당 16바이트의 대부분은 기울기와 옵티마이저 상태이며, 이들은 실제로 학습되는 파라미터에만 존재합니다. LoRA는 기반 가중치를 동결하고 작은 저랭크 어댑터를 학습하므로, 기울기와 옵티마이저 상태가 전체 파라미터의 1% 미만에만 적용됩니다. 동결된 가중치는 여전히 메모리를 차지하지만, 가장 큰 항을 걷어낸 덕분에 전체 파인튜닝에 132 GB가 필요한 모델을 단일 24 GB 카드에 올릴 수 있습니다. 이 어댑터의 크기와 랭크가 그것을 어떻게 조절하는지는 LoRA 파라미터 계산기에서 다룹니다. 임시 버퍼와 프레임워크 할당이 실제 수치를 움직이므로, 여기서 나온 값은 계획용 추정치로 보고 실제 학습 스텝으로 확인하시기 바랍니다.
자주 묻는 질문 (FAQ)
파라미터당 16바이트는 어디서 나온 값인가요?
Adam 옵티마이저를 쓰는 혼합 정밀도 학습은 각 파라미터의 사본을 여러 개 유지합니다. 순전파에 쓰는 16비트 가중치가 2바이트, 그 16비트 기울기가 2바이트입니다. 여기에 Adam은 가중치의 32비트 마스터 사본(4바이트)과 두 개의 32비트 모멘트 추정값, 즉 모멘텀과 분산을 각각 4바이트씩 유지합니다.
이를 모두 더하면 파라미터당 2 + 2 + 4 + 4 + 4 = 16바이트가 되며, 이것이 전체 파인튜닝에서 모델 상태를 추정하는 표준 값입니다.
LoRA는 왜 메모리가 훨씬 적게 드나요?
전체 파인튜닝은 모든 파라미터에 대해 기울기와 옵티마이저 상태를 함께 유지하는데, 이것이 파라미터당 16바이트의 대부분을 차지합니다. LoRA는 원래 가중치를 동결하고 작은 저랭크 어댑터 행렬만 학습하므로, 기울기와 옵티마이저 상태가 전체 파라미터의 아주 일부(흔히 1% 미만)에만 존재합니다.
동결된 기반 가중치는 여전히 메모리를 차지하지만 기울기나 옵티마이저 상태가 필요 없으므로, 가장 큰 항이 사라져 대규모 모델도 GPU 한 장으로 파인튜닝할 수 있습니다. 이 어댑터의 크기는 LoRA 파라미터 계산기에서 다룹니다.
활성화 메모리는 어떻게 추정하나요?
활성화 메모리는 역전파에서 기울기를 계산할 수 있도록 순전파 중에 보관해 두는 중간값의 저장 공간입니다. 모델 상태와 달리 파라미터 수가 아니라 배치 크기와 시퀀스 길이에 따라 커지므로 여기서는 따로 입력합니다.
학습 한 스텝을 실제로 실행해 피크 메모리를 읽으면 직접 측정할 수 있고, 활성화를 저장하지 않고 역전파에서 다시 계산하는 활성화 체크포인팅으로 크게 줄일 수도 있습니다. 대략적인 계획을 세울 때는 0에서 시작해 모델 상태의 하한선을 본 뒤, 측정한 값을 더하는 방식이 좋습니다.
면책조항
이 값은 전체 파인튜닝 메모리에 대한 1차 추정치입니다. 임시 버퍼와 통신 오버헤드, 프레임워크별 할당은 제외하며, 활성화는 입력된 단일 값으로 처리합니다. 하드웨어 규모를 정하기 전에 실제 학습 스텝으로 확인하시기 바랍니다.