Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
- Ottimizzazioni degli endpoint: configurare l'infrastruttura degli endpoint per prestazioni migliori
- Ottimizzazioni del modello: migliorare l'efficienza del modello e la velocità effettiva
- Ottimizzazioni client: ottimizzare l'interazione dei client con gli endpoint di gestione
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.