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) :
| 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
truepour 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 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 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
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, 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
truepour 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 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 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_NAMEREGION=REGIONHP_ARN=HYPERPOD_CLUSTER_ARN
Connectez-vous à votre cluster EKS :
aws eks update-kubeconfig --regionREGION--nameEKS_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.
-
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. Remplacez
$ACCOUNT_IDpar 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
kmsKeyIdpour les niveaux 1 et 3 si votre charge de travail nécessite un chiffrement au repos avec votre propre AWS KMS clé.