Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementazione di modelli con Triton Inference Server
Triton Inference Server
I container SageMaker AI Triton semplificano l’implementazione di Triton Inference Server sulla piattaforma SageMaker AI Hosting per fornire modelli addestrati in produzione e supportano le diverse modalità operative di SageMaker AI. Per un elenco dei container Triton Inference Server disponibili su SageMaker AI, consulta Container NVIDIA Triton Inference (solo supporto SM)
Per esempi di notebook end-to-end, consigliamo di dare un'occhiata al repository amazon-sagemaker-examples
Modalità di hosting
I container Triton supportano le seguenti modalità di SageMaker AI Hosting:
-
Endpoint per modelli singoli
-
È la modalità operativa predefinita di SageMaker AI. In questa modalità, il container Triton può caricare un modello singolo o un modello di ensemble singolo.
-
Il nome del modello deve essere passato come proprietà dell’ambiente del container, che fa parte della chiamata API
CreateModelSageMaker AI. La variabile di ambiente utilizzata da inserire nel nome del modello èSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Endpoint di modello singoli con ensemble
-
Triton Inference Server supporta l'ensemble, che è una pipeline, o un DAG (grafico aciclico diretto) di modelli. Sebbene un ensemble sia tecnicamente composto da più modelli, nella modalità di endpoint a modello singolo predefinita, SageMaker AI può trattare l’ensemble vero e proprio (il meta-modello che rappresenta la pipeline) come modello principale da caricare, per poi caricare successivamente i modelli associati.
-
Il nome del modello dell'ensemble vero e proprio deve essere utilizzato per caricare il modello. Deve essere inserito come proprietà dell'ambiente del container, che fa parte della chiamata all'API di SageMaker
CreateModel. La variabile di ambiente utilizzata da inserire nel nome del modello èSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Endpoint multimodello
-
In questa modalità, SageMaker AI può servire più modelli su un unico endpoint. È possibile utilizzare questa modalità specificando la variabile di ambiente
‘MultiModel’: truecome proprietà dell'ambiente del container, che fa parte della chiamata API di SageMakerCreateModel. -
Per impostazione predefinita, nessun modello viene caricato all'avvio dell'istanza. Per eseguire una richiesta di inferenza su un particolare modello, specifica il file
*.tar.gzdel modello corrispondente come argomento della proprietàTargetModeldella chiamata API di SageMakerInvokeEndpoint.
-
-
Endpoint multimodello con ensemble
-
In questa modalità, SageMaker AI funziona come descritto per gli endpoint multi-modello. Tuttavia, il container SageMaker AI Triton può caricare più modelli ensemble, consentendo di eseguire più pipeline di modelli sulla stessa istanza. SageMaker AI tratta ogni ensemble come un unico modello e l’ensemble vero e proprio di ogni modello può essere invocato specificando l’archivio
*.tar.gzcorrispondente comeTargetModel. Per una migliore gestione della memoria durante la memoria dinamica
LOADeUNLOAD, si consiglia di mantenere un ensemble di piccole dimensioni.
-
Tipi di payload di inferenza
Triton supporta due metodi per inviare un payload di inferenza sulla rete: json e binary+json (o json con codifica binaria). Il payload JSON in entrambi i casi include il tipo di dati, la forma e l'effettivo tensore di richiesta di inferenza. Il tensore di richiesta deve essere un tensore binario.
Con il formato binary+json, è necessario specificare la lunghezza dei metadati della richiesta nell'intestazione per consentire a Triton di analizzare correttamente il payload binario. Nel container SageMaker AI Triton, questo avviene utilizzando un’intestazione Content-Type personalizzata: application/vnd.sagemaker-triton.binary+json;json-header-size={}. Ciò differisce dall’utilizzo dell’intestazione Inference-Header-Content-Length su un Triton Inference Server standalone, perché le intestazioni personalizzate non sono consentite in SageMaker AI.
Utilizzo di config.pbtxt per impostare la configurazione dei modelli
Per i Triton Inference Server su SageMaker AI, ogni modello deve includere un file config.pbtxt che specifichi almeno le seguenti configurazioni per il modello:
-
name: sebbene sia facoltativo per i modelli eseguiti al di fuori di SageMaker AI, consigliamo di indicare sempre un nome per i modelli da eseguire in Triton su SageMaker AI. -
platforme/obackend: l'impostazione di un backend è essenziale per specificare il tipo di modello. Alcuni backend hanno un'ulteriore classificazione, come tensorflow_savedmodelotensorflow_graphdef. Tali opzioni possono essere specificate come parte della chiaveplatformoltre alla chiavebackend. I backend più diffusi sonotensorrt,onnxruntime,tensorflow,pytorch,python,dali,fileopenvino. -
input: specifica tre attributi per l'input:name,data_typeedims(la forma). -
output: specifica tre attributi per l'output:name,data_typeedims(la forma). -
max_batch_size: imposta la dimensione del batch su un valore maggiore o uguale a 1 che indichi la dimensione massima del batch che Triton dovrebbe utilizzare con il modello.
Per maggiori informazioni sulla configurazione di config.pbtxt, consulta il repository
-
instance_groups: i gruppi di istanze contribuiscono a specificare il numero e la posizione di un determinato modello. Hanno gli attributi count,kindegpus(usati quandokindèKIND_GPU). L'attributocountè equivalente al numero di worker. Per la distribuzione di modelli ordinari, ogni worker dispone di una propria copia del modello. Analogamente, in Triton,countspecifica il numero di copie del modello per dispositivo. Ad esempio, se il tipoinstance_groupèKIND_CPU, la CPU ha un numero di copie del modello pari acount.Nota
In un'istanza GPU, la configurazione
instance_groupsi applica a ciascun dispositivo GPU. Ad esempio, il numerocountdi copie del modello viene inserito su ciascun dispositivo GPU a meno che non si specifichi esplicitamente quali dispositivi GPU dovrebbero caricare il modello. -
dynamic_batchinge sequence_batching: il batching dinamico viene utilizzato per i modelli stateless e il batching in sequenza viene utilizzato per i modelli stateful (in cui si desidera instradare ogni volta una richiesta alla stessa istanza del modello). I pianificatori di batch abilitano una coda per modello, che aiuta ad aumentare il throughput, a seconda della configurazione di batching. -
ensemble: un modello ensemble rappresenta una pipeline di uno o più modelli e la connessione dei tensori di input e output tra tali modelli. Può essere configurato specificando platformcomeensemble. La configurazione dell'ensemble è solo una rappresentazione della pipeline del modello. In SageMaker AI, tutti i modelli in un ensemble vengono trattati come dipendenti del modello di ensemble e contati come un unico modello per le metriche di SageMaker AI, ad esempioLoadedModelCount.
Pubblicazione dei parametri Triton predefiniti su Amazon CloudWatch
Il container di inferenza Triton di NVIDIA fornisce i parametri alla porta 8002 (configurabile) per i diversi modelli e GPU utilizzati nel Triton Inference Server. Per tutte le informazioni sui parametri predefiniti disponibili, consulta la pagina GitHub per i parametri del Triton Inference Server
A partire dalla versione v23.07, il container Triton di SageMaker AI supporta la pubblicazione di queste metriche su Amazon CloudWatch specificando alcune variabili di ambiente. Per effettuare lo scraping delle metriche di Prometheus, il container Triton di SageMaker AI sfrutta l’agente Amazon CloudWatch.
Le variabili di ambiente obbligatorio che è necessario specificare per raccogliere i parametri sono le seguenti:
| Variabile di ambiente | Descrizione | Valore di esempio |
|---|---|---|
|
|
Specifica questa opzione per consentire a Triton di pubblicare i parametri sul suo endpoint Prometheus. |
"true" |
|
|
Specifica questa opzione per avviare i controlli preliminari necessari per pubblicare i parametri su Amazon CloudWatch. |
"true" |
|
|
Specifica questa opzione per puntare al gruppo di log in cui vengono scritti i parametri. |
“/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest” |
|
|
Specifica questa opzione per puntare allo spazio dei nomi del parametro in cui desideri visualizzare e tracciare i parametri. |
“/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest” |
|
|
Indica 8002 o qualsiasi altra porta. Se SageMaker AI non ha bloccato la porta specificata, questa viene utilizzata. Altrimenti, viene scelta automaticamente un'altra porta non bloccata. |
"8002" |
Quando pubblichi le metriche con Triton su SageMaker AI, tieni presente le seguenti limitazioni:
Sebbene sia possibile generare parametri personalizzati tramite il backend C-API e Python (dalla versione 23.05 in poi), al momento non sono supportati per la pubblicazione su Amazon CloudWatch.
Nella modalità endpoint multi-modello (MME) di SageMaker AI, Triton viene eseguito in un ambiente che richiede l’abilitazione del namespace dei modelli, perché ogni modello (eccetto i modelli di ensemble) viene trattato come se si trovasse nel proprio repository di modelli. Attualmente, ciò crea una limitazione per i Parametri. Quando lo spazio dei nomi dei modelli è abilitato, Triton non distingue i parametri tra due modelli con lo stesso nome appartenenti a ensemble diversi. Come soluzione alternativa, assicurati che ogni modello implementato abbia un nome univoco. Ciò semplifica anche la ricerca dei parametri in CloudWatch.
Variabili di ambiente
La tabella seguente elenca le variabili di ambiente supportate per Triton su SageMaker AI.
| Variabile di ambiente | Descrizione | Tipo | Valori possibili |
|---|---|---|---|
|
Consente a Triton di funzionare in modalità endpoint multi-modello di SageMaker IA. |
Booleano |
|
|
Specifica il modello da caricare nella modalità con modello singolo (predefinita) di SageMaker AI. Per la modalità ensemble, specifica il nome dell'ensemble vero e proprio. |
Stringa |
|
|
|
Stringa |
|
|
Nel container SageMaker AI Triton, il valore predefinito di questa opzione è |
Booleano |
|
|
In SageMaker AI, la porta predefinita è la 8080. È possibile eseguire la personalizzazione utilizzando una porta diversa in scenari con più container. |
Stringa |
|
|
È impostato dalla piattaforma SageMaker AI quando si utilizza la modalità multi-container. |
Stringa |
|
|
Sebbene SageMaker AI non supporti attualmente GRPC, se utilizzi Triton davanti a un proxy inverso personalizzato, puoi scegliere di abilitare GRPC. |
Booleano |
|
|
La porta predefinita per GRPC è 8001, ma è possibile modificarla. |
Stringa |
|
|
È possibile impostare il numero di thread predefiniti del gestore di richieste HTTP. |
Stringa |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
Specifica la dimensione shm per il backend Python, in byte. Il valore predefinito è 16 MB ma può essere aumentato. |
Stringa |
|
|
Specifica la dimensione di aumento di shm per il backend Python, in byte. Il valore predefinito è 1 MB, ma può essere aumentato per consentire incrementi maggiori. |
Stringa |
|
|
Il valore predefinito è |
Stringa |
|
|
Limita la percentuale massima di memoria della GPU utilizzata per il caricamento dei modelli, permettendo di utilizzare il resto per le richieste di inferenza. |
Stringa |
|
|
|
Booleano |
|
|
La porta predefinita è 8002. |
Stringa |
|
|
|
Booleano |
|
|
Obbligatorio se hai abilitato la pubblicazione dei parametri su CloudWatch. |
Stringa |
|
|
Obbligatorio se hai abilitato la pubblicazione dei parametri su CloudWatch. |
Stringa |
|
|
Aggiunge eventuali argomenti aggiuntivi all'avvio del server Triton. |
Stringa |
|