View a markdown version of this page

Captura de datos para hacer inferencias sobre HyperPod - Amazon SageMaker AI

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.

Captura de datos para hacer inferencias sobre HyperPod

La captura de datos de SageMaker HyperPod inferencia de Amazon le permite registrar los datos de solicitudes y respuestas de inferencia para la supervisión, la depuración y la mejora del modelo. Las solicitudes de inferencia fluyen desde el punto final de la SageMaker IA al Application Load Balancer y, después, al pod del modelo. Puede habilitar la captura de forma independiente en cada nivel, desde la capa más externa (nivel 1, punto final de la SageMaker IA) hasta la capa más profunda (nivel 3, módulo del modelo):

Niveles de captura de datos
Nivel Punto de captura ¿Qué se captura Ruta de Amazon S3
Nivel 1 SageMaker Punto final de IA Cargas útiles de entrada y salida, muestreo y cifrado AWS KMS {s3Uri}/{hash}/sme/
Nivel 2 Equilibrador de carga de aplicación Registros de acceso (rutas de solicitud, direcciones IP de clientes, latencias) {s3Uri}/{hash}/alb/
Nivel 3 Modelo: pod Infiera las cargas útiles de entrada y salida con límites configurables de tamaño de carga, almacenamiento en búfer y muestreo. Admite el AWS KMS cifrado cuando se proporciona una clave. Captura los datos más cercanos al modelo para obtener una visibilidad más profunda. {s3Uri}/{hash}/pod/

El nivel 1 captura todas las cargas útiles en el límite de la API SageMaker AI Runtime y requiere el registro de los puntos finales. Usa el nivel 1 cuando necesites compatibilidad con SageMaker AI Model Monitor. El nivel 3 captura todas las cargas útiles en el contenedor de inferencia con límites configurables de almacenamiento en búfer, muestreo y carga útil, y funciona sin necesidad de registrar los puntos finales de IA. SageMaker Utilice el nivel 3 cuando necesite la visibilidad más profunda más cercana al modelo. Habilite cualquier combinación: cada nivel captura en un punto diferente del flujo de solicitudes.

Todos los niveles se escriben en tu bucket de Amazon S3. Si no especificas ningunos3Uri, los datos se almacenan en el depósito de certificados TLS con un /data-capture/ prefijo de forma predeterminada. Dentro del bucket, cada implementación recibe una ruta única basada en un hash derivado del ARN del clúster, el espacio de nombres, el tipo de CRD y el nombre de la implementación. La misma implementación siempre genera el mismo prefijo, por lo que los artefactos de captura de datos de varios envíos de CRD dirigidos a la misma implementación fluyen a la misma subcarpeta de Amazon S3.

Para deshabilitar la captura de datos de un nivel, defina su enabled campo en false o elimine la sección de niveles de su CRD. Para deshabilitar toda la captura de datos, elimine la dataCapture sección por completo.

Configuración de la captura de datos

Habilite la captura de datos añadiendo una dataCapture sección a su InferenceEndpointConfig JumpStartModel CRD. El dataCapture bloque contiene una configuración de un solo nivel s3Uri (opcional) y uno o más niveles. El siguiente ejemplo muestra la estructura general con los tres niveles habilitados:

dataCapture: s3Uri: s3://my-capture-bucket/captures/ # Optional. Defaults to TLS bucket. sagemakerEndpoint: enabled: true # Tier 1 fields... loadBalancer: enabled: true modelPod: enabled: true # Tier 3 fields...
dataCapture.s3Uri(Opcional, cadena)

El URI de Amazon S3 donde se almacenan los datos capturados. Si no se especifica, el depósito de certificados TLS se utiliza con un /data-capture/ prefijo. Longitud máxima: 512 caracteres. El depósito debe estar en la misma cuenta que el clúster.

Nivel 1: captura de puntos finales mediante SageMaker IA

El nivel 1 utiliza la SageMaker IA nativa DataCaptureConfig para capturar las cargas útiles de entrada y salida de inferencias a nivel de punto final. Este es el punto de captura más externo y es compatible con SageMaker AI Model Monitor para un monitoreo automatizado de la calidad de los datos. Para obtener más información sobre la captura de datos SageMaker mediante IA, consulte Capturar datos desde un punto final en tiempo real.

sagemakerEndpoint: enabled: true initialSamplingPercentage: 100 kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id captureOptions: - captureMode: Input - captureMode: Output captureContentTypeHeader: jsonContentTypes: - application/json
sagemakerEndpoint.enabled(Obligatorio, booleano)

Configúrelo true en para habilitar la captura de nivel 1.

sagemakerEndpoint.initialSamplingPercentage(Opcional, entero, 0—100)

Porcentaje de solicitudes de inferencia que se van a capturar. Predeterminado: 100 (se capturan todas las solicitudes).

sagemakerEndpoint.captureOptions(Opcional, lista)

Especifica si se debe capturar la carga útil de la solicitud de inferencia (Input), la carga útil de la respuesta de inferencia (Output) o ambas. Cada elemento tiene un captureMode campo establecido en o. Input Output Predeterminado: [Input, Output] (se capturan tanto la solicitud como la respuesta). Máximo: 32 artículos.

sagemakerEndpoint.kmsKeyId(Opcional, cadena)

ARN, ID de clave, nombre de alias o alias ARN de una AWS KMS clave para cifrar los datos capturados en reposo. Cuando se especifica, los datos capturados se cifran con esta clave. Si se omite, los datos se cifran con la configuración predeterminada de cifrado de buckets de Amazon S3. Longitud máxima: 2048 caracteres.

sagemakerEndpoint.captureContentTypeHeader (opcional)

Especifica cómo interpretar el tipo de contenido de las cargas útiles capturadas. Soportes jsonContentTypes y csvContentTypes matrices. Máximo: 10 artículos cada uno.

Nivel 2: captura del balanceador de carga

El nivel 2 habilita los registros de acceso de ALB y captura los metadatos de las solicitudes, como las IP de los clientes, las rutas de solicitud y las latencias.

loadBalancer: enabled: true
loadBalancer.enabled(Obligatorio, booleano)

Configúrelo true en para habilitar la captura de nivel 2.

nota

Los registros de acceso de ALB capturan los metadatos de las solicitudes, incluidas las URL y los parámetros de consulta. Utilice los cuerpos de las solicitudes POST en lugar de los parámetros de consulta para las entradas confidenciales. Los registros de ALB no admiten el AWS KMS cifrado y solo utilizan el cifrado predeterminado de Amazon S3.

Nivel 3: captura de módulos de modelos

El nivel 3 captura las cargas útiles de entrada y salida de la inferencia a nivel del módulo del modelo, lo que proporciona la mayor visibilidad del tráfico de inferencia. Utilice este nivel cuando necesite un control detallado del almacenamiento en búfer, los límites de tamaño de la carga útil y la captura más cercana al modelo.

modelPod: enabled: true initialSamplingPercentage: 100 kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id captureOptions: - captureMode: Input - captureMode: Output bufferConfig: batchSize: 100 flushIntervalSeconds: 60 payloadConfig: maxPayloadSizeKB: 1024
modelPod.enabled(Obligatorio, booleano)

Configúrelo true en para habilitar la captura de nivel 3.

modelPod.initialSamplingPercentage(Opcional, entero, 0—100)

Porcentaje de solicitudes de inferencia que se van a capturar. Predeterminado: 100 (se capturan todas las solicitudes).

modelPod.captureOptions(Opcional, lista)

Especifica si se debe capturar la carga útil de la solicitud de inferencia (Input), la carga útil de la respuesta de inferencia (Output) o ambas. Cada elemento tiene un captureMode campo establecido en o. Input Output Predeterminado: [Input, Output] (se capturan tanto la solicitud como la respuesta). Máximo: 32 artículos.

modelPod.kmsKeyId(Opcional, cadena)

ARN, ID de clave, nombre de alias o alias ARN de una AWS KMS clave para cifrar los datos capturados en reposo. Cuando se especifica, los datos capturados se cifran con esta clave. Si se omite, los datos se cifran con la configuración predeterminada de cifrado de buckets de Amazon S3. Longitud máxima: 2048 caracteres.

modelPod.bufferConfig.batchSize(Opcional, entero, de 1 a 1000)

Número de solicitudes de inferencia que se agrupan antes de descargarlas. Predeterminado: 10.

modelPod.bufferConfig.flushIntervalSeconds(Opcional, entero, 10—300)

Tiempo máximo en segundos que se retiene un lote antes de vaciarlo, independientemente de si se ha alcanzado el tamaño del lote. Predeterminado: 60.

modelPod.payloadConfig.maxPayloadSizeKB (opcional, entero)

Tamaño máximo de carga útil en KB por solicitud. Las cargas útiles que superen este límite se truncan. Si no se establece, se captura toda la carga útil.

Actualizar el complemento

Requisitos previos: autentifíquese y conéctese a su clúster de EKS

Autenticate en tu cuenta. AWS Antes de conectarse, recopile el nombre, la región y el ARN HyperPod del clúster de EKS:

CLUSTER=EKS_CLUSTER_NAME REGION=REGION HP_ARN=HYPERPOD_CLUSTER_ARN

Conéctese a su clúster EKS:

aws eks update-kubeconfig --region REGION --name EKS_CLUSTER_NAME

Actualice la configuración del complemento:

VERSION=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.addonVersion' --output text) CURRENT_CONFIG=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.configurationValues' --output text) NEW_CONFIG=$(echo "$CURRENT_CONFIG" | jq --arg arn "$HP_ARN" '. + {hyperpodClusterArn: $arn}') aws eks update-addon \ --cluster-name $CLUSTER \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version "$VERSION" \ --configuration-values "$NEW_CONFIG" \ --resolve-conflicts OVERWRITE \ --region $REGION

Espere a que el complemento esté activo y, a continuación, implemente los modelos

Actualización de los permisos de los clústeres existentes

Para habilitar la captura de datos en las implementaciones de HyperPod Inference, configure los siguientes permisos de IAM.

  1. Función de ejecución del operador de inferencia

    Agregue el siguiente permiso de S3:

    { "Sid": "DataCaptureS3Access", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

    Añada el nombre de su depósito si desea utilizar un depósito S3 personalizado.

    Si utilizas una clave KMS administrada por el cliente, añade también:

    { "Sid": "DataCaptureKmsAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::hyperpod-tls*" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }
  2. Función de controlador CSI de S3

    Agregue el siguiente permiso de S3:

    { "Sid": "DataCaptureWriteAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

    Si usa una clave KMS administrada por el cliente, añada también:

    { "Sid": "DataCaptureKmsAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }
  3. Política de buckets de S3

    Agregue esta política de compartimentos solo si habilita la captura de datos del balanceador de carga (nivel 2) para permitir que ALB escriba registros de acceso. $ACCOUNT_IDSustitúyala por tu ID de AWS cuenta.

    { "Sid": "AllowALBAccessLogDelivery", "Effect": "Allow", "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:SourceAccount": "$ACCOUNT_ID" } } }

Prácticas recomendadas

  • Se usa initialSamplingPercentage para controlar el volumen de datos capturados. Comience con un porcentaje de producción más bajo e increméntelo según sea necesario.

  • Úselo payloadConfig.maxPayloadSizeKB (nivel 3) para limitar el tamaño de las cargas útiles capturadas y controlar los costos de almacenamiento.

  • Especifique una kmsKeyId para el nivel 1 y el nivel 3 si su carga de trabajo requiere un cifrado en reposo con su propia AWS KMS clave.