Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Sesiones impactantes con modelos de Amazon SageMaker
Cuando envía solicitudes a un punto final de SageMaker inferencia de Amazon, puede optar por enrutarlas a una sesión con estado. Durante una sesión con estado, envía varias solicitudes de inferencia a la misma instancia de ML y la instancia facilita la sesión.
Normalmente, cuando invocas un punto final de inferencia, Amazon SageMaker dirige tu solicitud a cualquier instancia de ML entre las múltiples instancias que aloja el punto final. Este comportamiento de enrutamiento ayuda a minimizar la latencia al distribuir uniformemente el tráfico de inferencia. Sin embargo, uno de los resultados del comportamiento de enrutamiento es que no puedes predecir qué instancia atenderá tu solicitud.
Esta imprevisibilidad es una limitación si pretendes enviar tu solicitud a un modelo con estado. Un modelo con estado tiene un contenedor que almacena en caché los datos de contexto que recibe de las solicitudes de inferencia. Como los datos se almacenan en caché, puedes interactuar con el contenedor enviando varias solicitudes y, con cada solicitud, no necesitas incluir todo el contexto de la interacción. En su lugar, el modelo se basa en los datos de contexto almacenados en caché para fundamentar su predicción.
Los modelos con estado son ideales cuando los datos de contexto de la interacción son muy grandes, por ejemplo, cuando incluyen lo siguiente:
-
Archivos de texto de gran tamaño
-
Largos historiales de chat
-
Datos multimedia (imágenes, vídeo y audio) para modelos multimodales
En estos casos, si pasa el contexto completo en cada solicitud, la latencia de red de las solicitudes se ralentiza y la capacidad de respuesta de la aplicación disminuye.
Para que el punto final de inferencia pueda admitir una sesión con estado, debe alojar un modelo con estado. Usted es el propietario de la implementación del modelo con estado. Amazon te SageMaker permite dirigir tus solicitudes a una sesión con estado, pero no proporciona modelos con estado que puedas implementar y usar.
Para ver un ejemplo de cuaderno y contenedor de modelos que demuestre cómo se implementan las interacciones con estado, consulte. Despliegue de ejemplo
Para obtener información sobre cómo implementar modelos con estado TorchServe, consulte Stateful Inference
Cómo funcionan las sesiones con estado
Durante una sesión con estado, la aplicación interactúa con el contenedor del modelo de las siguientes maneras.
Para iniciar una sesión con estado
-
Para iniciar una sesión con un modelo con estado hospedado por Amazon SageMaker, tu cliente envía una
InvokeEndpoint
solicitud con. SageMaker API Para el parámetro deSessionID
solicitud, el cliente indica SageMaker que debe iniciar una nueva sesión especificando el valorNEW_SESSION
. En la carga útil de la solicitud, el cliente también le indica al contenedor que inicie una nueva sesión. La sintaxis de esta declaración varía en función de la implementación del contenedor. Depende de cómo gestione el código de contenedor la carga útil de la solicitud.El siguiente ejemplo inicia una nueva sesión con Python (Boto3): SDK
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") -
Su contenedor modelo gestiona la solicitud de su cliente iniciando una nueva sesión. Para la sesión, almacena en caché los datos que el cliente envía en la carga útil de la solicitud. También crea un identificador de sesión y establece una marca temporal de tiempo de vida (TTL). Esta marca de tiempo indica cuándo caduca la sesión. El contenedor debe proporcionar el identificador de sesión y la marca de tiempo a Amazon SageMaker configurando el siguiente HTTP encabezado en la respuesta:
X-Amzn-SageMaker-Session-Id:
session_id
; Expires=yyyy
-mm
-ddThh
:mm
:ssZ
-
En la respuesta a la
InvokeEndpoint
solicitud, Amazon SageMaker proporciona el identificador de sesión y la TTL marca de tiempo del parámetro deNewSessionID
respuesta.El siguiente ejemplo extrae el ID de sesión de la
invoke_endpoint
respuesta:session_id = create_session_response['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-new-session-id'].split(';')[0]
Para continuar con una sesión con estado
-
Para usar la misma sesión para una solicitud de inferencia posterior, el cliente envía otra
InvokeEndpoint
solicitud. Para el parámetro deSessionID
solicitud, especifica el ID de la sesión. Con este ID, SageMaker enruta la solicitud a la misma instancia de ML en la que se inició la sesión. Como tu contenedor ya ha almacenado en caché la carga útil de la solicitud original, tu cliente no necesita pasar los mismos datos de contexto que estaban en la solicitud original.En el siguiente ejemplo, se continúa una sesión pasando el ID de sesión con el parámetro de
SessionId
solicitud:smr.invoke_endpoint( EndpointName="
endpoint_name
", Body=payload
, ContentType="application/json", SessionId=session_id)
Para cerrar una sesión con estado
-
Para cerrar una sesión, el cliente envía una
InvokeEndpoint
solicitud final. Para el parámetro deSessionID
solicitud, el cliente proporciona el ID de la sesión. En la carga útil del cuerpo de la solicitud, tu cliente indica que el contenedor debe cerrar la sesión. La sintaxis de esta declaración varía en función de la implementación del contenedor.El siguiente ejemplo cierra una sesión:
payload = { "requestType":"CLOSE" } payload = json.dumps(payload) closeSessionResponse = smr.invoke_endpoint( EndpointName="
endpoint_name
", Body=payload, ContentType="application/json", SessionId=session_id) -
Cuando cierra la sesión, el contenedor devuelve el identificador de sesión SageMaker al establecer el siguiente HTTP encabezado en la respuesta:
X-Amzn-SageMaker-Closed-Session-Id:
session_id
-
En la respuesta a la
InvokeEndpoint
solicitud del cliente, SageMaker proporciona el ID de sesión para el parámetro deClosedSessionId
respuesta.El siguiente ejemplo extrae el ID de sesión cerrada de la
invoke_endpoint
respuesta:closed_session_id = closeSessionResponse['ResponseMetadata']['HTTPHeaders']['x-amzn-sagemaker-closed-session-id'].split(';')[0]
Despliegue de ejemplo
El siguiente cuaderno de ejemplo muestra cómo implementar el contenedor para un modelo con estado. También muestra cómo una aplicación cliente inicia, continúa y cierra una sesión con estado.
LLaVAinferencia con estado con SageMaker
El cuaderno utiliza el LLaVA modelo Large Language and Vision Assistant