여러 모델을 학습시키는데에는 batch_size 옵션을 지정해 주어야 한다. 나의 경우 Transformer 를 학습시킬때 사용되는 Seq2SeqTrainingArguments 의 batch_size 옵션을 지정하기 위해 batch_size 의 계념에 관해 살펴보았다.
Seq2SeqTrainingArguments 에서 batch_size 옵션은
- per_device_train_batch_size (int, optional, defaults to 8) : The batch size per GPU/XPU/TPU/MPS/NPU core/CPU for training.
로서, 이는 '모델이 한번에 학습하는 데이터 샘플수' 이다.
이러한 batch_size 를 지정하는데는 아래와 같은 장, 단점이 존재한다.
- 큰 batch_size 의 장점(거꾸로 작은 batch_size 의 단점)
- 일반적으로 학습 속도가 더 빨라진다(HW의 병렬 처리 능력을 최대한 활용 가능)
- 한 번의 업데이트에 더 많은 샘플 데이터를 반영하기에, 경사 하강법의 변동성을 줄여 보다 안정적인 학습과 수렴이 가능하다. (발산 가능성 낮아짐)
- 큰 batch_size 의 단점(거꾸로 작은 batch_size 의 장점)
- 일반화 성능을 저하시킬 수 있다. 이는 큰 배치가 소규모 배치에 비해 경사 하강법의 탐색 과정에서 덜 다양한 경로를 탐색하게 만들기 때문이다.
- 여러 샘플들을 통해 평균치를 내므로 local minimum 을 탈출할 수 있는 예제가 주어짐에도 탈출하지 못 할 가능성이 작은 batch_size 보다 높다.
- 학습 시 더 많은 메모리를 소모한다.
결론적으로 적절한 batch_size 를 찾는것은 노가다와, 경험적인 영역이다. 모든 경우에 최적값으로 사용할 수 있는 batch_size 는 존재하지 않다(사용하는 데이터, 모델, learning_rate 의 값에 따라, 변동될 수 있기에 매우 복잡하다.)
'Artificial Intelligence > Basic' 카테고리의 다른 글
행렬 기초 (0) | 2024.04.17 |
---|---|
모델 훈련시 Epoch 와 Steps 의 차이 (0) | 2024.03.05 |
인공지능에서 Parameter 란? (0) | 2024.01.27 |
GAN의 최적 손실값 (1) | 2023.06.19 |
CGAN(Conditional GAN) (0) | 2023.06.18 |