Distribuzione del modello con Triton Inference Server - Amazon SageMaker

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à.

Distribuzione del modello con Triton Inference Server

Triton Inference Server è un software di distribuzione delle inferenze open source che semplifica l'inferenza dell'intelligenza artificiale. Con Triton, puoi implementare qualsiasi modello creato con più framework di deep learning e machine learning, tra cui TensorRT,,, Open TensorFlow PyTorch, ONNX Python e altro ancora. VINO RAPIDS FIL

I contenitori SageMaker Triton ti aiutano a implementare Triton Inference Server sulla piattaforma di hosting per servire modelli addestrati in produzione. SageMaker Supporta le diverse modalità in cui opera. SageMaker Per un elenco dei contenitori Triton Inference Server disponibili su SageMaker, consulta NVIDIATriton Inference Containers (solo supporto SM).

Per esempi di end-to-end notebook, consigliamo di dare un'occhiata al repository. amazon-sagemaker-examples

Modalità di hosting

Le seguenti modalità SageMaker di hosting sono supportate dai contenitori Triton:

  • Endpoint per modelli singoli

    • Questa è SageMaker la modalità operativa predefinita. 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 contenitore, che fa parte della CreateModel SageMaker API chiamata. 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 (grafo aciclico diretto) di modelli. Sebbene un insieme sia tecnicamente composto da più modelli, nella modalità endpoint a modello singolo predefinita, SageMaker può considerare l'insieme vero e proprio (il meta-modello che rappresenta la pipeline) come modello principale da caricare e può successivamente caricare i modelli associati.

    • Il nome del modello dell'ensemble vero e proprio deve essere utilizzato per caricare il modello. Deve essere passato come proprietà dell'ambiente contenitore, che fa parte della chiamata. CreateModel SageMaker API La variabile di ambiente utilizzata da inserire nel nome del modello è SAGEMAKER_TRITON_DEFAULT_MODEL_NAME.

  • Endpoint multimodello

    • In questa modalità, SageMaker può servire più modelli su un singolo endpoint. È possibile utilizzare questa modalità specificando la variabile di ambiente ‘MultiModel’: true come proprietà dell'ambiente contenitore, che fa parte della CreateModel SageMaker API chiamata.

    • Per impostazione predefinita, nessun modello viene caricato all'avvio dell'istanza. Per eseguire una richiesta di inferenza su un particolare modello, specificate il *.tar.gz file del modello corrispondente come argomento della TargetModel proprietà della InvokeEndpoint SageMaker API chiamata.

  • Endpoint multimodello con ensemble

    • In questa modalità, SageMaker funziona come descritto per gli endpoint multimodello. Tuttavia, il contenitore SageMaker Triton può caricare più modelli di ensemble, il che significa che più pipeline di modelli possono essere eseguite sulla stessa istanza. SageMaker tratta ogni ensemble come un unico modello e l'insieme vero e proprio di ogni modello può essere richiamato specificando l'archivio corrispondente come. *.tar.gz TargetModel

    • Per una migliore gestione della memoria durante la memoria dinamica LOAD e UNLOAD, 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 JSON payload 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 contenitore SageMaker Triton, questa operazione viene eseguita utilizzando un'intestazione personalizzata:. Content-Type application/vnd.sagemaker-triton.binary+json;json-header-size={} Questo è diverso dall'utilizzo dell'Inference-Header-Content-Lengthintestazione su un Triton Inference Server autonomo perché le intestazioni personalizzate non sono consentite. SageMaker

Utilizzo di config.pbtxt per impostare la configurazione dei modelli

Per Triton Inference Server attivi SageMaker, ogni modello deve includere un config.pbtxt file che specifichi, come minimo, le seguenti configurazioni per il modello:

  • name: Sebbene questo sia facoltativo per i modelli che funzionano al di fuori di SageMaker, ti consigliamo di fornire sempre un nome per i modelli da eseguire in Triton on. SageMaker

  • platform e/o backend: l'impostazione di un backend è essenziale per specificare il tipo di modello. Alcuni backend hanno un'ulteriore classificazione, come tensorflow_savedmodel o tensorflow_graphdef. Tali opzioni possono essere specificate come parte della chiave platform oltre alla chiave backend. I backend più diffusi sono tensorrt, onnxruntime, tensorflow, pytorch, python, dali, fil e openvino.

  • input: specifica tre attributi per l'input: name, data_type e dims (la forma).

  • output: specifica tre attributi per l'output: name, data_type e dims (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 dettagli sulla configurazioneconfig.pbtxt, consulta il repository di Triton. GitHub Triton fornisce diverse configurazioni per modificare il comportamento dei modelli. Alcune delle opzioni di configurazione più comuni e importanti sono:

  • instance_groups: i gruppi di istanze contribuiscono a specificare il numero e la posizione di un determinato modello. Hanno gli attributi count, kind e gpus (usati quando kind è KIND_GPU). L'attributo count è equivalente al numero di worker. Per la distribuzione di modelli ordinari, ogni worker dispone di una propria copia del modello. Analogamente, in Triton, count specifica il numero di copie del modello per dispositivo. Ad esempio, se il instance_group tipo èKIND_CPU, allora CPU ha un count numero di copie del modello.

    Nota

    In un GPU caso, la instance_group configurazione si applica per GPU dispositivo. Ad esempio, il count numero di copie del modello viene posizionato su ciascun GPU dispositivo a meno che non si specifichi esplicitamente quali GPU dispositivi devono caricare il modello.

  • dynamic_batching e 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 platform come ensemble. La configurazione dell'ensemble è solo una rappresentazione della pipeline del modello. SageMakerAttivo, tutti i modelli di un insieme vengono trattati come dipendenti del modello di insieme e contati come un unico modello per le SageMaker metriche, ad esempio. LoadedModelCount

Pubblicazione dei parametri Triton predefiniti su Amazon CloudWatch

Il NVIDIA Triton Inference Container espone le metriche sulla porta 8002 (configurabile) per i diversi modelli e GPUs che vengono utilizzate nel Triton Inference Server. Per tutti i dettagli sulle metriche predefinite disponibili, consulta la pagina relativa alle metriche del Triton Inference Server. GitHub Questi parametri sono in formato Prometheus e possono essere sottoposti a scraping utilizzando una configurazione dello scraper Prometheus.

A partire dalla versione v23.07 in poi, il contenitore SageMaker Triton supporta la pubblicazione di queste metriche su Amazon CloudWatch specificando alcune variabili di ambiente. Per analizzare i parametri di Prometheus, il container Triton sfrutta l' SageMaker 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

SAGEMAKER_TRITON_ALLOW_METRICS

Specifica questa opzione per consentire a Triton di pubblicare i parametri sul suo endpoint Prometheus.

"true"

SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH

Specificate questa opzione per avviare i controlli preliminari necessari per pubblicare le metriche su Amazon. CloudWatch

"true"

SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP

Specifica questa opzione per puntare al gruppo di log in cui vengono scritti i parametri.

«/aws/ /Endpoints/SageMaker» TritonMetrics SageMakerTwoEnsemblesTest

SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE

Specifica questa opzione per puntare allo spazio dei nomi del parametro in cui desideri visualizzare e tracciare i parametri.

«/aws/ SageMaker TritonMetrics /Endpoints/SageMakerTwoEnsemblesPublicTest»

SAGEMAKER_TRITON_METRICS_PORT

Indica 8002 o qualsiasi altra porta. Se non SageMaker ha bloccato la porta specificata, viene utilizzata. Altrimenti, viene scelta automaticamente un'altra porta non bloccata.

"8002"

Quando pubblicate metriche con Triton on SageMaker, tenete presente le seguenti limitazioni:

  • Sebbene sia possibile generare metriche personalizzate tramite i backend C API e Python (dalla versione 23.05 in poi), al momento non sono supportate per la pubblicazione su Amazon. CloudWatch

  • In modalità endpoints (MME) SageMaker multimodello, Triton viene eseguito in un ambiente che richiede l'abilitazione del namespace dei modelli perché ogni modello (eccetto i modelli 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 delle metriche. CloudWatch

Variabili di ambiente

La tabella seguente elenca le variabili di ambiente supportate per Triton on. SageMaker

Variabile di ambiente Descrizione Tipo Valori possibili

SAGEMAKER_MULTI_MODEL

Consente a Triton di funzionare in modalità endpoint SageMaker multimodello.

Booleano

true, false

SAGEMAKER_TRITON_DEFAULT_MODEL_NAME

Specificate il modello da caricare nella modalità modello SageMaker singolo (predefinita). Per la modalità ensemble, specifica il nome dell'ensemble vero e proprio.

Stringa

<model_name> come specificato in config.pbtxt

SAGEMAKER_TRITON_PING_MODE

'ready'è la modalità predefinita nella SageMaker modalità modello singolo ed 'live' è l'impostazione predefinita nella modalità endpoint SageMaker multimodello.

Stringa

ready, live

SAGEMAKER_TRITON_DISABLE_MODEL_NAMESPACING

Nel contenitore SageMaker Triton, questa opzione è impostata come impostazione predefinita. true

Booleano

true, false

SAGEMAKER_BIND_TO_PORT

Quando è attiva SageMaker, la porta predefinita è 8080. È possibile eseguire la personalizzazione utilizzando una porta diversa in scenari con più container.

Stringa

<port_number>

SAGEMAKER_SAFE_PORT_RANGE

Questa impostazione viene impostata dalla SageMaker piattaforma quando si utilizza la modalità multi-contenitore.

Stringa

<port_1><port_2>

SAGEMAKER_TRITON_ALLOW_GRPC

Sebbene GRPC attualmente SageMaker non sia supportato, se utilizzi Triton davanti a un reverse proxy personalizzato, puoi scegliere di abilitarlo. GRPC

Booleano

true, false

SAGEMAKER_TRITON_GRPC_PORT

La porta predefinita per GRPC è 8001, ma puoi cambiarla.

Stringa

<port_number>

SAGEMAKER_TRITON_THREAD_COUNT

È possibile impostare il numero di thread predefiniti del gestore delle HTTP richieste.

Stringa

<number>

SAGEMAKER_TRITON_LOG_VERBOSE

trueper impostazione predefinita è attiva SageMaker, ma è possibile disattivare selettivamente questa opzione.

Booleano

true, false

SAGEMAKER_TRITON_LOG_INFO

falseper impostazione predefinita è attiva SageMaker.

Booleano

true, false

SAGEMAKER_TRITON_LOG_WARNING

falseper impostazione predefinita su SageMaker.

Booleano

true, false

SAGEMAKER_TRITON_LOG_ERROR

falseper impostazione predefinita su SageMaker.

Booleano

true, false

SAGEMAKER_TRITON_SHM_DEFAULT_BYTE_SIZE

Specifica la dimensione shm per il backend Python, in byte. Il valore predefinito è 16 MB ma può essere aumentato.

Stringa

<number>

SAGEMAKER_TRITON_SHM_GROWTH_BYTE_SIZE

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

<number>

SAGEMAKER_TRITON_TENSORFLOW_VERSION

Il valore predefinito è 2. Triton non supporta più Tensorflow 2 di Triton v23.04. Puoi configurare questa variabile per le versioni precedenti.

Stringa

<number>

SAGEMAKER_TRITON_MODEL_LOAD_GPU_LIMIT

Limita la percentuale massima di GPU memoria utilizzata per il caricamento del modello, permettendo di utilizzare la parte restante per le richieste di inferenza.

Stringa

<number>

SAGEMAKER_TRITON_ALLOW_METRICS

falseper impostazione predefinita su. SageMaker

Booleano

true, false

SAGEMAKER_TRITON_METRICS_PORT

La porta predefinita è 8002.

Stringa

<number>

SAGEMAKER_TRITON_PUBLISH_METRICS_TO_CLOUDWATCH

falseper impostazione predefinita su SageMaker. Imposta questa variabile true per consentire l'invio delle metriche predefinite di Triton ad Amazon. CloudWatch Se questa opzione è abilitata, sei responsabile dei CloudWatch costi quando le metriche vengono pubblicate sul tuo account.

Booleano

true, false

SAGEMAKER_TRITON_CLOUDWATCH_LOG_GROUP

Obbligatorio se hai abilitato la pubblicazione delle metriche su. CloudWatch

Stringa

<cloudwatch_log_group_name>

SAGEMAKER_TRITON_CLOUDWATCH_METRIC_NAMESPACE

Obbligatorio se hai abilitato la pubblicazione delle metriche su. CloudWatch

Stringa

<cloudwatch_metric_namespace>

SAGEMAKER_TRITON_ADDITIONAL_ARGS

Aggiunge eventuali argomenti aggiuntivi all'avvio del server Triton.

Stringa

<additional_args>