

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.

# Planification des tâches de surveillance
<a name="model-monitor-scheduling"></a>

Amazon SageMaker Model Monitor vous permet de surveiller les données collectées à partir de vos points de terminaison en temps réel. Vous pouvez surveiller vos données selon une planification récurrente ou les surveiller une fois, immédiatement. Vous pouvez créer une planification de surveillance à l’aide de l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html).

Grâce à un calendrier de surveillance, l' SageMaker IA peut commencer à traiter des tâches pour analyser les données collectées au cours d'une période donnée. Dans le cadre de la tâche de traitement, l' SageMaker IA compare l'ensemble de données pour l'analyse en cours avec les statistiques de base et les contraintes que vous fournissez. L' SageMaker IA génère ensuite un rapport de violations. De plus, CloudWatch des métriques sont émises pour chaque caractéristique analysée.

SageMaker L'IA fournit un conteneur prédéfini pour effectuer des analyses sur des ensembles de données tabulaires. Vous pouvez également choisir d’apporter votre propre conteneur comme indiqué dans la rubrique [Support pour vos propres conteneurs avec Amazon SageMaker Model Monitor](model-monitor-byoc-containers.md).

Vous pouvez créer un calendrier de surveillance des modèles pour votre point de terminaison en temps réel ou votre tâche de transformation par lots. Comparez le trafic en temps réel ou les entrées de tâches par lots par rapport aux ressources de référence (contraintes et statistiques). 

**Example affectations de référence**  
Dans l’exemple suivant, le jeu de données d’entraînement utilisé pour entraîner le modèle a été chargé sur Amazon S3. S’il est déjà dans Amazon S3, vous pouvez pointer directement dessus.  

```
# copy over the training dataset to Amazon S3 (if you already have it in Amazon S3, you could reuse it)
baseline_prefix = prefix + '/baselining'
baseline_data_prefix = baseline_prefix + '/data'
baseline_results_prefix = baseline_prefix + '/results'

baseline_data_uri = 's3://{}/{}'.format(bucket,baseline_data_prefix)
baseline_results_uri = 's3://{}/{}'.format(bucket, baseline_results_prefix)
print('Baseline data uri: {}'.format(baseline_data_uri))
print('Baseline results uri: {}'.format(baseline_results_uri))
```

```
training_data_file = open("test_data/training-dataset-with-header.csv", 'rb')
s3_key = os.path.join(baseline_prefix, 'data', 'training-dataset-with-header.csv')
boto3.Session().resource('s3').Bucket(bucket).Object(s3_key).upload_fileobj(training_data_file)
```

**Example planification d'une analyse récurrente**  
Si vous planifiez une surveillance des modèles pour un point de terminaison en temps réel, utilisez des contraintes et des statistiques de référence afin de comparer le trafic en temps réel. L’extrait de code suivant montre le format général que vous utilisez pour planifier une surveillance des modèles pour un point de terminaison en temps réel. Cet exemple planifie le moniteur de modèles pour qu'il s'exécute toutes les heures.  

```
from sagemaker.model_monitor import CronExpressionGenerator
from time import gmtime, strftime

mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
my_default_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint"
    ),
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

**Example planification d'une analyse ponctuelle**  
Vous pouvez également planifier l'analyse pour l'exécuter une fois de façon non récurrente en transmettant des arguments tels que les suivants à la méthode `create_monitoring_schedule` :  

```
    schedule_cron_expression=CronExpressionGenerator.now(),
    data_analysis_start_time="-PT1H",
    data_analysis_end_time="-PT0H",
```
Dans ces arguments, le paramètre `schedule_cron_expression` planifie l'analyse pour qu'elle soit exécutée une fois, immédiatement, avec la valeur `CronExpressionGenerator.now()`. Pour toute planification avec ce paramètre, les paramètres `data_analysis_start_time` et `data_analysis_end_time` sont nécessaires. Ces paramètres définissent l'heure de début et de fin d'une fenêtre d'analyse. Définissez ces heures comme des décalages relatifs à l'heure actuelle et utilisez le format de durée ISO 8601. Dans cet exemple, les instants `-PT1H` et `-PT0H` définissent une fenêtre entre une heure dans le passé et l'heure actuelle. Avec cette planification, l'analyse évalue uniquement les données collectées au cours de la fenêtre spécifiée.

**Example planification d'une tâche de transformation par lots**  
L’extrait de code suivant montre le format général que vous utilisez pour planifier une surveillance des modèles pour une tâche de transformation par lots.  

```
from sagemaker.model_monitor import (
    CronExpressionGenerator,
    BatchTransformInput, 
    MonitoringDatasetFormat, 
)
from time import gmtime, strftime

mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
my_default_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/input",
        data_captured_destination_s3_uri=s3_capture_upload_path,
        dataset_format=MonitoringDatasetFormat.csv(header=False),
    ),
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

```
desc_schedule_result = my_default_monitor.describe_schedule()
print('Schedule status: {}'.format(desc_schedule_result['MonitoringScheduleStatus']))
```

# Expression cron pour le programme de surveillance
<a name="model-monitor-schedule-expression"></a>

Pour fournir des détails relatifs à la planification de surveillance, utilisez [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html), qui est une expression `cron` décrivant les détails de la planification de surveillance.

Amazon SageMaker Model Monitor prend en charge les `cron` expressions suivantes :
+ Pour indiquer que la tâche doit commencer toutes les heures, utilisez ce qui suit :

  `Hourly: cron(0 * ? * * *)`
+ Pour exécuter la tâche tous les jours, utilisez ce qui suit :

  `cron(0 [00-23] ? * * *)`
+ Pour exécuter la tâche une fois, immédiatement, utilisez le mot clé suivant :

  `NOW`

Par exemple, les expressions `cron` suivantes sont valides :
+ Tous les jours à midi UTC : `cron(0 12 ? * * *)`
+ Tous les jours à minuit UTC : `cron(0 0 ? * * *)`

Pour prendre en charge l'exécution toutes les 6, 12 heures, Model Monitor prend en charge l'expression suivante :

`cron(0 [00-23]/[01-24] ? * * *)`

Par exemple, les expressions `cron` suivantes sont valides :
+ Toutes les 12 heures, à partir de 17 h UTC : `cron(0 17/12 ? * * *)`
+ Toutes les deux heures, à partir de minuit UTC : `cron(0 0/2 ? * * *)`

**Remarques**  
Bien que l’expression `cron` soit définie pour démarrer à 17 h UTC, il peut y avoir un délai de 0 à 20 minutes à partir de l’heure réelle demandée pour lancer l’exécution.
Si vous souhaitez exécuter un programme quotidien, ne fournissez pas ce paramètre. SageMaker Chaque jour, l'IA choisit l'heure à laquelle elle doit fonctionner.
Actuellement, l' SageMaker IA ne prend en charge que les taux entiers horaires compris entre 1 heure et 24 heures.

# Configuration de politiques de contrôle des services pour les planifications de surveillance
<a name="model-monitor-scp-rules"></a>

 Vous devez spécifier les paramètres d'une tâche de surveillance lorsque vous créez ou mettez à jour un calendrier correspondant avec l'[CreateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html)API ou l'[UpdateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateMonitoringSchedule.html)API, respectivement. En fonction de votre cas d'utilisation, vous pouvez utiliser l'une des façons suivantes : 
+  Vous pouvez spécifier le [MonitoringJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringJobDefinition.html)champ de [MonitoringScheduleConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringScheduleConfig.html), lorsque vous invoquez `CreateMonitoringSchedule` ou`UpdateMonitoringSchedule`. Vous pouvez utiliser cela uniquement pour créer ou mettre à jour une planification pour une tâche de surveillance de la qualité des données. 
+  Vous pouvez spécifier le nom d'une définition de tâche de surveillance, que vous avez déjà créée, pour le champ `MonitoringJobDefinitionName` de `MonitoringScheduleConfig`, lorsque vous invoquez `CreateMonitoringSchedule` ou `UpdateMonitoringSchedule`. Vous pouvez l'utiliser pour n'importe quelle définition de tâche que vous créez avec l'une des options suivantes APIs : 
  +  [CreateDataQualityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDataQualityJobDefinition.html) 
  +  [CreateModelQualityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelQualityJobDefinition.html) 
  +  [CreateModelBiasJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html) 
  +  [CreateModelExplainabilityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html) 

   Si vous souhaitez utiliser le SDK SageMaker Python pour créer ou mettre à jour des plannings, vous devez utiliser ce processus. 

 Les processus susmentionnés s'excluent mutuellement, c'est-à-dire que vous pouvez spécifier le champ `MonitoringJobDefinition` ou le champ `MonitoringJobDefinitionName` lors de la création ou de la mise à jour de planifications de surveillance. 

 Lorsque vous créez une définition de tâche de surveillance ou en spécifiez une dans le champ `MonitoringJobDefinition`, vous pouvez définir des paramètres de sécurité, tels que `NetworkConfig` et `VolumeKmsKeyId`. En tant qu'administrateur, vous souhaiterez peut-être que ces paramètres soient toujours définis sur certaines valeurs, afin que les tâches de surveillance s'exécutent toujours dans un environnement sécurisé. Pour ce faire, configurez des [politiques de contrôle des services](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) appropriées (SCPs). SCPs sont un type de politique d'entreprise que vous pouvez utiliser pour gérer les autorisations au sein de votre organisation. 

 L'exemple suivant montre une politique SCP que vous pouvez utiliser pour vous assurer que les paramètres d'infrastructure sont correctement définis lors de la création ou de la mise à jour de planifications pour les tâches de surveillance. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateDataQualityJobDefinition",
                "sagemaker:CreateModelBiasJobDefinition",
                "sagemaker:CreateModelExplainabilityJobDefinition",
                "sagemaker:CreateModelQualityJobDefinition"
            ],
            "Resource": "arn:*:sagemaker:*:*:*",
            "Condition": {
                "Null": {
                    "sagemaker:VolumeKmsKey":"true",
                    "sagemaker:VpcSubnets": "true",
                    "sagemaker:VpcSecurityGroupIds": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateDataQualityJobDefinition",
                "sagemaker:CreateModelBiasJobDefinition",
                "sagemaker:CreateModelExplainabilityJobDefinition",
                "sagemaker:CreateModelQualityJobDefinition"
            ],
            "Resource": "arn:*:sagemaker:*:*:*",
            "Condition": {
                "Bool": {
                    "sagemaker:InterContainerTrafficEncryption": "false"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateMonitoringSchedule",
                "sagemaker:UpdateMonitoringSchedule"
            ],
            "Resource": "arn:*:sagemaker:*:*:monitoring-schedule/*",
            "Condition": {
                "Null": {
                    "sagemaker:ModelMonitorJobDefinitionName": "true"
                }
            }
        }
    ]
}
```

------

 Les deux premières règles de cet exemple garantissent que les paramètres de sécurité sont toujours définis pour les définitions des tâches de surveillance. La dernière règle exige que tous les membres de votre organisation qui créent ou mettent à jour une planification doivent toujours spécifier le champ `MonitoringJobDefinitionName`. Cela garantit qu'aucun membre de votre organisation ne peut définir de valeurs non sécurisées pour les paramètres de sécurité en spécifiant le champ `MonitoringJobDefinition`, lors de la création ou de la mise à jour de planifications. 