

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

# Pianificazione delle attività di monitoraggio
<a name="model-monitor-scheduling"></a>

Amazon SageMaker Model Monitor ti offre la possibilità di monitorare i dati raccolti dagli endpoint in tempo reale. Puoi monitorare i tuoi dati in base a una pianificazione ricorrente oppure puoi monitorarli una tantum, immediatamente. Puoi creare una pianificazione di monitoraggio con l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html).

Con una pianificazione di monitoraggio, l' SageMaker intelligenza artificiale può iniziare a elaborare i lavori per analizzare i dati raccolti durante un determinato periodo. Nel processo di elaborazione, l' SageMaker intelligenza artificiale confronta il set di dati per l'analisi corrente con le statistiche e i vincoli di base forniti dall'utente. Quindi, l' SageMaker IA genera un rapporto sulle violazioni. Inoltre, vengono emesse CloudWatch metriche per ogni funzionalità oggetto di analisi.

SageMaker L'intelligenza artificiale fornisce un contenitore predefinito per eseguire analisi su set di dati tabulari. In alternativa, puoi scegliere di portare il tuo container come descritto nell'argomento [Support per i tuoi contenitori con Amazon SageMaker Model Monitor](model-monitor-byoc-containers.md).

È possibile creare un modello di pianificazione di monitoraggio per il processo di trasformazione di batch o degli endpoint in tempo reale. Utilizza le risorse della linea di base (vincoli e statistiche) da confrontare con il traffico in tempo reale. 

**Example assegnazioni linea di base**  
Nell'esempio seguente, il set di dati di addestramento utilizzato per addestrare il modello è stato caricato su Amazon S3. Se è già presente in Amazon S3, è possibile puntare direttamente a esso.  

```
# 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 pianificazione di analisi ricorrenti**  
Se stai pianificando un monitoraggio di modello per l'endpoint in tempo reale, utilizza i vincoli e le statistiche della linea di base da confrontare con il traffico in tempo reale. Il seguente frammento di codice mostra il formato generale utilizzato per pianificare un monitoraggio di modello per un endpoint in tempo reale. Questo esempio pianifica il monitoraggio del modello in modo che venga eseguito ogni ora.  

```
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 pianificazione di analisi una tantum**  
È inoltre possibile pianificare l'esecuzione di una singola analisi senza ripetizioni, passando al metodo `create_monitoring_schedule` argomenti come i seguenti:  

```
    schedule_cron_expression=CronExpressionGenerator.now(),
    data_analysis_start_time="-PT1H",
    data_analysis_end_time="-PT0H",
```
In questi argomenti, il parametro `schedule_cron_expression` pianifica l'esecuzione dell'analisi una tantum, immediatamente, con il valore `CronExpressionGenerator.now()`. Per qualsiasi pianificazione con questa impostazione, i parametri `data_analysis_start_time` e `data_analysis_end_time` sono necessari. Questi parametri impostano l'ora di inizio e l'ora di fine di una finestra di analisi. Definite questi orari come offset relativi all'ora corrente e utilizzate il formato di durata ISO 8601. In questo esempio, gli orari `-PT1H` e `-PT0H` definiscono una finestra tra un'ora nel passato e l'ora corrente. Con questa pianificazione, l'analisi valuta solo i dati raccolti durante la finestra specificata.

**Example pianificazione per un processo di trasformazione di batch**  
Il seguente frammento di codice mostra il formato generale utilizzato per pianificare un monitoraggio dei modelli per un processo di trasformazione di batch.  

```
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']))
```

# L'espressione Cron per la pianificazione del monitoraggio
<a name="model-monitor-schedule-expression"></a>

Per fornire i dettagli per la pianificazione di monitoraggio, utilizza [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html), che è un'espressione `cron` che descrive i dettagli sulla pianificazione del monitoraggio.

Amazon SageMaker Model Monitor supporta le seguenti `cron` espressioni:
+ Per impostare l'avvio del processo ogni ora, utilizza quanto segue:

  `Hourly: cron(0 * ? * * *)`
+ Per eseguire il processo ogni giorno, utilizza quanto segue:

  `cron(0 [00-23] ? * * *)`
+ Per eseguire il processo una tantum, immediatamente, utilizza la seguente parola chiave:

  `NOW`

Ad esempio, le seguenti espressioni `cron` sono valide:
+ Giornalmente alle 12:00 UTC: `cron(0 12 ? * * *)`
+ Giornalmente alle 00:00 UTC: `cron(0 0 ? * * *)`

Per permettere l'esecuzione ogni 6, 12 ore, il monitoraggio del modello supporta la seguente espressione:

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

Ad esempio, le seguenti espressioni `cron` sono valide:
+ Ogni 12 ore, a partire dalle 17:00 UTC: `cron(0 17/12 ? * * *)`
+ Ogni due ore, a partire dalle ore 00:00 UTC: `cron(0 0/2 ? * * *)`

**Note**  
Sebbene l'espressione `cron` sia impostata per iniziare alle 17:00 UTC, può verificarsi un ritardo di 0-20 minuti dall'ora effettiva richiesta di avvio dell'esecuzione.
Se desideri eseguire un programma giornaliero, non fornire questo parametro. SageMaker L'intelligenza artificiale sceglie un momento in cui correre ogni giorno.
Attualmente, l' SageMaker intelligenza artificiale supporta solo numeri interi orari compresi tra 1 ora e 24 ore.

# Configurare le policy di controllo dei servizi per le pianificazioni di monitoraggio
<a name="model-monitor-scp-rules"></a>

 È necessario specificare i parametri di un processo di monitoraggio quando si crea o si aggiorna una pianificazione con l'[CreateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html)API o l'[UpdateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateMonitoringSchedule.html)API, rispettivamente. A seconda del caso d'uso, puoi eseguire questa operazione in uno dei seguenti modi: 
+  È possibile specificare il [MonitoringJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringJobDefinition.html)campo di [MonitoringScheduleConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringScheduleConfig.html), quando si richiama `CreateMonitoringSchedule` o`UpdateMonitoringSchedule`. Può essere utilizzato esclusivamente per creare o aggiornare la pianificazione di un processo di monitoraggio della qualità dei dati. 
+  È possibile specificare il nome di una definizione di processo di monitoraggio che hai già creato, per il campo `MonitoringJobDefinitionName` di `MonitoringScheduleConfig`, quando richiami `CreateMonitoringSchedule` o `UpdateMonitoringSchedule`. È possibile utilizzarlo per qualsiasi definizione di processo creata con una delle seguenti opzioni: 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) 

   Se vuoi usare SageMaker Python SDK per creare o aggiornare le pianificazioni, devi usare questo processo. 

 I processi sopra menzionati si escludono a vicenda, ovvero è possibile specificare il campo `MonitoringJobDefinition` o il campo `MonitoringJobDefinitionName` durante la creazione o l'aggiornamento delle pianificazioni di monitoraggio. 

 Quando si crea una definizione di processo di monitoraggio o se ne specifica una nel campo `MonitoringJobDefinition`, è possibile impostare parametri di sicurezza, come `NetworkConfig` e `VolumeKmsKeyId`. In qualità di amministratore, potresti volere che questi parametri siano sempre impostati su determinati valori, in modo che i processi di monitoraggio vengano sempre eseguiti in un ambiente sicuro. Per garantire ciò, impostate le [politiche di controllo del servizio](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) appropriate ()SCPs. SCPs sono un tipo di politica organizzativa che è possibile utilizzare per gestire le autorizzazioni all'interno dell'organizzazione. 

 L'esempio seguente mostra una SCP che è possibile utilizzare per garantire che i parametri dell'infrastruttura siano impostati correttamente durante la creazione o l'aggiornamento delle pianificazioni di monitoraggio dei processi. 

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

------

 Le prime due regole dell'esempio assicurano che i parametri di sicurezza siano sempre impostati per il monitoraggio delle definizioni di processo. La regola finale richiede che chiunque, all'interno dell'organizzazione, crei o aggiorni una pianificazione debba sempre specificare il campo `MonitoringJobDefinitionName`. Questo garantisce che nessuno nell'organizzazione possa impostare valori non sicuri per i parametri di sicurezza specificando il campo `MonitoringJobDefinition` durante la creazione o l'aggiornamento delle pianificazioni. 