View a markdown version of this page

Acquisizione di dati per inferenza su HyperPod - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Acquisizione di dati per inferenza su HyperPod

Amazon SageMaker HyperPod Inference Data Capture ti consente di registrare i dati di richiesta e risposta di inferenza per il monitoraggio, il debug e il miglioramento del modello. Le richieste di inferenza fluiscono dall'endpoint SageMaker AI all'Application Load Balancer e quindi al pod del modello. Puoi abilitare l'acquisizione in modo indipendente a ogni livello, dal livello più esterno (Tier 1, endpoint SageMaker AI) al livello più profondo (Tier 3, model pod):

Livelli di acquisizione dei dati
Livello Punto di acquisizione Cosa viene catturato Percorso Amazon S3
Livello 1 SageMaker Endpoint AI Payload di input e output, campionamento, crittografia AWS KMS {s3Uri}/{hash}/sme/
Livello 2 Application Load Balancer Registri di accesso (percorsi di richiesta, IP client, latenze) {s3Uri}/{hash}/alb/
Livello 3 Modello pod Payload di input e output di inferenza con limiti configurabili di campionamento, buffering e dimensione del carico utile. Supporta la AWS KMS crittografia quando si fornisce una chiave. Acquisisce i dati più vicini al modello per la massima visibilità. {s3Uri}/{hash}/pod/

Il livello 1 acquisisce i payload completi al confine dell'API SageMaker AI Runtime e richiede la registrazione degli endpoint. Usa Tier 1 quando hai bisogno di compatibilità con SageMaker AI Model Monitor. Il livello 3 acquisisce i payload completi nel contenitore di inferenza con limiti configurabili di buffering, campionamento e payload e funziona senza la registrazione degli endpoint AI. SageMaker Usa Tier 3 quando hai bisogno della visibilità più profonda e più vicina al modello. Abilita qualsiasi combinazione: ogni livello esegue l'acquisizione in un punto diverso del flusso di richieste.

Tutti i livelli scrivono nel tuo bucket Amazon S3. Se non ne specifichi unos3Uri, per impostazione predefinita, i dati vengono archiviati nel bucket del certificato TLS con un prefisso. /data-capture/ All'interno del bucket, ogni implementazione ottiene un percorso univoco basato su un hash derivato dall'ARN del cluster, dallo spazio dei nomi, dal tipo CRD e dal nome della distribuzione. La stessa distribuzione genera sempre lo stesso prefisso, quindi gli artefatti di acquisizione dei dati da più invii CRD destinati alla stessa distribuzione fluiscono nella stessa sottocartella Amazon S3.

Per disabilitare l'acquisizione dei dati per un livello, imposta il relativo enabled campo su false o rimuovi la sezione relativa al livello dal tuo CRD. Per disabilitare l'acquisizione di tutti i dati, rimuovete completamente la dataCapture sezione.

Configurazione dell'acquisizione dei dati

Abilita l'acquisizione dei dati aggiungendo una dataCapture sezione al tuo InferenceEndpointConfig o JumpStartModel CRD. Il dataCapture blocco contiene una configurazione a livello singolo s3Uri (opzionale) e uno o più livelli. L'esempio seguente mostra la struttura generale con tutti e tre i livelli abilitati:

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(Facoltativo, String)

L'URI di Amazon S3 in cui vengono archiviati i dati acquisiti. Se non specificato, il bucket di certificati TLS viene utilizzato con un prefisso. /data-capture/ Lunghezza massima: 512 caratteri. Il bucket deve trovarsi nello stesso account del cluster.

Livello 1: acquisizione degli endpoint SageMaker AI

Il livello 1 utilizza l' SageMaker intelligenza artificiale nativa DataCaptureConfig per acquisire i payload di input e output di inferenza a livello di endpoint. Questo è il punto di acquisizione più esterno ed è compatibile con SageMaker AI Model Monitor per il monitoraggio automatizzato della qualità dei dati. Per ulteriori informazioni sull'acquisizione dei dati SageMaker AI, consulta Acquisire dati da endpoint in tempo reale.

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(Obbligatorio, booleano)

Impostato per true abilitare l'acquisizione di livello 1.

sagemakerEndpoint.initialSamplingPercentage(Facoltativo, numero intero, 0—100)

Percentuale di richieste di inferenza da acquisire. Impostazione predefinita: 100 (tutte le richieste vengono acquisite).

sagemakerEndpoint.captureOptions(Facoltativo, elenco)

Speciifica se acquisire il payload della richiesta di inferenza (Input), il payload della risposta di inferenza (Output) o entrambi. Ogni elemento ha un campo impostato su ocaptureMode. Input Output Impostazione predefinita: [Input, Output] (vengono acquisite sia la richiesta che la risposta). Massimo: 32 articoli.

sagemakerEndpoint.kmsKeyId(Opzionale, String)

ARN, ID chiave, nome alias o alias ARN di una AWS KMS chiave per crittografare i dati acquisiti a riposo. Quando specificato, i dati acquisiti vengono crittografati con questa chiave. Se omessi, i dati vengono crittografati con le impostazioni di crittografia dei bucket Amazon S3 predefinite. Lunghezza massima: 2048 caratteri.

sagemakerEndpoint.captureContentTypeHeader (facoltativo).

Specifica come interpretare il tipo di contenuto dei payload acquisiti. Supporti jsonContentTypes e matrici. csvContentTypes Massimo: 10 articoli ciascuno.

Livello 2: acquisizione del sistema di bilanciamento del carico

Il livello 2 abilita i log di accesso ALB, acquisendo i metadati delle richieste come gli IP dei client, i percorsi delle richieste e le latenze.

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

Impostato per true abilitare l'acquisizione di livello 2.

Nota

I registri di accesso ALB acquisiscono i metadati delle richieste, inclusi URL e parametri di query. Utilizzate i corpi delle richieste POST anziché i parametri di interrogazione per gli input sensibili. I log ALB non supportano la AWS KMS crittografia e utilizzano solo la crittografia predefinita di Amazon S3.

Livello 3: acquisizione del modello pod

Il livello 3 acquisisce i payload di input e output di inferenza a livello di pod del modello, fornendo la massima visibilità sul traffico di inferenza. Utilizzate questo livello quando avete bisogno di un controllo preciso sul buffering, sui limiti delle dimensioni del payload e sull'acquisizione più vicina al modello.

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(Obbligatorio, booleano)

Impostato per true abilitare l'acquisizione di livello 3.

modelPod.initialSamplingPercentage(Facoltativo, numero intero, 0—100)

Percentuale di richieste di inferenza da acquisire. Impostazione predefinita: 100 (tutte le richieste vengono acquisite).

modelPod.captureOptions(Facoltativo, elenco)

Speciifica se acquisire il payload della richiesta di inferenza (Input), il payload della risposta di inferenza (Output) o entrambi. Ogni elemento ha un campo impostato su ocaptureMode. Input Output Impostazione predefinita: [Input, Output] (vengono acquisite sia la richiesta che la risposta). Massimo: 32 articoli.

modelPod.kmsKeyId(Opzionale, String)

ARN, ID chiave, nome alias o alias ARN di una AWS KMS chiave per crittografare i dati acquisiti a riposo. Quando specificato, i dati acquisiti vengono crittografati con questa chiave. Se omessi, i dati vengono crittografati con le impostazioni di crittografia dei bucket Amazon S3 predefinite. Lunghezza massima: 2048 caratteri.

modelPod.bufferConfig.batchSize(Facoltativo, numero intero, 1—1000)

Numero di richieste di inferenza da raggruppare prima del flushing. Default: 10.

modelPod.bufferConfig.flushIntervalSeconds(Facoltativo, numero intero, 10—300)

Tempo massimo in secondi di conservazione di un lotto prima di essere svuotato, indipendentemente dal fatto che sia stata raggiunta la dimensione del lotto. Default: 60.

modelPod.payloadConfig.maxPayloadSizeKB (Facoltativo, Numero intero)

Dimensione massima del payload in KB per richiesta. I payload che superano questo limite vengono troncati. Se non è impostato, viene acquisito l'intero payload.

Aggiorna Addon

Prerequisiti: autentica e connettiti al tuo cluster EKS

Effettua l'autenticazione sul tuo account. AWS Prima di connetterti, raccogli il nome del cluster EKS, la regione e l' HyperPod ARN del cluster:

CLUSTER=EKS_CLUSTER_NAME REGION=REGION HP_ARN=HYPERPOD_CLUSTER_ARN

Connect al cluster EKS:

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

Aggiorna la configurazione del componente aggiuntivo:

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

Attendi che l'addon sia attivo, quindi distribuisci i modelli

Aggiornamento delle autorizzazioni per i cluster esistenti

Per abilitare l'acquisizione dei dati sulle tue distribuzioni HyperPod Inference, configura le seguenti autorizzazioni IAM.

  1. Ruolo di esecuzione dell'operatore di inferenza

    Aggiungi la seguente autorizzazione S3:

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

    Aggiungi il nome del tuo bucket se desideri utilizzare un bucket S3 personalizzato.

    Se utilizzi una chiave KMS gestita dal cliente, aggiungi anche:

    { "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. Ruolo del driver S3 CSI

    Aggiungi la seguente autorizzazione S3:

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

    Se utilizzi una chiave KMS gestita dal cliente, aggiungi anche:

    { "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. Politica S3 Bucket

    Aggiungi questa policy bucket solo se abiliti l'acquisizione dei dati del sistema di bilanciamento del carico (Tier 2) per consentire ad ALB di scrivere i log di accesso. Sostituiscilo $ACCOUNT_ID con l'ID del tuo account. AWS

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

Best practice

  • initialSamplingPercentageUtilizzalo per controllare il volume dei dati acquisiti. Iniziate con una percentuale di produzione inferiore e aumentatela secondo necessità.

  • Utilizza payloadConfig.maxPayloadSizeKB (Tier 3) per limitare le dimensioni dei payload acquisiti e controllare i costi di storage.

  • Specificate a kmsKeyId per Tier 1 e Tier 3 se il carico di lavoro richiede la crittografia a riposo con la vostra chiave. AWS KMS