View a markdown version of this page

Capture de données pour inférence sur HyperPod - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Capture de données pour inférence sur HyperPod

La capture des données d' SageMaker HyperPod inférence Amazon vous permet d'enregistrer les demandes d'inférence et les données de réponse à des fins de surveillance, de débogage et d'amélioration des modèles. Les demandes d'inférence circulent du point de terminaison SageMaker AI vers l'Application Load Balancer, puis vers le model pod. Vous pouvez activer la capture indépendamment à chaque niveau, de la couche la plus externe (niveau 1, point de terminaison SageMaker AI) à la couche la plus profonde (niveau 3, model pod) :

Niveaux de capture de données
Tier Point de capture Ce qui est capturé Chemin Amazon S3
Niveau 1 SageMaker Point de terminaison IA Charges utiles d'entrée et de sortie, échantillonnage, chiffrement AWS KMS {s3Uri}/{hash}/sme/
Niveau 2 Application Load Balancer Journaux d'accès (chemins de demande, adresses IP des clients, latences) {s3Uri}/{hash}/alb/
Niveau 3 Modèle : pod Inférez les charges utiles d'entrée et de sortie avec des limites d'échantillonnage, de mise en mémoire tampon et de taille de charge utile configurables. Prend en charge AWS KMS le chiffrement lorsque vous fournissez une clé. Capture les données les plus proches du modèle pour une visibilité maximale. {s3Uri}/{hash}/pod/

Le niveau 1 capture les charges utiles complètes à la limite de l'API SageMaker AI Runtime et nécessite l'enregistrement du point de terminaison. Utilisez le niveau 1 lorsque vous avez besoin d'une compatibilité avec SageMaker AI Model Monitor. Le niveau 3 capture les charges utiles complètes dans le conteneur d'inférence avec des limites de mémoire tampon, d'échantillonnage et de charge utile configurables, et fonctionne sans SageMaker enregistrement des points de terminaison IA. Utilisez le niveau 3 lorsque vous avez besoin de la visibilité la plus profonde au plus près du modèle. Activez n'importe quelle combinaison : chaque niveau capture à un point différent du flux de demandes.

Tous les niveaux écrivent dans votre compartiment Amazon S3. Si vous ne spécifiez pas des3Uri, les données sont stockées dans le compartiment de certificats TLS sous un /data-capture/ préfixe par défaut. Dans le compartiment, chaque déploiement obtient un chemin unique basé sur un hachage dérivé de l'ARN du cluster, de l'espace de noms, du type CRD et du nom du déploiement. Le même déploiement génère toujours le même préfixe, de sorte que les données capturent des artefacts provenant de plusieurs soumissions CRD ciblant le même flux de déploiement vers le même sous-dossier Amazon S3.

Pour désactiver la capture de données pour un niveau, définissez son enabled champ sur false ou supprimez la section du niveau de votre CRD. Pour désactiver toute capture de données, supprimez complètement la dataCapture section.

Configuration de la capture de données

Activez la capture de données en ajoutant une dataCapture section à votre CRD InferenceEndpointConfig ou à votre JumpStartModel CRD. Le dataCapture bloc contient une configuration à un seul niveau s3Uri (facultatif) et une ou plusieurs configurations à un ou plusieurs niveaux. L'exemple suivant montre la structure globale avec les trois niveaux activés :

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(Facultatif, chaîne)

L'URI Amazon S3 où les données capturées sont stockées. S'il n'est pas spécifié, le compartiment de certificats TLS est utilisé avec un /data-capture/ préfixe. Longueur maximale : 512 caractères. Le bucket doit se trouver dans le même compte que le cluster.

Niveau 1 : capture des terminaux par SageMaker IA

Le niveau 1 utilise la technologie native de l' SageMaker IA DataCaptureConfig pour capturer les charges utiles d'inférence en entrée et en sortie au niveau du terminal. Il s'agit du point de capture le plus externe et il est compatible avec SageMaker AI Model Monitor pour une surveillance automatisée de la qualité des données. Pour plus d'informations sur la capture de données par SageMaker IA, consultez Capture de données à partir d'un point de terminaison en temps réel.

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(Obligatoire, booléen)

Réglez sur true pour activer la capture de niveau 1.

sagemakerEndpoint.initialSamplingPercentage(Facultatif, entier, 0 à 100)

Pourcentage de demandes d'inférence à capturer. Par défaut : 100 (toutes les demandes sont capturées).

sagemakerEndpoint.captureOptions(Facultatif, liste)

Spécifie s'il faut capturer la charge utile de la demande d'inférence (Input), la charge utile de la réponse d'inférence (Output) ou les deux. Chaque élément possède un captureMode champ défini sur Input ouOutput. Par défaut : [Input, Output] (la demande et la réponse sont capturées). Maximum : 32 articles.

sagemakerEndpoint.kmsKeyId(Facultatif, chaîne)

ARN, ID de clé, nom d'alias ou ARN d'alias d'une AWS KMS clé pour chiffrer les données capturées au repos. Lorsque cela est spécifié, les données capturées sont cryptées avec cette clé. En cas d'omission, les données sont chiffrées avec les paramètres de chiffrement du compartiment Amazon S3 par défaut. Longueur maximale : 2048 caractères.

sagemakerEndpoint.captureContentTypeHeader (facultatif)

Spécifie comment interpréter le type de contenu des charges utiles capturées. Supports jsonContentTypes et csvContentTypes matrices. Maximum : 10 articles chacun.

Niveau 2 : capture de l'équilibreur de charge

Le niveau 2 active les journaux d'accès ALB, capturant les métadonnées des demandes telles que les adresses IP des clients, les chemins de demande et les latences.

loadBalancer: enabled: true
loadBalancer.enabled(Obligatoire, booléen)

Réglez sur true pour activer la capture de niveau 2.

Note

Les journaux d'accès ALB capturent les métadonnées des demandes, notamment les URL et les paramètres de requête. Utilisez des corps de requête POST plutôt que des paramètres de requête pour les entrées sensibles. Les journaux ALB ne prennent pas en charge AWS KMS le chiffrement et utilisent uniquement le chiffrement par défaut d'Amazon S3.

Niveau 3 : capture du modèle par pod

Le niveau 3 capture les charges utiles d'inférence en entrée et en sortie au niveau du module de modélisation, offrant ainsi une visibilité optimale sur le trafic d'inférence. Utilisez ce niveau lorsque vous avez besoin d'un contrôle précis de la mise en mémoire tampon, des limites de charge utile et de la capture la plus proche du modèle.

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(Obligatoire, booléen)

Réglez sur true pour activer la capture de niveau 3.

modelPod.initialSamplingPercentage(Facultatif, entier, 0 à 100)

Pourcentage de demandes d'inférence à capturer. Par défaut : 100 (toutes les demandes sont capturées).

modelPod.captureOptions(Facultatif, liste)

Spécifie s'il faut capturer la charge utile de la demande d'inférence (Input), la charge utile de la réponse d'inférence (Output) ou les deux. Chaque élément possède un captureMode champ défini sur Input ouOutput. Par défaut : [Input, Output] (la demande et la réponse sont capturées). Maximum : 32 articles.

modelPod.kmsKeyId(Facultatif, chaîne)

ARN, ID de clé, nom d'alias ou ARN d'alias d'une AWS KMS clé pour chiffrer les données capturées au repos. Lorsque cela est spécifié, les données capturées sont cryptées avec cette clé. En cas d'omission, les données sont chiffrées avec les paramètres de chiffrement du compartiment Amazon S3 par défaut. Longueur maximale : 2048 caractères.

modelPod.bufferConfig.batchSize(Facultatif, entier, 1 à 1 000)

Nombre de demandes d'inférence à traiter par lots avant le rinçage. Valeur par défaut : 10.

modelPod.bufferConfig.flushIntervalSeconds(Facultatif, entier, 10—300)

Durée maximale en secondes pendant laquelle un lot est conservé avant d'être rincé, que la taille du lot ait été atteinte ou non. Valeur par défaut : 60.

modelPod.payloadConfig.maxPayloadSizeKB (facultatif, entier)

Taille maximale de la charge utile en Ko par demande. Les charges utiles dépassant cette limite sont tronquées. S'il n'est pas défini, la charge utile complète est capturée.

Mettre à jour l'addon

Conditions préalables : Authentifiez-vous et connectez-vous à votre cluster EKS

Authentifiez-vous sur votre AWS compte. Avant de vous connecter, collectez le nom du cluster EKS, la région et l'ARN HyperPod du cluster :

CLUSTER=EKS_CLUSTER_NAME REGION=REGION HP_ARN=HYPERPOD_CLUSTER_ARN

Connectez-vous à votre cluster EKS :

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

Mettez à jour la configuration de l'addon :

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

Attendez que l'addon soit actif, puis déployez les modèles

Mise à jour des autorisations pour les clusters existants

Pour activer la capture de données sur vos déploiements HyperPod d'inférence, configurez les autorisations IAM suivantes.

  1. Rôle d'exécution de l'opérateur d'inférence

    Ajoutez l'autorisation S3 suivante :

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

    Ajoutez le nom de votre compartiment si vous souhaitez utiliser un compartiment S3 personnalisé.

    Si vous utilisez une clé KMS gérée par le client, ajoutez également :

    { "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. Rôle du pilote S3 CSI

    Ajoutez l'autorisation S3 suivante :

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

    Si vous utilisez une clé KMS gérée par le client, ajoutez également :

    { "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. Politique relative aux compartiments S3

    Ajoutez cette politique de compartiment uniquement si vous activez la capture des données de l'équilibreur de charge (niveau 2) pour permettre à ALB d'écrire des journaux d'accès. Remplacez $ACCOUNT_ID par votre identifiant de AWS compte.

    { "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" } } }

Bonnes pratiques

  • initialSamplingPercentageÀ utiliser pour contrôler le volume de données capturées. Commencez par un pourcentage de production plus faible et augmentez-le selon les besoins.

  • Utilisez payloadConfig.maxPayloadSizeKB (niveau 3) pour limiter la taille des charges utiles capturées et contrôler les coûts de stockage.

  • Spécifiez a kmsKeyId pour les niveaux 1 et 3 si votre charge de travail nécessite un chiffrement au repos avec votre propre AWS KMS clé.