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à.
Quando invii richieste a un endpoint di inferenza Amazon SageMaker AI, puoi scegliere di indirizzare le richieste a una sessione con stato. Durante una sessione con stato, invii più richieste di inferenza alla stessa istanza ML e l'istanza facilita la sessione.
Normalmente, quando richiami un endpoint di inferenza, Amazon SageMaker AI indirizza la tua richiesta a qualsiasi istanza ML tra le diverse istanze ospitate dall'endpoint. Questo comportamento di routing aiuta a ridurre al minimo la latenza distribuendo uniformemente il traffico di inferenza. Tuttavia, un risultato del comportamento di routing è che non è possibile prevedere quale istanza soddisferà la richiesta.
Questa imprevedibilità è una limitazione se intendi inviare la richiesta a un modello statico. Un modello stateful ha un contenitore che memorizza nella cache i dati contestuali che riceve dalle richieste di inferenza. Poiché i dati sono memorizzati nella cache, è possibile interagire con il contenitore inviando più richieste e, con ciascuna richiesta, non è necessario includere l'intero contesto dell'interazione. Invece, il modello attinge ai dati contestuali memorizzati nella cache per fornire informazioni sulla previsione.
I modelli Stateful sono ideali quando i dati di contesto per l'interazione sono molto grandi, ad esempio quando includono quanto segue:
-
File di testo di grandi dimensioni
-
Cronologie di chat lunghe
-
Dati multimediali (immagini, video e audio) per modelli multimodali
In questi casi, se si passa al contesto completo a ogni richiesta, la latenza di rete delle richieste viene rallentata e la reattività dell'applicazione diminuisce.
Prima che l'endpoint di inferenza possa supportare una sessione con stato, deve ospitare un modello con stato. L'implementazione del modello stateful è di tua proprietà. Amazon SageMaker AI ti consente di indirizzare le tue richieste a una sessione con stato, ma non fornisce modelli statici che puoi distribuire e utilizzare.
Per un esempio di notebook e contenitore modello che dimostra come vengono implementate le interazioni stateful, consulta. Esempio di implementazione
Per informazioni sull'implementazione di modelli stateful con TorchServe, consulta Stateful Inference
Come funzionano le sessioni stateful
Durante una sessione con stato, l'applicazione interagisce con il contenitore del modello nei seguenti modi.
Per avviare una sessione con stato
-
Per avviare una sessione con un modello stateful ospitato da Amazon SageMaker AI, il tuo client invia una
InvokeEndpoint
richiesta con l' SageMaker API. Per il parametro diSessionID
richiesta, il client dice all' SageMaker IA di iniziare una nuova sessione specificando il valore.NEW_SESSION
Nel payload della richiesta, il client dice anche al contenitore di iniziare una nuova sessione. La sintassi di questa dichiarazione varia in base all'implementazione del contenitore. Dipende da come il codice del contenitore gestisce il payload della richiesta.L'esempio seguente avvia una nuova sessione utilizzando l'SDK for Python (Boto3):
import boto3 import sagemaker import json payload = { "requestType":"NEW_SESSION" } payload = json.dumps(payload) smr = boto3.client( 'sagemaker-runtime', region_name="
region_name
", endpoint_url="endoint_url
") create_session_response = smr.invoke_endpoint( EndpointName="endpoint_name
", Body=payload
, ContentType="application/json", SessionId="NEW_SESSION") -
Il contenitore del modello gestisce la richiesta del cliente avviando una nuova sessione. Per la sessione, memorizza nella cache i dati che il client invia nel payload della richiesta. Inoltre, crea un ID di sessione e imposta un timestamp TTL (time to live). Questo timestamp indica quando scade la sessione. Il contenitore deve fornire l'ID di sessione e il timestamp ad Amazon SageMaker AI impostando la seguente intestazione HTTP nella risposta:
X-Amzn-SageMaker-Session-Id:
session_id
; Expires=yyyy
-mm
-ddThh
:mm
:ssZ
-
Nella risposta alla
InvokeEndpoint
richiesta, Amazon SageMaker AI fornisce l'ID di sessione e il timestamp TTL per ilNewSessionID
parametro di risposta.L'esempio seguente estrae l'ID di sessione dalla risposta:
invoke_endpoint
session_id = create_session_response['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-new-session-id'].split(';')[0]
Per continuare una sessione con stato
-
Per utilizzare la stessa sessione per una successiva richiesta di inferenza, il client invia un'altra richiesta.
InvokeEndpoint
Per il parametroSessionID
request, specifica l'ID della sessione. Con questo ID, SageMaker AI indirizza la richiesta alla stessa istanza ML in cui è stata avviata la sessione. Poiché il contenitore ha già memorizzato nella cache il payload della richiesta originale, il client non deve passare gli stessi dati di contesto presenti nella richiesta originale.L'esempio seguente continua una sessione passando l'ID di sessione con il parametro di
SessionId
richiesta:smr.invoke_endpoint( EndpointName="
endpoint_name
", Body=payload
, ContentType="application/json", SessionId=session_id)
Per chiudere una sessione con stato
-
Per chiudere una sessione, il cliente invia una richiesta finale
InvokeEndpoint
. Per il parametro diSessionID
richiesta, il client fornisce l'ID della sessione. Nel payload nel corpo della richiesta, il client afferma che il contenitore deve chiudere la sessione. La sintassi di questa dichiarazione varia in base all'implementazione del contenitore.L'esempio seguente chiude una sessione:
payload = { "requestType":"CLOSE" } payload = json.dumps(payload) closeSessionResponse = smr.invoke_endpoint( EndpointName="
endpoint_name
", Body=payload, ContentType="application/json", SessionId=session_id) -
Quando chiude la sessione, il contenitore restituisce l'ID di sessione ad SageMaker AI impostando la seguente intestazione HTTP nella risposta:
X-Amzn-SageMaker-Closed-Session-Id:
session_id
-
Nella risposta alla
InvokeEndpoint
richiesta del client, SageMaker AI fornisce l'ID di sessione per il parametro diClosedSessionId
risposta.L'esempio seguente estrae l'ID della sessione chiusa dalla
invoke_endpoint
risposta:closed_session_id = closeSessionResponse['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-closed-session-id'].split(';')[0]
Esempio di implementazione
Il seguente esempio di notebook mostra come implementare il contenitore per un modello stateful. Dimostra inoltre come un'applicazione client avvia, continua e chiude una sessione con stato.
LLaInferenza statica VA con AI SageMaker
Il notebook utilizza il modello LLaVA: Large Language and Vision Assistant