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 dei modelli. Le richieste di inferenza fluiscono dall'endpoint SageMaker AI all'Application Load Balancer e quindi al pod del modello. È possibile abilitare l'acquisizione in modo indipendente a ogni livello, dal livello più esterno (Tier 1, endpoint SageMaker AI) al livello più profondo (Tier 3, pod del modello):

Livelli di acquisizione 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 dei client, latenze) {s3Uri}/{hash}/alb/
Livello 3 Pod modello Payload di input e output di inferenza con limiti di campionamento, buffering e dimensione del payload configurabili. 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 limite 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 di buffering, campionamento e payload configurabili e funziona senza registrazione degli endpoint AI. SageMaker Usa il livello 3 quando hai bisogno della visibilità più profonda più vicina al modello. Abilita qualsiasi combinazione: ogni livello viene acquisito in un punto diverso del flusso di richieste.

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

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

Configurazione dell'acquisizione dei dati

Abilita l'acquisizione dei dati aggiungendo una dataCapture sezione al tuo InferenceEndpointConfig o al tuo JumpStartModel CRD. Il dataCapture blocco contiene una configurazione singola s3Uri (opzionale) e una o più configurazioni a 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 Amazon S3 in cui sono 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 automatico della qualità dei dati. Per ulteriori informazioni sull'acquisizione dei dati SageMaker AI, consulta Acquisizione di 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. Predefinito: 100 (tutte le richieste vengono acquisite).

sagemakerEndpoint.captureOptions(Facoltativo, Elenco)

Specifica se acquisire il payload della richiesta di inferenza (Input), il payload della risposta all'inferenza (Output) o entrambi. Ogni elemento ha un campo impostato su ocaptureMode. Input Output Predefinito: [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 del 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 tramite Load Balancer

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

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

Impostato per true abilitare l'acquisizione di livello 2.

Nota

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

Livello 3: Model pod capture

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 dettagliato sul buffering, sui limiti di dimensione 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(Opzionale, numero intero, 0—100)

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

modelPod.captureOptions(Facoltativo, Elenco)

Specifica se acquisire il payload della richiesta di inferenza (Input), il payload della risposta all'inferenza (Output) o entrambi. Ogni elemento ha un campo impostato su ocaptureMode. Input Output Predefinito: [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 del bucket Amazon S3 predefinite. Lunghezza massima: 2048 caratteri.

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

Numero di richieste di inferenza da inviare in batch prima dello svuotamento. Default: 10.

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

Tempo massimo in secondi di conservazione di un batch 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 componente aggiuntivo

Prerequisiti: autenticarsi e connettersi al cluster EKS

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

CLUSTER=EKS_CLUSTER_NAME REGION=REGION HP_ARN=HYPERPOD_CLUSTER_ARN

Connettiti al tuo cluster EKS:

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

Aggiorna la configurazione dell'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

Attendi che l'Addon sia attivo e quindi distribuisci i modelli

Aggiornamento delle autorizzazioni per i cluster esistenti

Per abilitare l'acquisizione dei dati sulle tue implementazioni 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 CSI S3

    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 load balancer (Tier 2) per consentire ad ALB di scrivere i log di accesso. Sostituisci $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

  • initialSamplingPercentageUsalo per controllare il volume dei dati acquisiti. Inizia con una percentuale di produzione inferiore e aumenta se necessario.

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

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