Condividi tramite


Ottimizzare gli endpoint di gestione dei modelli per la produzione

Informazioni su come ottimizzare gli endpoint di gestione dei modelli per i carichi di lavoro di produzione che richiedono velocità effettiva elevata, bassa latenza e prestazioni affidabili.

Le strategie di ottimizzazione rientrano in tre categorie:

Quando ottimizzare l'endpoint

Considera di ottimizzare il tuo endpoint di Model Serving quando incontri uno dei seguenti scenari:

  • Volume di query elevato: l'applicazione invia più di 50.000 query al secondo (QPS) a un singolo endpoint
  • Requisiti di latenza: l'applicazione richiede tempi di risposta inferiori a 100 ms
  • Colli di bottiglia nello scalare: gli endpoint sperimentano accodamenti o restituiscono errori HTTP 429 durante i picchi di traffico
  • Ottimizzazione dei costi: si vuole ridurre i costi di gestione mantenendo gli obiettivi di prestazioni
  • Preparazione della produzione: Ci si sta preparando per passare dallo sviluppo ai carichi di lavoro di produzione

Ottimizzazioni dell'infrastruttura

Le ottimizzazioni dell'infrastruttura migliorano il routing di rete, il comportamento di ridimensionamento e la capacità di calcolo.

Ottimizzazione del percorso

L'ottimizzazione delle rotte offre il miglioramento più significativo dell'infrastruttura per i carichi di lavoro ad alta velocità di trasferimento. Quando si abilita l'ottimizzazione della route in un endpoint, Databricks Model Serving migliora il percorso di rete per le richieste di inferenza, con conseguente comunicazione più rapida e diretta tra client e modelli.

Vantaggi delle prestazioni:

Caratteristica / Funzionalità Limite endpoint standard Limite dell'endpoint ottimizzato per percorso
Query al secondo (QPS) per area di lavoro 200 50.000+ (contattare Databricks per limiti più elevati)
Concorrenza client per area di lavoro 192-1024 (varia in base alla regione) Nessun limite esplicito (limitato dalla concorrenza fornita)
Concorrenza con provisioning dell'endpoint per entità servita 1,024 1.024 (contattare Databricks per limiti più elevati)

Quando usare l'ottimizzazione della route:

  • Carichi di lavoro che richiedono più di 200 QPS
  • Applicazioni con requisiti di latenza rigorosi (sovraccarico di sotto-50 ms)
  • Distribuzioni di produzione che servono più utenti simultanei

Importante

L'ottimizzazione della route è disponibile solo per gli endpoint di servizio del modello personalizzato. Le API del modello di base e i modelli esterni non supportano l'ottimizzazione della route. I token OAuth sono necessari per l'autenticazione; I token di accesso personale non sono supportati.

Vedere Ottimizzazione del percorso sugli endpoint di servizio per istruzioni di configurazione e Interrogare gli endpoint di servizio ottimizzati per il percorso per i dettagli delle query.

Concorrenza provisionata

La concorrenza provisionata controlla quante richieste simultanee il tuo endpoint può elaborare. Configurare la concorrenza fornita in base ai requisiti di QPS e della latenza previsti.

Linee guida per la configurazione:

  • Concorrenza minima: impostare un numero sufficientemente elevato per gestire il traffico di base senza accodamento
  • Concorrenza massima: impostare un numero sufficientemente elevato per contenere i picchi di traffico durante il controllo dei costi
  • Scalabilità automatica: abilitare la scalabilità automatica per regolare dinamicamente la capacità in base alla richiesta

Calcolare la concorrenza richiesta:

Required Concurrency = Target QPS × Average Latency (seconds)

Ad esempio, se l'obiettivo è 100 QPS con una latenza media di 200 ms:

Required Concurrency = 100 × 0.2 = 20

Usare test di carico per misurare la latenza effettiva e determinare le impostazioni di concorrenza ottimali.

Tipi di istanza

Scegliere i tipi di istanza in base ai requisiti di calcolo del modello:

Tipo di istanza Ideale per Trade-offs
CPU (Piccolo, Medio, Grande) Modelli leggeri, logica di inferenza semplice Costo inferiore, più lento per i modelli a elevato utilizzo di calcolo
GPU (Piccolo, Medio, Grande) Modelli di grandi dimensioni, calcoli complessi, elaborazione di immagini/video Costi più elevati, prestazioni ottimali per l'apprendimento avanzato

Suggerimento

Iniziare con le istanze della CPU per lo sviluppo e il test. Passare alle istanze GPU solo se si osserva una latenza di inferenza elevata o il modello richiede calcoli specializzati, ad esempio operazioni di Deep Learning.

Ottimizzazioni del modello

Le ottimizzazioni dei modelli migliorano la velocità di inferenza e l'efficienza delle risorse.

Dimensioni e complessità del modello

Dimensioni e complessità del modello: i modelli più piccoli e meno complessi in genere comportano tempi di inferenza più rapidi e QPS più elevati. Considerare tecniche come la quantizzazione o la potatura del modello se il modello è di grandi dimensioni.

Creazione di batch

Se l'applicazione può inviare più richieste in una singola chiamata, abilitare l'invio in batch sul lato client. Ciò può ridurre il sovraccarico per previsione in modo significativo.

Ottimizzazione pre-elaborazione e post-elaborazione

Trasferire la pre-elaborazione e post-elaborazione complesse dal servizio degli endpoint al fine di ridurre il carico sull'infrastruttura di inferenza.

Ottimizzazioni lato client

Le ottimizzazioni lato client migliorano il modo in cui le applicazioni interagiscono con gli endpoint di gestione.

Pool di connessioni

Il pool di connessioni riutilizza le connessioni esistenti anziché creare nuove connessioni per ogni richiesta, riducendo significativamente il sovraccarico.

  • Usare Databricks SDK, che implementa automaticamente le procedure consigliate per il pool di connessioni
  • Se si usano client personalizzati, implementare manualmente il pool di connessioni.

Gestione degli errori e strategie di ripetizione dei tentativi

Implementare una gestione degli errori affidabile per gestire correttamente gli errori temporanei, in particolare durante gli eventi di scalabilità automatica o le interruzioni di rete.

Ottimizzazione delle dimensioni del payload

Ridurre al minimo le dimensioni del payload delle richieste e delle risposte per ridurre il tempo di trasferimento della rete e migliorare la velocità effettiva.

Misurare e migliorare le prestazioni

Monitoraggio delle prestazioni

Monitorare le prestazioni degli endpoint usando gli strumenti forniti da Mosaic AI Model Serving:

Metrica Cosa misura Obiettivo Azione in caso di superamento
Latenza (P50, P90, P99) Tempo di risposta per le richieste Dipendente dall'applicazione (tipicamente <da 100 a 500 ms) Verificare la presenza di accodamento, ottimizzare il modello o il client
Capacità di elaborazione (QPS) Richieste completate al secondo Dipendente dal carico di lavoro Abilitare l'ottimizzazione del percorso, aumentare la concorrenza predefinita
Percentuale di errore Percentuale di richieste non riuscite <1% Esaminare i log del servizio, verificare la presenza di problemi di capacità
Profondità coda Richieste in attesa di elaborazione 0 (senza attesa) Aumentare la concorrenza fornita o abilitare l'autoscalabilità
Utilizzo cpu/memoria Utilizzo della risorsa <80% Aumentare il tipo di istanza o aumentare la concorrenza

Consultare Monitorare la qualità del modello e l'integrità degli endpoint per linee guida dettagliate sul monitoraggio e tracciare ed esportare le metriche di integrità degli endpoint in Prometheus e Datadog per esportare le metriche agli strumenti di osservabilità.

Test di carico

Il test di carico misura le prestazioni degli endpoint in condizioni di traffico realistiche e consente di:

  • Determinare le impostazioni di concorrenza con provisioning ottimali
  • Identificare i colli di bottiglia in termini di prestazioni
  • Convalidare i requisiti di latenza e velocità effettiva
  • Comprendere la relazione tra concorrenza client e concorrenza server

Vedere Test di carico per la gestione degli endpoint.

Risolvere i problemi comuni di prestazione

Queuing

Model Serving supporta la scalabilità automatica per regolare la capacità in base ai modelli di traffico. Tuttavia, un aumento improvviso del traffico può causare code perché la scalabilità automatica richiede tempo per rilevare un carico maggiore e predisporre capacità aggiuntiva. Durante questo periodo, le richieste in ingresso possono superare temporaneamente la capacità disponibile, causando la coda delle richieste.

L'accodamento si verifica quando la frequenza delle richieste o la concorrenza delle richieste superano la capacità di elaborazione corrente dell'endpoint. Ciò si verifica in genere durante improvvisi picchi di traffico, esplosioni di carico di lavoro o quando l'endpoint non dispone di concorrenza fornita in modo insufficiente. Gli endpoint di Servizio Modello consentono l'accodamento temporaneo per gestire i picchi, ma oltre una soglia definita, l'endpoint restituisce errori HTTP 429 (Troppe Richieste) a tutela della stabilità del sistema.

L'accodamento aumenta la latenza perché le richieste in coda attendono prima di essere elaborate. Per minimizzare l'accodamento:

  • Impostare una concorrenza con provisioning minima che sia sufficientemente elevata per gestire il traffico di base e i picchi tipici
  • Abilitare l'ottimizzazione della route per limiti di capacità superiori
  • Implementare la logica di ripetizione dei tentativi con backoff esponenziale nelle applicazioni client

Strozzature dell'API esterne

I modelli spesso chiamano API esterne per l'arricchimento dei dati, il recupero di funzionalità o altre attività durante l'inferenza. Queste dipendenze esterne possono diventare colli di bottiglia delle prestazioni:

  • Latenza: misurare il tempo di risposta di ogni chiamata API esterna. La latenza elevata in queste chiamate aumenta direttamente la latenza complessiva e riduce la velocità effettiva.
  • Limiti di velocità effettiva: le API esterne possono imporre limiti di velocità o vincoli di capacità. Il superamento di questi limiti può causare strozzamento, errori e riduzione delle prestazioni.
  • Tasso di errori: Gli errori frequenti delle API esterne possono attivare nuovi tentativi e aumentare il carico sull'endpoint di servizio.
  • Memorizzazione nella cache: implementare la memorizzazione nella cache per i dati a cui si accede di frequente da API esterne per ridurre il numero di chiamate e migliorare i tempi di risposta.

Monitorare questi fattori per identificare i colli di bottiglia e implementare ottimizzazioni mirate per carichi di lavoro con velocità effettiva elevata.

Risorse aggiuntive