Continuous Batching
Impara come il continuous batching ottimizza il throughput della GPU e riduce la latenza. Scopri come usare Ultralytics YOLO26 per massimizzare l'efficienza nelle attività di ML in produzione.
Il continuous batching è una tecnica avanzata di pianificazione e ottimizzazione dell'inferenza utilizzata nel machine learning (ML) per massimizzare l'utilizzo dell'hardware e il throughput. Nel batching statico tradizionale, un engine di inferenza attende che si accumuli un numero predeterminato di richieste prima di elaborarli simultaneamente. Questo spesso porta a inefficienze perché il sistema deve attendere che la richiesta con l'esecuzione più lunga nel batch finisca prima di rilasciare le risorse. Il continuous batching, noto anche come batching dinamico o a livello di iterazione, risolve questo problema iniettando nuove richieste nel batch di calcolo non appena una richiesta attiva viene completata, riducendo significativamente il tempo di inattività sulle GPU e migliorando l'efficienza complessiva.
Distinguere concetti correlati#
Per comprendere meglio come i dati vengono elaborati durante il deployment del modello, è utile distinguere il continuous batching da altri termini correlati nel glossario:
- Dimensione del Batch: Si riferisce al numero fisso di campioni elaborati simultaneamente durante l'addestramento o l'inferenza. I tradizionali flussi di lavoro di elaborazione batch si basano su dimensioni statiche, mentre il continuous batching consente alla dimensione effettiva del batch di fluttuare dinamicamente in base al traffico in arrivo.
- Inferenza in Tempo Reale: Questo concetto si concentra sulla minimizzazione della latenza di inferenza per predizioni immediate, elaborando singoli input man mano che arrivano. Il continuous batching colma il divario tra il batching statico ad alto throughput e l'inferenza in tempo reale a bassa latenza, mantenendo un throughput elevato senza costringere le richieste veloci ad attendere quelle più lente.
Applicazioni nel mondo reale#
Il continuous batching è fondamentale per i sistemi di produzione che gestiscono volumi elevati di richieste imprevedibili. Ecco due esempi concreti della sua applicazione:
-
Generazione di Testo ad Alto Throughput: Quando si servono Modelli Linguistici di Grandi Dimensioni (LLM), la generazione di risposte per utenti diversi richiede quantità di tempo variabili a seconda della lunghezza dell'output. I framework che sfruttano il continuous batching, come vLLM su Ray Serve, possono trasmettere in streaming continuamente i token appena generati e sostituire immediatamente le conversazioni terminate con nuovi prompt. Questo metodo, originariamente reso popolare dalla ricerca sulla pianificazione a livello di iterazione, migliora drasticamente il throughput della generazione di testo.
-
Analisi Video Asincrona: Nelle attività di comprensione video, come il tracciamento di veicoli attraverso la rete di telecamere di traffico di una città, i fotogrammi arrivano a intervalli diversi. Il continuous batching consente ai modelli di tracciamento degli oggetti di elaborare dinamicamente i fotogrammi video in arrivo nel millisecondo in cui le risorse si liberano, ottimizzando le pipeline di accelerazione hardware per le dashboard di smart city.
Elaborazione continua nelle attività di visione#
Quando gestisci pratiche di distribuzione dei modelli ad alto traffico, l'inferenza in streaming iterativa può simulare i vantaggi del batching dinamico assicurando che la memoria venga liberata progressivamente anziché bloccata. Il seguente esempio in Python dimostra come utilizzare il pattern generatore con l'API di predizione del modello per gestire un flusso continuo di immagini in modo efficiente.
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.")La gestione della pianificazione delle risorse a livello di sistema richiede un equilibrio tra velocità pura e costo operativo. I team che distribuiscono massicci computer vision (CV) e modelli linguistici fanno sempre più affidamento su framework di serving avanzati per gestire questi batch dinamici. Per i team aziendali che desiderano ottimizzare la propria infrastruttura, la Piattaforma Ultralytics offre strumenti robusti per l'addestramento, il monitoraggio e l'esportazione di modelli in ambienti di produzione altamente ottimizzati.






