Continuous Batching
연속 배치(continuous batching)가 GPU 처리량을 최적화하고 지연 시간을 줄이는 방법을 배우십시오. 프로덕션 ML 작업에서 효율성을 극대화하기 위해 Ultralytics YOLO26을 사용하는 방법을 알아보십시오.
연속 배치 처리는 머신 러닝(ML)에서 하드웨어 활용도와 처리량을 극대화하기 위해 사용하는 고급 스케줄링 및 추론 최적화 기술입니다. 기존의 정적 배치 처리 방식에서 추론 엔진은 사전에 설정된 수의 요청이 쌓일 때까지 기다린 후 이를 동시에 처리합니다. 이는 시스템이 배치 내에서 가장 오래 걸리는 요청이 완료될 때까지 리소스를 반환하지 못하고 대기해야 하므로 비효율성을 초래하는 경우가 많습니다. 동적 또는 반복 수준 배치 처리라고도 하는 연속 배치 처리는 활성 요청이 완료되는 즉시 새로운 요청을 컴퓨팅 배치에 삽입하여 이러한 문제를 해결하며, GPU의 유휴 시간을 크게 줄이고 전반적인 효율성을 개선합니다.
Link to this section관련 개념 구분하기#
모델 배포 중 데이터가 처리되는 방식을 더 잘 이해하기 위해 용어집의 다른 관련 용어와 연속 배치 처리를 구분하는 것이 도움이 됩니다.
- 배치 크기(Batch Size): 학습이나 추론 중에 동시에 처리되는 고정된 샘플 수를 의미합니다. 기존의 배치 처리 워크플로우는 정적 크기에 의존하지만, 연속 배치 처리는 들어오는 트래픽에 따라 유효 배치 크기가 동적으로 변하도록 허용합니다.
- 실시간 추론(Real-Time Inference): 이 개념은 단일 입력이 도착하는 즉시 처리하여 즉각적인 예측을 제공하기 위해 추론 지연 시간(inference latency)을 최소화하는 데 중점을 둡니다. 연속 배치 처리는 빠른 요청이 느린 요청을 기다리지 않도록 하면서도 높은 처리량을 유지함으로써, 고처리량 정적 배치 처리와 저지연 실시간 추론 사이의 간극을 메워줍니다.
Link to this section실제 활용 사례#
연속 배치 처리는 예측 불가능한 대량의 요청을 처리하는 프로덕션 시스템에 필수적입니다. 다음은 이 기술이 적용된 두 가지 구체적인 예입니다.
-
고처리량 텍스트 생성: 거대 언어 모델(LLM)을 서비스할 때, 출력 길이에 따라 사용자별 응답 생성 시간은 다르게 나타납니다. Ray Serve의 vLLM과 같이 연속 배치 처리를 활용하는 프레임워크는 새로 생성된 토큰을 지속적으로 스트리밍하고 완료된 대화를 새로운 프롬프트로 즉시 교체할 수 있습니다. 반복 수준 스케줄링에 관한 연구를 통해 대중화된 이 방법은 텍스트 생성 처리량을 획기적으로 향상시킵니다.
-
비동기 영상 분석: 도시 교통 카메라 네트워크에서 차량을 추적하는 것과 같은 영상 이해(video understanding) 작업에서는 프레임이 서로 다른 간격으로 도착합니다. 연속 배치 처리를 사용하면 객체 추적(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은 모델을 학습, 모니터링하고 고도로 최적화된 프로덕션 환경으로 내보낼 수 있는 강력한 도구를 제공합니다.






