

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à.

# Support per i tuoi contenitori con Amazon SageMaker Model Monitor
<a name="model-monitor-byoc-containers"></a>

Amazon SageMaker Model Monitor offre un contenitore predefinito in grado di analizzare i dati acquisiti dagli endpoint o dai processi di trasformazione in batch per set di dati tabulari. Se si desidera utilizzare il proprio container, Model Monitor fornisce punti di estensione che è possibile sfruttare.

Dietro le quinte, quando crei un `MonitoringSchedule`, Model Monitor avvia il processo di elaborazione. Quindi il container deve essere a conoscenza del contratto del processo di elaborazione documentato nell'argomento [Come creare un container di elaborazione personalizzato (scenario avanzato)](build-your-own-processing-container.md). Tieni presente che Model Monitor avvia il processo di elaborazione per tuo conto in base alla pianificazione. Durante il richiamo, Model Monitor imposta ulteriori variabili di ambiente per l'utente in modo che il container abbia un contesto sufficiente per elaborare i dati per quella particolare esecuzione del monitoraggio pianificato. Per ulteriori informazioni sugli input del container, consulta [Input contratto container](model-monitor-byoc-contract-inputs.md).

Nel container, utilizzando le variabili/contesto di ambiente di cui sopra, è ora possibile analizzare il set di dati per il periodo corrente nel codice personalizzato. Una volta completata questa analisi, puoi scegliere di emettere i tuoi report e caricarli in un bucket S3. I report generati dal container predefinito sono documentati in [Output contratto container](model-monitor-byoc-contract-outputs.md). Se desideri che la visualizzazione dei report funzioni in SageMaker Studio, devi seguire lo stesso formato. È inoltre possibile scegliere di emettere report completamente personalizzati.

Puoi anche emettere CloudWatch metriche dal contenitore seguendo le istruzioni in. [CloudWatch Metriche per Bring Your Own Containers](model-monitor-byoc-cloudwatch.md)

**Topics**
+ [Input contratto container](model-monitor-byoc-contract-inputs.md)
+ [Output contratto container](model-monitor-byoc-contract-outputs.md)
+ [CloudWatch Metriche per Bring Your Own Containers](model-monitor-byoc-cloudwatch.md)

# Input contratto container
<a name="model-monitor-byoc-contract-inputs"></a>

La piattaforma Amazon SageMaker Model Monitor richiama il codice del contenitore in base a una pianificazione specificata. Se scegli di scrivere il tuo codice container, sono disponibili le seguenti variabili di ambiente. In questo contesto, è possibile analizzare il set di dati corrente o valutare i vincoli se si sceglie di emettere parametri, se applicabili.

Le variabili di ambiente disponibili sono le stesse per gli endpoint in tempo reale e i processi di trasformazione di batch, ad eccezione della variabile `dataset_format`. Se si utilizza un endpoint in tempo reale, la variabile `dataset_format` supporta le seguenti opzioni:

```
{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}
```

Se si utilizza un processo di trasformazione di batch, `dataset_format` supporta le seguenti opzioni:

```
{\"csv\": {\"header\": [\"true\",\"false\"]}}
```

```
{\"json\": {\"line\": [\"true\",\"false\"]}}
```

```
{\"parquet\": {}}
```

Il seguente esempio di codice mostra il set completo di variabili di ambiente disponibili per il codice del container (e utilizza il formato `dataset_format` per endpoint in tempo reale).

```
"Environment": {
 "dataset_format": "{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}",
 "dataset_source": "/opt/ml/processing/endpointdata",
 "end_time": "2019-12-01T16: 20: 00Z",
 "output_path": "/opt/ml/processing/resultdata",
 "publish_cloudwatch_metrics": "Disabled",
 "sagemaker_endpoint_name": "endpoint-name",
 "sagemaker_monitoring_schedule_name": "schedule-name",
 "start_time": "2019-12-01T15: 20: 00Z"
}
```

Parameters 


| Nome parametro | Description | 
| --- | --- | 
| dataset\$1format |  Per un processo avviato da un `MonitoringSchedule` sostenuto da un `Endpoint`, è `sageMakerCaptureJson` con gli indici di acquisizione `endpointInput` oppure `endpointOutput`, o entrambi. Per un processo di trasformazione di batch, specifica il formato dei dati, che sia CSV, JSON o Parquet.  | 
| dataset\$1source |  Se stai utilizzando un endpoint in tempo reale, il percorso locale in cui sono disponibili i dati corrispondenti al periodo di monitoraggio, come specificato da `start_time` e `end_time`. In questo percorso, i dati sono disponibili in ` /{endpoint-name}/{variant-name}/yyyy/mm/dd/hh`. A volte scarichiamo più di quanto specificato dagli orari di inizio e fine. Il codice container ha il compito di analizzare i dati come richiesto.  | 
| output\$1path |  Il percorso locale per scrivere report di output e altri file. È necessario specificare questo parametro nella richiesta `CreateMonitoringSchedule` come `MonitoringOutputConfig.MonitoringOutput[0].LocalPath`. Viene caricato nel percorso `S3Uri` specificato in `MonitoringOutputConfig.MonitoringOutput[0].S3Uri`.  | 
| publish\$1cloudwatch\$1metrics |  Per un processo avviato da `CreateMonitoringSchedule`, questo parametro è impostato su `Enabled`. Il contenitore può scegliere di scrivere il file CloudWatch di output di Amazon in`[filepath]`.  | 
| sagemaker\$1endpoint\$1name |  Se si utilizza un endpoint in tempo reale, il nome del `Endpoint` per cui è stato avviato il processo pianificato.  | 
| sagemaker\$1monitoring\$1schedule\$1name |  Il nome del `MonitoringSchedule` che ha avviato questo processo.  | 
| \$1sagemaker\$1endpoint\$1datacapture\$1prefix\$1 |  Se si utilizza un endpoint in tempo reale, il prefisso specificato nel parametro `DataCaptureConfig` del `Endpoint`. Il contenitore può utilizzarlo se ha bisogno di accedere direttamente a più dati di quelli già scaricati dall' SageMaker IA nel `dataset_source` percorso.  | 
| start\$1time, end\$1time |  La finestra temporale per l'esecuzione di questa analisi. Ad esempio, per un'attività la cui esecuzione è pianificata alle 05:00 UTC e per un'attività eseguita il 20/02/2020, `start_time` è 2020-02-19T 06:00:00 Z e `end_time` è 2020-02-20T 05:00:00 Z  | 
| baseline\$1constraints: |  Il percorso locale del file di vincolo della linea di base specificato in ` BaselineConfig.ConstraintResource.S3Uri`. Questo parametro è disponibile solo se è stato specificato nella richiesta `CreateMonitoringSchedule`.  | 
| baseline\$1statistics |  Il percorso locale del file di statistiche della linea di base specificato in `BaselineConfig.StatisticsResource.S3Uri`. Questo parametro è disponibile solo se è stato specificato nella richiesta `CreateMonitoringSchedule`.   | 

# Output contratto container
<a name="model-monitor-byoc-contract-outputs"></a>

Il container può analizzare i dati disponibili nel percorso `*dataset_source*` e scrivere report sul percorso in `*output_path*.`. Il codice container può scrivere tutti i report che soddisfano le tue esigenze.

Se utilizzi la struttura e il contratto seguenti, alcuni file di output vengono trattati in modo speciale dall' SageMaker intelligenza artificiale nella visualizzazione e nell'API. È valido solo per set di dati tabulari.

File di output per set di dati tabulari


| Nome del file | Description | 
| --- | --- | 
| statistics.json |  Si prevede che questo file abbia statistiche a colonne per ogni funzionalità del set di dati che viene analizzato. Lo schema di questo file è disponibile nella sezione successiva.  | 
| constraints.json |  Si prevede che questo file abbia vincoli sulle funzionalità osservate. Lo schema di questo file è disponibile nella sezione successiva.  | 
| constraints\$1violations.json |  Questo file deve contenere un elenco di violazioni rilevate in questo set di dati corrente rispetto al file di statistiche e vincoli della linea di base specificato nei percorsi `baseline_constaints` e `baseline_statistics`.  | 

Inoltre, se il `publish_cloudwatch_metrics` valore è il codice del `"Enabled"` contenitore, può emettere i CloudWatch parametri Amazon in questa posizione:. `/opt/ml/output/metrics/cloudwatch` Lo schema per questi file è descritto nelle sezioni seguenti.

**Topics**
+ [Schema per le statistiche (file statistics.json)](model-monitor-byoc-statistics.md)
+ [Schema per vincoli (file constraints.json)](model-monitor-byoc-constraints.md)

# Schema per le statistiche (file statistics.json)
<a name="model-monitor-byoc-statistics"></a>

Lo schema definito nel file `statistics.json` specifica i parametri statistici da calcolare per la linea di base e i dati acquisiti. Configura anche il bucket che deve essere utilizzato da [KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html), uno sketch di quantili molto compatto con schema di compattazione lento.

```
{
    "version": 0,
    # dataset level stats
    "dataset": {
        "item_count": number
    },
    # feature level stats
    "features": [
        {
            "name": "feature-name",
            "inferred_type": "Fractional" | "Integral",
            "numerical_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "mean": number,
                "sum": number,
                "std_dev": number,
                "min": number,
                "max": number,
                "distribution": {
                    "kll": {
                        "buckets": [
                            {
                                "lower_bound": number,
                                "upper_bound": number,
                                "count": number
                            }
                        ],
                        "sketch": {
                            "parameters": {
                                "c": number,
                                "k": number
                            },
                            "data": [
                                [
                                    num,
                                    num,
                                    num,
                                    num
                                ],
                                [
                                    num,
                                    num
                                ][
                                    num,
                                    num
                                ]
                            ]
                        }#sketch
                    }#KLL
                }#distribution
            }#num_stats
        },
        {
            "name": "feature-name",
            "inferred_type": "String",
            "string_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "distinct_count": number,
                "distribution": {
                    "categorical": {
                         "buckets": [
                                {
                                    "value": "string",
                                    "count": number
                                }
                          ]
                     }
                }
            },
            #provision for custom stats
        }
    ]
}
```

**Note**  
Le metriche specificate vengono riconosciute dall' SageMaker IA nelle successive modifiche di visualizzazione. Il container può emettere più parametri se necessario.
Lo [sketch KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html) è lo sketch riconosciuto. I contenitori personalizzati possono scrivere la propria rappresentazione, ma questa non verrà riconosciuta dall' SageMaker IA nelle visualizzazioni.
Per impostazione predefinita, la distribuzione è materializzata in 10 bucket. Non puoi modificare questo valore.

# Schema per vincoli (file constraints.json)
<a name="model-monitor-byoc-constraints"></a>

Il file constraints.json viene usato per esprimere i vincoli che un set di dati deve soddisfare. I contenitori Amazon SageMaker Model Monitor possono utilizzare il file constraints.json per valutare i set di dati. I container esistenti offrono la possibilità di generare automaticamente il file constraints.json per un set di dati della baseline. Se porti il tuo container, puoi dotarlo di abilità simili o puoi creare il file constraints.json in altro modo. Ecco lo schema per il file di vincolo utilizzato dal container esistente. Portare i propri container consente di adottare lo stesso formato o migliorarlo in base alle necessità.

```
{
    "version": 0,
    "features":
    [
        {
            "name": "string",
            "inferred_type": "Integral" | "Fractional" | 
                    | "String" | "Unknown",
            "completeness": number,
            "num_constraints":
            {
                "is_non_negative": boolean
            },
            "string_constraints":
            {
                "domains":
                [
                    "list of",
                    "observed values",
                    "for small cardinality"
                ]
            },
            "monitoringConfigOverrides":
            {}
        }
    ],
    "monitoring_config":
    {
        "evaluate_constraints": "Enabled",
        "emit_metrics": "Enabled",
        "datatype_check_threshold": 0.1,
        "domain_content_threshold": 0.1,
        "distribution_constraints":
        {
            "perform_comparison": "Enabled",
            "comparison_threshold": 0.1,
            "comparison_method": "Simple"||"Robust",
            "categorical_comparison_threshold": 0.1,
            "categorical_drift_method": "LInfinity"||"ChiSquared"
        }
    }
}
```

L'oggetto `monitoring_config` contiene opzioni per il monitoraggio del processo relativo alla funzionalità. Nella tabella seguente è descritta ciascuna opzione.

Vincoli di monitoraggio

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/model-monitor-byoc-constraints.html)

# CloudWatch Metriche per Bring Your Own Containers
<a name="model-monitor-byoc-cloudwatch"></a>

Se il `publish_cloudwatch_metrics` valore è `Enabled` nella `Environment` mappa del `/opt/ml/processing/processingjobconfig.json` file, il codice del contenitore emette i CloudWatch parametri Amazon in questa posizione:. `/opt/ml/output/metrics/cloudwatch` 

Lo schema di questo file è strettamente basato sull' CloudWatch`PutMetrics`API. Lo spazio dei nomi non è specificato qui. Il valore predefinito è riportato di seguito:
+ `For real-time endpoints: /aws/sagemaker/Endpoint/data-metrics`
+ `For batch transform jobs: /aws/sagemaker/ModelMonitoring/data-metrics`

Tuttavia, è possibile specificare le dimensioni. Si consiglia di aggiungere almeno le seguenti dimensioni:
+ `Endpoint` e `MonitoringSchedule` per gli endpoint in tempo reale
+ `MonitoringSchedule` per processi di trasformazione di batch

I seguenti snippet di codice JSON mostrano come impostare le dimensioni.

Per un endpoint in tempo reale, consulta il seguente snippet di codice JSON che include le dimensioni `Endpoint` e `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"Endpoint","Value":"endpoint_0"},{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```

Per un processo di trasformazione di batch, consulta il seguente snippet di codice JSON che include la dimensione `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```