Continuous Batching
Il batching continuo aggiunge e rimuove richieste da un batch in esecuzione a ogni passaggio, invece di aspettare che il batch sia completo, aumentando l'utilizzo della GPU e riducendo la latenza.
Il batching continuo è una tecnica avanzata di pianificazione e ottimizzazione dell'inferenza usata nell'apprendimento automatico (ML) per massimizzare l'utilizzo hardware e il throughput. Nel batching statico tradizionale, un motore di inferenza attende che si accumuli un numero predeterminato di richieste prima di elaborarle simultaneamente. Questo spesso causa inefficienze, perché il sistema deve attendere il completamento della richiesta più lunga nel batch prima di rilasciare le risorse. Il batching continuo, noto anche come batching in-flight o a livello di iterazione, risolve il problema inserendo nuove richieste nel batch di calcolo non appena una richiesta attiva viene completata, riducendo significativamente i tempi di inattività delle GPU e migliorando l'efficienza complessiva.
Distinguere i concetti correlati#
Per capire meglio come vengono elaborati i dati durante la distribuzione del modello, è utile distinguere il batching continuo da altri termini correlati del glossario:
- Dimensione del batch: indica il 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 batching continuo consente alla dimensione effettiva del batch di variare dinamicamente in base al traffico in ingresso.
- Inferenza in tempo reale: questo concetto punta a ridurre al minimo la latenza di inferenza per ottenere previsioni immediate, elaborando singoli input man mano che arrivano. Il batching continuo 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 rapide ad attendere quelle più lente.
Applicazioni nel mondo reale#
Il batching continuo è fondamentale per i sistemi di produzione che gestiscono volumi elevati di richieste imprevedibili. Ecco due esempi concreti di applicazione:
-
Generazione di testo ad alto throughput: quando si servono modelli linguistici di grandi dimensioni (LLMs), il tempo necessario per generare risposte per utenti diversi varia in base alla lunghezza dell'output. I framework che utilizzano il batching continuo, come vLLM su Ray Serve, possono trasmettere continuamente i token appena generati e sostituire immediatamente le conversazioni completate con nuovi prompt. Questo metodo, reso inizialmente 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 dei veicoli nella rete di telecamere del traffico di una città, i fotogrammi arrivano a intervalli diversi. Il batching continuo consente ai modelli di tracciamento degli oggetti di elaborare dinamicamente i fotogrammi video in ingresso non appena le risorse si liberano, ottimizzando le pipeline di accelerazione hardware per i pannelli di controllo delle città intelligenti.
Elaborazione continua nelle attività di visione#
Quando si gestiscono pratiche di distribuzione dei modelli ad alto traffico, eseguire inferenze in streaming e in modo iterativo può simulare i vantaggi del batching dinamico, liberando gradualmente la memoria invece di tenerla bloccata. L'esempio Python seguente mostra come utilizzare il pattern generator con l'API di predizione del modello per gestire in modo efficiente un flusso continuo di immagini.
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 costi operativi. I team che distribuiscono modelli di computer vision (CV) e linguistici su vasta scala si affidano sempre più a framework di serving avanzati per gestire questi batch dinamici. Per i team aziendali che desiderano semplificare la propria infrastruttura, la Ultralytics Platform offre strumenti solidi per addestrare, monitorare ed esportare modelli in ambienti di produzione altamente ottimizzati.










