Continuous Batching
연속 배치 처리(continuous batching)가 GPU 처리량을 최적화하고 지연 시간을 줄이는 방법을 배우십시오. 프로덕션 ML 작업에서 효율성을 극대화하기 위해 Ultralytics YOLO26를 사용하는 방법을 발견하십시오.
Continuous batching은 하드웨어 활용도와 처리량을 극대화하기 위해 머신 러닝(ML)에서 사용하는 고급 스케줄링 및 추론 최적화 기법입니다. 기존의 정적 배치 처리에서 추론 엔진은 사전에 설정된 수의 요청이 누적될 때까지 기다린 후 한꺼번에 처리합니다. 이는 시스템이 배치 내에서 가장 오래 걸리는 요청이 완료될 때까지 리소스 해제를 기다려야 하므로 비효율성을 초래하는 경우가 많습니다. 동적 또는 반복 수준 배치(iteration-level batching)라고도 알려진 continuous batching은 활성 요청이 완료되는 즉시 새로운 요청을 계산 배치에 삽입하여 이러한 문제를 해결하며, GPU의 유휴 시간을 크게 줄이고 전반적인 효율성을 향상시킵니다.
Link to this section관련 개념 구분#
모델 배포 중 데이터가 처리되는 방식을 더 잘 이해하기 위해서는 용어집에 있는 다른 관련 용어와 continuous batching을 구분하는 것이 도움이 됩니다.
- 배치 크기(Batch Size): 이는 학습 또는 추론 중에 동시에 처리되는 고정된 샘플 수를 의미합니다. 기존의 배치 처리 워크플로우는 정적 크기에 의존하지만, continuous batching은 들어오는 트래픽에 따라 유효 배치 크기가 동적으로 변동될 수 있도록 합니다.
- 실시간 추론(Real-Time Inference): 이 개념은 단일 입력이 도착하는 즉시 처리하여 즉각적인 예측을 제공하기 위해 추론 지연 시간(inference latency)을 최소화하는 데 중점을 둡니다. Continuous batching은 빠른 요청이 느린 요청을 기다리지 않게 함으로써 높은 처리량을 유지하여, 고처리량 정적 배치 처리와 저지연 실시간 추론 사이의 간극을 메워줍니다.
Link to this section실제 애플리케이션 사례#
Continuous batching은 예측 불가능한 대량의 요청을 처리하는 프로덕션 시스템에서 매우 중요합니다. 다음은 그 적용 사례 두 가지입니다.
-
고처리량 텍스트 생성: 거대 언어 모델(LLM)을 서비스할 때 사용자마다 응답 생성에 걸리는 시간은 출력 길이에 따라 달라집니다. Ray Serve 상의 vLLM과 같이 continuous batching을 활용하는 프레임워크는 새로 생성된 토큰을 지속적으로 스트리밍하고 완료된 대화를 새로운 프롬프트로 즉시 교체할 수 있습니다. 원래 반복 수준 스케줄링에 관한 연구를 통해 대중화된 이 방식은 텍스트 생성 처리량을 획기적으로 향상시킵니다.
-
비동기 영상 분석: 도시 교통 카메라 네트워크 전반에서 차량을 추적하는 것과 같은 비디오 이해(video understanding) 작업에서는 프레임이 서로 다른 간격으로 도착합니다. Continuous batching을 사용하면 객체 추적(object tracking) 모델이 리소스가 확보되는 즉시(밀리초 단위) 들어오는 비디오 프레임을 동적으로 처리할 수 있어, 스마트 시티 대시보드를 위한 하드웨어 가속 파이프라인을 최적화할 수 있습니다.
Link to this section비전 작업에서의 지속적 처리#
트래픽이 많은 모델 배포 관행을 관리할 때, 추론을 반복적으로 스트리밍하면 메모리가 차단되지 않고 점진적으로 해제되도록 하여 동적 배치의 이점을 시뮬레이션할 수 있습니다. 다음 Python 예제는 모델 예측 API와 함께 제너레이터 패턴을 사용하여 이미지의 연속 스트림을 효율적으로 처리하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load the latest Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Using stream=True acts as a generator, iteratively processing inputs
# to keep memory usage low and throughput high
results = model.predict(source=["img1.jpg", "img2.jpg", "img3.jpg"], stream=True)
# Process each result as soon as it completes
for result in results:
print(f"Detected {len(result.boxes)} objects in this frame.")시스템 수준의 리소스 스케줄링을 관리하려면 원시 속도와 운영 비용 간의 균형이 필요합니다. 대규모 컴퓨터 비전(CV) 모델과 언어 모델을 배포하는 팀들은 이러한 동적 배치를 관리하기 위해 고급 서빙 프레임워크에 점점 더 많이 의존하고 있습니다. 인프라를 간소화하려는 엔터프라이즈 팀을 위해 Ultralytics Platform은 모델을 학습, 모니터링하고 고도로 최적화된 프로덕션 환경으로 내보내기 위한 강력한 도구를 제공합니다.






