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 à des fins d'inférence sur HyperPod
Amazon SageMaker HyperPod Inference Data Capture vous permet d'enregistrer les données de demande et de réponse d'inférence à des fins de surveillance, de débogage et d'amélioration du modèle. Les demandes d'inférence circulent du point de terminaison de l' SageMaker IA vers l'équilibreur de charge d'application, puis vers le module de modèle. Vous pouvez activer la capture indépendamment à chaque niveau, de la couche la plus externe (niveau 1, point de terminaison de l' SageMaker IA) à la couche la plus profonde (niveau 3, module de modèle) :
| Tier | Point de capture | Ce qui est capturé | Parcours 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 de pod | Inferencez les charges utiles d'entrée et de sortie avec des limites configurables d'échantillonnage, de mise en mémoire tampon et de taille de charge utile. Supporte AWS KMS le chiffrement lorsque vous fournissez une clé. Capture les données les plus proches du modèle pour une visibilité optimale. | {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 des terminaux. 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 mise en mémoire tampon, d'échantillonnage et de charge utile configurables, et fonctionne sans SageMaker enregistrement des points de terminaison AI. Utilisez le niveau 3 lorsque vous avez besoin de la visibilité la plus profonde la plus proche du modèle. Activez n'importe quelle combinaison : chaque niveau capture à un moment 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 des artefacts de capture de données 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 toutes les captures 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 InferenceEndpointConfig JumpStartModel CRD. Le dataCapture bloc contient une configuration à un seul niveau s3Uri (facultatif) et à 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 dans lequel les données capturées sont stockées. S'il n'est pas spécifié, le bucket 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 l' SageMaker IA native DataCaptureConfig pour capturer les charges utiles d'entrée et de sortie d'inférence au niveau des terminaux. 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, voir Capture de données depuis 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
truepour activer la capture de niveau 1.sagemakerEndpoint.initialSamplingPercentage(Facultatif, entier, 0—100)Pourcentage de demandes d'inférence à saisir. 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 uncaptureModechamp défini surInputouOutput. 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 par défaut du compartiment Amazon S3. Longueur maximale : 2048 caractères.
sagemakerEndpoint.captureContentTypeHeader(facultatif)Spécifie comment interpréter le type de contenu des charges utiles capturées. Supports
jsonContentTypesetcsvContentTypesmatrices. 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
truepour activer la capture de niveau 2.
Note
Les journaux d'accès ALB capturent les métadonnées des demandes, y compris 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 cryptage par défaut d'Amazon S3.
Niveau 3 : capture d'un module de modélisation
Le niveau 3 capture les charges utiles d'entrée et de sortie d'inférence au niveau du module du modèle, offrant ainsi la meilleure visibilité 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 taille de charge utile et de la capture au plus près 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
truepour activer la capture de niveau 3.modelPod.initialSamplingPercentage(Facultatif, entier, 0—100)Pourcentage de demandes d'inférence à saisir. 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 uncaptureModechamp défini surInputouOutput. 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 par défaut du compartiment Amazon S3. Longueur maximale : 2048 caractères.
modelPod.bufferConfig.batchSize(Facultatif, entier, 1 à 1 000)Nombre de demandes d'inférence à traiter par lots avant le vidage. 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 vidé, que la taille du lot soit 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. Si ce paramètre n'est pas défini, l'intégralité de la charge utile est capturée.
Mettre à jour l'addon
Prérequis : Authentifiez-vous et connectez-vous à votre cluster EKS
Authentifiez-vous sur votre AWS compte. Avant de vous connecter, collectez le nom, la région et l'ARN HyperPod du cluster EKS :
CLUSTER=EKS_CLUSTER_NAMEREGION=REGIONHP_ARN=HYPERPOD_CLUSTER_ARN
Connectez-vous à votre cluster EKS :
aws eks update-kubeconfig --regionREGION--nameEKS_CLUSTER_NAME
Mettez à jour la configuration du module complémentaire :
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
Mettre à jour les 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.
-
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}" } } } -
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}" } } } -
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.
$ACCOUNT_IDRemplacez-le 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
-
Permet
initialSamplingPercentagede contrôler le volume de données capturées. Commencez par réduire le pourcentage de production et augmentez-le si nécessaire. -
À utiliser
payloadConfig.maxPayloadSizeKB(niveau 3) pour limiter la taille des charges utiles capturées et contrôler les coûts de stockage. -
Spécifiez a
kmsKeyIdpour les niveaux 1 et 3 si votre charge de travail nécessite un chiffrement au repos avec votre propre AWS KMS clé.