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.
Argomenti
Richiamare un endpoint multi-container con invocazione diretta
Per richiamare un endpoint multi-container con chiamata diretta, chiama invoke_endpointTargetContainerHostname
.
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. 4xx Per 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. ContainerLatency include 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 . OverheadLatency viene 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.