Batch Size
배치 크기가 머신 러닝 학습 속도와 정확도에 미치는 영향을 알아보세요. 하드웨어 제약을 살펴보고 AutoBatch를 사용해 Ultralytics YOLO26을 최적화하세요.
머신 러닝, 특히 딥러닝 분야에서 배치 크기는 한 번의 모델 학습 iteration에서 사용되는 학습 예제의 수를 의미합니다. 전체 학습 데이터를 한 번에 신경망에 입력하는 것은 메모리 제약으로 인해 계산상 불가능한 경우가 많으므로, 데이터셋을 배치라고 하는 더 작은 하위 집합으로 나눕니다. 모델은 한 배치를 처리하고 오류를 계산한 다음, 다음 배치로 넘어가기 전에 역전파를 통해 내부 모델 가중치를 업데이트합니다. 이 하이퍼파라미터는 학습 속도와 학습 과정의 안정성을 모두 결정하는 데 중요한 역할을 합니다.
배치를 사용한 학습의 동작 원리#
배치 크기의 선택은 일반적으로 확률적 경사 하강법의 변형인 최적화 알고리즘이 손실 지형을 탐색하는 방식에 근본적인 변화를 줍니다.
- 작은 배치 크기: 작은 수(예: 8 또는 16)를 사용하면 업데이트가 "노이즈가 많은" 형태가 됩니다. 데이터셋 전체에 대한 그래디언트 추정의 정확도는 낮아지지만, 이러한 노이즈가 모델이 로컬 최솟값에서 벗어나는 데 도움이 되어 일반화 성능이 향상될 수 있습니다. 그러나 작은 배치는 epoch당 더 많은 업데이트를 필요로 하므로 오버헤드로 인해 실제 경과 시간 기준 학습 속도가 느려질 수 있습니다.
- 큰 배치 크기: 큰 배치(예: 128 또는 256)는 그래디언트를 더 정확하게 추정하므로 손실 함수가 더 매끄럽게 수렴합니다. 최신 하드웨어에서 대규모 병렬 처리를 가능하게 하여 계산 속도를 크게 높입니다. 그러나 배치가 지나치게 크면 모델이 뾰족하고 최적이 아닌 최솟값에 안착하여 과적합이 발생하고 새로운 데이터에 대한 일반화 능력이 저하될 수 있습니다.
하드웨어 및 메모리 관련 사항#
실무자는 순수한 이론적 선호보다 하드웨어의 한계에 따라 배치 크기를 선택해야 하는 경우가 많습니다. 딥러닝 모델, 특히 트랜스포머나 고급 합성곱 네트워크와 같은 대규모 아키텍처는 GPU의 VRAM에 저장됩니다.
가속을 위해 NVIDIA CUDA를 사용할 때 VRAM에는 모델 파라미터, 입력 데이터 배치, 그래디언트 계산에 필요한 중간 활성화 출력이 저장되어야 합니다. 배치 크기가 사용 가능한 메모리를 초과하면 학습이 "메모리 부족"(OOM) 오류와 함께 중단됩니다. 혼합 정밀도 학습과 같은 기법을 사용하면 메모리 사용량을 줄여 동일한 하드웨어에서 더 큰 배치 크기를 사용할 수 있습니다.
관련 개념 구분하기#
학습을 효과적으로 구성하려면 학습 루프에서 사용되는 다른 시간 관련 용어와 배치 크기를 구분하는 것이 중요합니다.
- 배치 크기와 Epoch: Epoch는 전체 학습 데이터셋을 한 번 완전히 순회하는 것을 의미합니다. 배치 크기는 해당 epoch 내에서 데이터를 몇 개의 청크로 나눌지를 결정합니다. 예를 들어 이미지가 1,000개이고 배치 크기가 100이면 하나의 epoch를 완료하는 데 10번의 iteration이 필요합니다.
- 배치 크기와 Iteration: Iteration(또는 step)은 하나의 배치를 처리하고 가중치를 업데이트하는 작업입니다. 학습에서 전체 iteration 수는 epoch당 배치 수에 전체 epoch 수를 곱한 값입니다.
- 배치 크기와 Batch Normalization: 이름은 같지만 Batch Normalization은 현재 배치의 평균과 분산을 기반으로 레이어 입력을 정규화하는 특정 레이어 유형입니다. 이 기법은 배치 크기에 크게 의존하므로 배치 크기가 너무 작으면(예: 2) 통계적 추정이 신뢰할 수 없게 되어 성능이 저하될 수 있습니다.
실제 적용 사례#
다양한 산업 분야에 컴퓨터 비전 솔루션을 배포할 때 배치 크기를 조정하는 것은 일상적으로 필요한 작업입니다.
-
고정밀 의료 영상: 헬스케어 분야의 AI에서는 MRI 또는 CT 스캔과 같은 3D 볼륨 데이터를 다루는 경우가 많습니다. 이러한 파일은 매우 크고 메모리 집약적입니다. 시스템 중단 없이 의료 영상 분석이나 복잡한 이미지 세그멘테이션과 같은 작업을 수행하기 위해 엔지니어는 배치 크기를 매우 작은 값으로 줄이며, 경우에 따라 배치 크기를 1로 설정하기도 합니다. 이 경우 우선순위는 학습 속도 자체보다 고해상도 세부 정보를 처리하는 데 있습니다.
-
산업 품질 관리: 반대로 제조 분야의 AI에서는 속도가 가장 중요합니다. 컨베이어 벨트에서 제품을 검사하는 자동화 시스템은 시간당 수천 개의 이미지를 처리해야 합니다. 추론 중에 엔지니어는 들어오는 카메라 피드를 더 큰 배치로 집계하여 엣지 AI 디바이스의 활용도를 극대화하고, 실시간 결함 감지를 위한 높은 처리량을 확보할 수 있습니다.
Python에서 배치 크기 구성하기#
Ultralytics Python 패키지를 사용할 때 배치 크기 설정은 간단합니다. 고정된 정수를 지정하거나 동적 batch=-1 설정을 사용할 수 있으며, 이 설정은 AutoBatch 기능을 활용하여 하드웨어가 안전하게 처리할 수 있는 최대 배치 크기를 자동으로 계산합니다.
다음 예제에서는 특정 배치 설정을 사용하여 속도와 정확도를 위한 최신 기준인 YOLO26 모델을 학습하는 방법을 보여 줍니다.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)대규모 실험을 관리하고 다양한 배치 크기가 학습 메트릭에 미치는 영향을 시각화하려면 Ultralytics Platform과 같은 도구가 실행 결과를 기록하고 비교할 수 있는 종합적인 환경을 제공합니다. 배치 크기에 대한 적절한 하이퍼파라미터 튜닝은 모델에서 최상의 성능을 끌어내기 위한 마지막 단계인 경우가 많습니다.









