

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
<a name="sagemaker-hyperpod-model-deployment-data-capture"></a>

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 uno`s3Uri`, 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
<a name="sagemaker-hyperpod-model-deployment-data-capture-config"></a>

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
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier1"></a>

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. ](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html)

```
    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 o`captureMode`. `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
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier2"></a>

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
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier3"></a>

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 o`captureMode`. `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
<a name="sagemaker-hyperpod-model-deployment-update-addon"></a>

**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
<a name="sagemaker-hyperpod-model-deployment-data-capture-iam"></a>

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

1. **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}"
           }
       }
   }
   ```

1. **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
<a name="sagemaker-hyperpod-model-deployment-data-capture-perf"></a>
+ `initialSamplingPercentage`Usalo 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.