<aside> 💡 LM의 크기(파라미터 수)가 커짐에 따라 로컬 GPU에서 학습을 돌리지 못하는 경우가 많음 따라서, 작은 GPU에서도 LLM을 Fine-tuning할 수 있는 방법이 필요함!
</aside>
최적의 성능을 달성하려면 적절한 배치 크기를 결정해야함.
2^N 크기의 배치 크기와 입력/출력 뉴런 수를 사용하는 것이 권장되며, 보통 8의 배수를 사용하지만, 사용하는 하드웨어와 모델의 dtype에 따라 더 높은 배수를 사용할 수 있음.
NVIDIA의 입력/출력 뉴런 수 및 배치 크기 권장사항
Tensor Core Requirements
Matrix Multiplication Background User's Guide
적용예시💻
from transformers import TrainingArguments
training_args = TrainingArguments(per_device_train_batch_size=8, **default_args)
gradient_accumulation_steps
설정은 모델 훈련시 배치에 대한 gradient를 즉시 업데이트하는 대신, 여러 step에 걸쳐 gradient를 누적한 후에 한번에 업데이트는 방식을 정의함.
장점👍
gradient_accumulation_steps
를 증가시킴으로써 더 큰 배치 크기의 효과를 낼 수 있음.주의사항‼️
gradient_accumulation_steps
를 변경하면 learning_rate
와 같은 다른 하이퍼파라미터의 재조정이 필요할 수 있음.적용예시💻
training_args = TrainingArguments(per_device_train_batch_size=8, gradient_accumulation_steps=4, **default_args)
gradeint_checkpointing_enable()
은 메모리 집약적인 대규모 모델의 훈련시 메모리 효율성을 크게 향상시키는 기법인 Gradient Checkpointing을 활성화함.