Usare un endpoint multi-container con invocazione diretta - 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à.

Usare un endpoint multi-container con invocazione diretta

SageMaker Gli endpoint multi-container consentono ai clienti di implementare più container per implementare modelli diversi su un endpoint. SageMaker È possibile ospitare fino a 15 container di inferenza diversi su un singolo endpoint. Utilizzando l'invocazione diretta, è possibile inviare una richiesta a un container di inferenza specifico ospitato su un endpoint multi-container.

Richiamare un endpoint multi-container con invocazione diretta

Per richiamare un endpoint multi-container con chiamata diretta, chiama invoke_endpoint come richiameresti qualsiasi altro endpoint e specifica quale container desideri richiamare utilizzando il parametro TargetContainerHostname.

L'esempio seguente richiama direttamente secondContainer di un endpoint multi-container per ottenere una previsione.

import boto3 runtime_sm_client = boto3.Session().client('sagemaker-runtime') response = runtime_sm_client.invoke_endpoint( EndpointName ='my-endpoint', ContentType = 'text/csv', TargetContainerHostname='secondContainer', Body = body)

Per ogni richiesta di chiamata diretta a un endpoint multi-container, solo il container con TargetContainerHostname elabora la richiesta di chiamata. Se esegui una qualsiasi delle seguenti operazioni, otterrai degli errori di convalida:

  • Specificare un TargetContainerHostname che non esiste nell'endpoint

  • Non specificare un valore per TargetContainerHostname in una richiesta a un endpoint configurato per la chiamata diretta

  • Specificare un valore per TargetContainerHostname in una richiesta a un endpoint non configurato per la chiamata diretta.

Sicurezza con endpoint multi-container con invocazione diretta

Per gli endpoint multi-container con invocazione diretta, sono disponibili più container ospitati in un'unica istanza condividendo memoria e un volume di archiviazione. È tua responsabilità utilizzare contenitori sicuri, mantenere la corretta mappatura delle richieste ai contenitori di destinazione e fornire agli utenti l'accesso corretto ai contenitori di destinazione. SageMakerutilizza i ruoli IAM per fornire policy basate sull'identità IAM da utilizzare per specificare se l'accesso a una risorsa è consentito o negato a quel ruolo e in quali condizioni. Per ulteriori informazioni sui ruoli IAM, consulta Ruoli IAM nella AWS Identity and Access Management Guida per l'utente di IAM. Per informazioni sulle policy basate sull’identità, consulta Policy basate sulle identità e policy basate su risorse.

Per impostazione predefinita, un principale IAM con autorizzazioni InvokeEndpoint su un endpoint multi-container con invocazione diretta può richiamare qualsiasi container all'interno dell'endpoint con il nome dell'endpoint specificato al momento della chiamata a invoke_endpoint. Se devi limitare l'accesso invoke_endpoint a un set limitato di container all'interno di un endpoint multi-container, usa la chiave di condizione IAM sagemaker:TargetContainerHostname. Le seguenti policy mostrano come limitare le chiamate a container specifici all'interno di un endpoint.

Il criterio seguente consente le richieste invoke_endpoint solo quando il valore del campo TargetContainerHostname corrisponde a una delle espressioni regolari specificate.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["customIps*", "common*"] } } } ] }

La policy seguente nega le richieste invoke_endpoint quando il valore del campo TargetContainerHostname corrisponde a una delle espressioni regolari specificate nella dichiarazione Deny.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["*"] } } }, { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Deny", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["special*"] } } } ] }

Per informazioni sulle chiavi di SageMaker condizione, consulta Condition Keys for SageMaker nella Guida per l'AWS Identity and Access Management utente.

Parametri per endpoint multi-container con invocazione diretta

Oltre alle metriche degli endpoint elencate inMonitora Amazon SageMaker con Amazon CloudWatch, fornisce SageMaker anche metriche per contenitore.

Le metriche per contenitore per endpoint multi-contenitore con invocazione diretta si trovano e sono suddivise in due namespace: e. CloudWatch AWS/SageMaker aws/sagemaker/Endpoints Lo spazio dei nomi AWS/SageMaker include parametri relativi alle chiamate e lo spazio dei nomi aws/sagemaker/Endpoints include parametri di utilizzo della memoria e della CPU.

La tabella seguente elenca i parametri di container per endpoint multi-contenitore con invocazione diretta. Tutti i parametri utilizzano la dimensione [EndpointName, VariantName, ContainerName], che filtra i parametri su un endpoint specifico, per una variante specifica e corrispondente a un container specifico. Questi parametri condividono gli stessi nomi dei parametri utilizzati per le pipeline di inferenza, ma a livello di container [EndpointName, VariantName, ContainerName].

Nome parametro Descrizione Dimensione NameSpace
Invocations Il numero di richieste InvokeEndpoint inviate a un container all'interno di un endpoint. Per ottenere il numero totale di richieste inviate a quel container, utilizza la statistica Sum. Unità: nessuna statistica valida: Sum, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation4XX Errors Numero di richieste InvokeEndpoint per cui il modello ha restituito un codice di risposta HTTP 4xx per un container specifico. 4xxPer ogni 1 risposta, SageMaker invia un. Unità: nessuna statistica valida: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation5XX Errors Numero di richieste InvokeEndpoint per cui il modello ha restituito un codice di risposta HTTP 5xx per un container specifico. Per ogni 5xx risposta, SageMaker invia un1. Unità: nessuna statistica valida: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
ContainerLatency Il tempo impiegato dal contenitore di destinazione per rispondere dal punto di vista SageMaker. ContainerLatencyinclude il tempo impiegato per inviare la richiesta, recuperare la risposta dal contenitore del modello e completare l'inferenza nel contenitore. Unità: microsecondi statistiche valide: Average, Sum, Min, Max, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
OverheadLatency Il tempo aggiunto al tempo impiegato per rispondere a una richiesta del client in termini di sovraccarico SageMaker . OverheadLatencyviene misurato dal momento in cui SageMaker riceve la richiesta fino a quando questa restituisce una risposta al client, meno il. ModelLatency La latenza di gestione può variare in base alle dimensioni di payload di richiesta e risposta, frequenza delle richieste e autenticazione o autorizzazione della richiesta, tra gli altri fattori. Unità: microsecondi statistiche valide: Average, Sum, Min, Max, `Conteggio di esempio ` EndpointName, VariantName, ContainerName AWS/SageMaker
CPUUtilization Percentuale di unità CPU utilizzate da ciascun container in esecuzione su un'istanza. Il valore varia da 0% a 100% ed è moltiplicato per il numero di CPU. Ad esempio, se ci sono quattro CPU, CPUUtilization può variare da 0% a 400%. Per gli endpoint con chiamata diretta, il numero di parametri di utilizzo della CPU è uguale al numero di container in quell'endpoint. Unità: percentuale EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints
MemoryUtilizaton Percentuale di memoria utilizzata da ciascun container in esecuzione su un'istanza. Questo valore è compreso tra 0% e 100%. Analogamente all'utilizzo della CPU, negli endpoint con invocazione diretta, il numero di MemoryUtilization metriche è uguale al numero di contenitori in quell'endpoint. Unità: percentuale EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints

Tutti i parametri della tabella precedente sono specifici per gli endpoint multi-container con invocazione diretta. Oltre a questi parametro speciali per container, esistono anche parametri a livello di variante con dimensione [EndpointName, VariantName] per tutti i parametri previsti nella tabella ContainerLatency.

Endpoint multi-container con scalabilità automatica

Se desideri configurare la scalabilità automatica per un endpoint multi-container utilizzando il parametro InvocationsPerInstance, ti consigliamo che il modello in ogni container mostri un utilizzo e una latenza della CPU simili su ogni richiesta di inferenza. Questa soluzione è consigliata perché se il traffico verso l'endpoint multi-container passa da un modello a basso utilizzo della CPU a un modello ad alto utilizzo della CPU, ma il volume complessivo delle chiamate rimane lo stesso, l'endpoint non si scalerà orizzontalmente e potrebbero non esserci abbastanza istanze per gestire tutte le richieste verso il modello ad alto utilizzo della CPU. Per informazioni sugli endpoint di scalabilità automatica, consulta Ridimensiona automaticamente SageMaker i modelli Amazon.

Risolvere i problemi relativi agli endpoint multi-container

Le sezioni seguenti possono aiutarti a risolvere gli errori con endpoint multi-container.

Errori di controllo dell'integrità

Con più container, la memoria degli endpoint e la CPU sono sottoposte a una maggiore pressione durante la creazione degli endpoint. In particolare, i parametri MemoryUtilization e CPUUtilization sono più elevati rispetto agli endpoint a container singolo, poiché la pressione di utilizzo è proporzionale al numero di container. Per questo motivo, ti consigliamo di scegliere tipi di istanza con memoria e CPU sufficienti per assicurarti che sull'istanza ci sia abbastanza memoria per caricare tutti i modelli (la stessa guida si applica alla distribuzione di una pipeline di inferenza). In caso contrario, la creazione dell'endpoint potrebbe fallire con un errore del tipo XXX did not pass the ping health check.

Etichetta =true Docker mancante accept-bind-to-port

I container in endpoint multi-container restano in ascolto sulla porta specificata nella variabile di ambiente SAGEMAKER_BIND_TO_PORT anziché la porta 8080. Quando un contenitore viene eseguito in un endpoint con più contenitori, fornisce SageMaker automaticamente questa variabile di ambiente al contenitore. Se questa variabile di ambiente non è presente, i container utilizzano la porta 8080 per impostazione predefinita. Per indicare che il container soddisfa questo requisito, utilizza il comando seguente per aggiungere un'etichetta al dockerfile:

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

Altrimenti, verrà visualizzato un messaggio di errore come Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).

Se il container deve essere in ascolto su una seconda porta, scegli una porta nell'intervallo specificato dalla variabile di ambiente SAGEMAKER_SAFE_PORT_RANGE. Specificate il valore come intervallo inclusivo nel formato XXXX - YYYY, dove XXXX e YYYY sono numeri interi a più cifre. SageMaker fornisce questo valore automaticamente quando si esegue il contenitore in un endpoint con più contenitori.