VRAM(Video RAM) = 그래픽 처리 장치(GPU)에 내장된 고속 메모리. GPU와 실시간으로(아주아주 빠르게) 데이터를 주고받을 수 있다. 모델의 파라미터, 배치, 연산의 중간 결과 등을 저장하는 역할을 함.
딥러닝 모델을 학습시키거나 파인튜닝할 때,
큰 모델, 대용량 데이터를 넣으려면 VRAM이 많이 필요. (VRAM 용량이 부족하면 데이터, 모델을 못넣음)
VRAM이 부족한데 모델은 꼭 돌려보고 싶다면?
1) 배치를 줄이거나, 작은 모델을 쓴다. 대신 작업 속도가 느려지고, 품질이 낮아짐.
- 배치를 줄이고, 작은 배치를 여러 번 처리한 후 가중치를 업데이트(Gradient Accumulation) -> 이번 대회에서 가장 많이 쓰고 있는 방법!
일반적인 학습: 배치마다 손실함수의 그래디언트를 계산하고 모델의 가중치를 업데이트
Gradient Accumulation: 여러 번의 미니 배치 결과를 모아놓고 한번에 가중치를 업데이트. 큰 배치 크기와 비슷한 효과..
Effective Batch Size= Mini-Batch Size × Gradient Accumulation Steps
전체 배치 크기 = 미니배치 x 그래디언트 스탭
8 x 4 = 32 (32배치 효과를 내는 것)
참고로 배치 크기가 클수록 그래디언트 계산이 더 안정적이고, 일반적으로 학습이 더 효율적.
2) 기존 모델의 파라미터 숫자를 줄여서 파인튜닝
- 모델 구조 변경(경량화된 모델을 쓰거나 특정 층을 제거, 뉴런 수 줄이기)
- 모델 압축 : 프루닝, 양자화
- 파라미터 공유
- LoRA(Low-Rank Adaptation): 파인튜닝 과정에서 모델의 일부 파라미터만을 학습하여 계산 자원과 메모리 사용을 대폭 줄일 수 있다.
3) Mixed Precision Training:
16비트 부동소수점(FP16)을 사용해 메모리 사용량을 줄이고 학습 속도를 높이는 방법.
NVIDIA GPU에서 PyTorch의 torch.cuda.amp 또는 TensorFlow의 mixed_precision API로 쉽게 구현 가능
4) Layer Freezing
사전 학습된 모델의 일부 층을 고정(freeze)하고, 필요한 층만 학습.
학습해야 할 파라미터 수를 줄여 VRAM을 절약.
5) VRAM 용량이 많은 GPU를 임시로 대여(ex. Colab Pro)
6) Distributed Data Parallelism (DDP)
데이터를 여러 GPU에 분산하여 학습하는 방식. 각 GPU가 모델의 복사본을 가지고 데이터의 일부분을 병렬로 처리. Data Parallelism: 전체 데이터를 GPU 개수만큼 나누고, 각 GPU에서 병렬 처리. 각 GPU는 자신의 데이터 배치(batch)를 학습하고, 결과를 동기화하여 모델 가중치를 업데이트. /
DDP는 데이터를 나누는 방식이지 모델 자체를 나누는 방식이 아니므로, 모델 크기가 각 GPU의 VRAM 한도를 넘으면 여전히 학습이 불가능.
7) Zero Redundancy Optimizer (ZeRO)
모델의 옵티마이저와 가중치를 GPU 메모리 전체에 분산하여 VRAM 사용량을 최적화
'공부방 > Upstage AI Lab 4기' 카테고리의 다른 글
패스트캠퍼스 Upstage AI Lab 부트캠프 4기, 과정 중간 회고 (2) | 2024.11.29 |
---|---|
[NLP] 경진대회 발표 및 정리 (1) | 2024.11.29 |
[NLP] EXAONE 모델 가져다가 추론만 시키기 (2) | 2024.11.27 |
[NLP] 모델 한번 바꿀 때마다 난관... (1) | 2024.11.27 |
GPU 상세 스펙 알아두고, 메모리 램 관리하기 (0) | 2024.11.26 |