

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.

# Support pour vos propres conteneurs avec Amazon SageMaker Model Monitor
<a name="model-monitor-byoc-containers"></a>

Amazon SageMaker Model Monitor fournit un conteneur prédéfini capable d'analyser les données capturées à partir de points de terminaison ou de tâches de transformation par lots pour des ensembles de données tabulaires. Si vous voulez apporter votre propre conteneur, vous pouvez mettre à profit les points d’extension fournis par Model Monitor.

Ainsi, lorsque vous créez un `MonitoringSchedule`, Model Monitor lance les tâches de traitement. Par conséquent, le conteneur doit être conscient du contrat des tâches de traitement documenté dans la rubrique [Création de votre propre conteneur de traitement (scénario avancé)](build-your-own-processing-container.md). Model Monitor lance la tâche de traitement en votre nom selon le programme. Lors de l'appel, Model Monitor configure pour vous des variables d'environnement supplémentaires de sorte que votre conteneur ait suffisamment de contexte pour traiter les données correspondant à cette exécution particulière de la surveillance programmée. Pour plus d’informations sur les entrées de conteneur, consultez [Entrées du contrat de conteneur](model-monitor-byoc-contract-inputs.md).

Dans le conteneur, à l'aide des variables d'environnement et du contexte ci-dessus, vous pouvez maintenant analyser le jeu de données pour la période en cours dans votre code personnalisé. Une fois cette analyse terminée, vous pouvez choisir d'émettre vos rapports à télécharger dans un compartiment S3. Les rapports générés par le conteneur préconçu sont documentés dans [Sorties du contrat de conteneur](model-monitor-byoc-contract-outputs.md). Si vous souhaitez que la visualisation des rapports fonctionne dans SageMaker Studio, vous devez suivre le même format. Vous pouvez également choisir d’émettre des rapports entièrement personnalisés.

Vous pouvez également émettre CloudWatch des métriques depuis le conteneur en suivant les instructions de[CloudWatch Indicateurs pour apporter vos propres contenants](model-monitor-byoc-cloudwatch.md).

**Topics**
+ [Entrées du contrat de conteneur](model-monitor-byoc-contract-inputs.md)
+ [Sorties du contrat de conteneur](model-monitor-byoc-contract-outputs.md)
+ [CloudWatch Indicateurs pour apporter vos propres contenants](model-monitor-byoc-cloudwatch.md)

# Entrées du contrat de conteneur
<a name="model-monitor-byoc-contract-inputs"></a>

La plateforme Amazon SageMaker Model Monitor invoque votre code de conteneur selon un calendrier défini. Si vous avez choisi d'écrire votre propre code de conteneur, les variables d'environnement suivantes sont disponibles. Dans ce contexte, vous pouvez analyser le jeu de données actuel ou évaluer les contraintes si vous le souhaitez et émettre des métriques, le cas échéant.

Les variables d'environnement disponibles sont les mêmes pour les points de terminaison en temps réel et les tâches de transformation par lots, à l'exception de la variable `dataset_format`. Si vous utilisez un point de terminaison en temps réel, la variable `dataset_format` prend en charge les options suivantes :

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

Si vous utilisez une tâche de transformation par lots, `dataset_format` prend en charge les options suivantes :

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

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

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

L'exemple de code suivant montre le jeu complet des variables d'environnement disponibles pour votre code de conteneur (et utilise le format `dataset_format` d'un point de terminaison en temps réel).

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


| Nom du paramètre | Description | 
| --- | --- | 
| dataset\$1format |  Pour une tâche démarrée à partir d’un `MonitoringSchedule` basé sur un `Endpoint`, il s’agit de `sageMakerCaptureJson` avec les indices de capture `endpointInput` et/ou `endpointOutput`. Pour une tâche de transformation par lots, cela indique le format de données, qu'il s'agisse de CSV, JSON ou Parquet.  | 
| dataset\$1source |  Si vous utilisez un point de terminaison en temps réel, le chemin d'accès local dans lequel les données correspondant à la période de surveillance, comme spécifié par `start_time` et `end_time`, sont disponibles. Dans ce chemin d’accès, les données sont disponibles dans ` /{endpoint-name}/{variant-name}/yyyy/mm/dd/hh`. Nous téléchargeons parfois plus de données que ce qui est spécifié par les heures de début et de fin. C’est au code de conteneur d’analyser les données selon les besoins.  | 
| output\$1path |  Chemin d’accès local où écrire des rapports de sortie et d’autres fichiers. Vous devez spécifier ce paramètre dans la demande `CreateMonitoringSchedule` comme `MonitoringOutputConfig.MonitoringOutput[0].LocalPath`. Il est chargé dans le chemin d’accès `S3Uri` spécifié dans `MonitoringOutputConfig.MonitoringOutput[0].S3Uri`.  | 
| publish\$1cloudwatch\$1metrics |  Pour une tâche lancée par `CreateMonitoringSchedule`, ce paramètre est défini sur `Enabled`. Le conteneur peut choisir d'écrire le fichier de CloudWatch sortie Amazon à l'adresse`[filepath]`.  | 
| sagemaker\$1endpoint\$1name |  Si vous utilisez un point de terminaison en temps réel, le nom du `Endpoint` pour lequel cette tâche planifiée a été lancée.  | 
| sagemaker\$1monitoring\$1schedule\$1name |  Nom du `MonitoringSchedule` qui a lancé cette tâche.  | 
| \$1sagemaker\$1endpoint\$1datacapture\$1prefix\$1 |  Si vous utilisez un point de terminaison en temps réel, le préfixe spécifié dans le paramètre `DataCaptureConfig` du `Endpoint`. Le conteneur peut l'utiliser s'il a besoin d'accéder directement à plus de données que celles déjà téléchargées par l' SageMaker IA sur le `dataset_source` chemin.  | 
| start\$1time, end\$1time |  Fenêtre horaire pour l’analyse exécutée. Par exemple, pour une tâche planifiée pour s’exécuter à 5 h 00 UTC et une tâche qui s’exécute le 20/02/202, `start_time` : est 2020-02-19T06:00:00Z et `end_time` : est 2020-02-20T05:00:00Z  | 
| baseline\$1constraints: |  Chemin d’accès local du fichier de contrainte de référence spécifié dans ` BaselineConfig.ConstraintResource.S3Uri`. Ce paramètre est disponible uniquement si ce paramètre a été spécifié dans la demande `CreateMonitoringSchedule`.  | 
| baseline\$1statistics |  Chemin d’accès local au fichier de statistiques de référence spécifié dans `BaselineConfig.StatisticsResource.S3Uri`. Ce paramètre est disponible uniquement si ce paramètre a été spécifié dans la demande `CreateMonitoringSchedule`.   | 

# Sorties du contrat de conteneur
<a name="model-monitor-byoc-contract-outputs"></a>

Le conteneur peut analyser les données disponibles dans le chemin d’accès `*dataset_source*` et écrire des rapports dans le chemin d’accès dans `*output_path*.` Le code de conteneur peut écrire tous les rapports qui répondent à vos besoins.

Si vous utilisez la structure et le contrat suivants, certains fichiers de sortie sont traités spécialement par l' SageMaker IA dans la visualisation et l'API. Cela s’applique uniquement aux jeux de données tabulaires.

Fichiers de sortie pour données tabulaires


| Nom de fichier | Description | 
| --- | --- | 
| statistics.json |  Ce fichier doit comporter des statistiques en colonnes pour chaque fonction du jeu de données analysé. Le schéma de ce fichier est disponible dans la section suivante.  | 
| constraints.json |  Dans ce fichier, les contraintes sur les fonctions doivent être observées. Le schéma de ce fichier est disponible dans la section suivante.  | 
| constraints\$1violations.json |  Ce fichier doit contenir la liste des violations détectées dans ce jeu de données actif par rapport au fichier de statistiques et de contraintes de référence spécifié dans le chemin d'accès `baseline_constaints` et `baseline_statistics`.  | 

De plus, si la `publish_cloudwatch_metrics` valeur est le code du `"Enabled"` conteneur, vous pouvez émettre CloudWatch des métriques Amazon à cet endroit :`/opt/ml/output/metrics/cloudwatch`. Le schéma de ces fichiers est décrit dans les sections suivantes.

**Topics**
+ [Schéma des statistiques (fichier statistics.json)](model-monitor-byoc-statistics.md)
+ [Schéma des contraintes (fichier constraints.json)](model-monitor-byoc-constraints.md)

# Schéma des statistiques (fichier statistics.json)
<a name="model-monitor-byoc-statistics"></a>

Le schéma défini dans le fichier `statistics.json` spécifie les paramètres statistiques à calculer pour la référence et les données capturées. Il configure également le compartiment qui sera utilisé par [KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html), un croquis de quantiles très compact avec un schéma de compactage paresseux.

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

**Remarques**  
Les métriques spécifiées sont reconnues par l' SageMaker IA lors des modifications de visualisation ultérieures. Le conteneur peut émettre davantage de métriques si nécessaire.
Le [croquis KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html) est le croquis reconnu. Les conteneurs personnalisés peuvent écrire leur propre représentation, mais celle-ci ne sera pas reconnue par l' SageMaker IA dans les visualisations.
Par défaut, la distribution est matérialisée dans dix compartiments. Vous ne pouvez pas modifier cette valeur.

# Schéma des contraintes (fichier constraints.json)
<a name="model-monitor-byoc-constraints"></a>

Un fichier constraints.json est utilisé pour exprimer les contraintes qu'un jeu de données doit satisfaire. Les conteneurs Amazon SageMaker Model Monitor peuvent utiliser le fichier constraints.json pour évaluer les ensembles de données par rapport à ceux-ci. Les conteneurs préconçus permettent de générer automatiquement le fichier constraints.json pour un jeu de données de référence. Si vous apportez votre propre conteneur, vous pouvez lui attribuer des capacités similaires ou vous pouvez créer le fichier constraints.json d'une autre manière. Voici le schéma du fichier de contraintes utilisé par le conteneur préconçu. Les conteneurs personnalisés peuvent adopter le même format ou vous pouvez l’améliorer au besoin.

```
{
    "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'objet `monitoring_config` contient des options pour surveiller la tâche pour la fonctionnalité. Le tableau suivant décrit chaque option.

Surveillance des contraintes

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

# CloudWatch Indicateurs pour apporter vos propres contenants
<a name="model-monitor-byoc-cloudwatch"></a>

Si la `publish_cloudwatch_metrics` valeur se trouve `Enabled` sur la `Environment` carte du `/opt/ml/processing/processingjobconfig.json` fichier, le code du conteneur émet CloudWatch des métriques Amazon à cet emplacement :`/opt/ml/output/metrics/cloudwatch`. 

Le schéma de ce fichier est étroitement basé sur l' CloudWatch`PutMetrics`API. L’espace de noms n’est pas spécifié ici. La valeur par défaut est la suivante :
+ `For real-time endpoints: /aws/sagemaker/Endpoint/data-metrics`
+ `For batch transform jobs: /aws/sagemaker/ModelMonitoring/data-metrics`

Toutefois, vous pouvez spécifier des dimensions. Nous vous recommandons d'ajouter les dimensions suivantes au minimum :
+ `Endpoint` et `MonitoringSchedule` pour les points de terminaison en temps réel
+ `MonitoringSchedule` pour les tâches de transformation par lots

Les extraits de code JSON suivants montrent comment définir vos dimensions.

Pour un point de terminaison en temps réel, consultez l'extrait JSON suivant qui inclut les dimensions `Endpoint` et `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
}
```

Pour une tâche de transformation par lots, consultez l'extrait JSON suivant qui inclut la dimension `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
}
```