Crea una base di riferimento per la qualità del modello - Amazon SageMaker

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

Crea una base di riferimento per la qualità del modello

Crea un processo di base che confronti le previsioni dei tuoi modelli con le etichette Ground Truth in un set di dati di base archiviato in Amazon S3. In genere, si utilizza un set di dati di addestramento come set di dati di base. Il processo di base calcola i parametri del modello e suggerisce i vincoli da utilizzare per monitorare la deviazione della qualità del modello.

Per creare un processo di base, devi disporre di un set di dati che contenga le previsioni del modello insieme a etichette che rappresentino la Ground Truth dei tuoi dati.

Per creare un lavoro di base, usa la ModelQualityMonitor classe fornita da SageMaker Python SDK e completa i passaggi seguenti.

Crea un processo di base per la qualità del modello
  1. Per prima cosa, crea un'istanza della classe ModelQualityMonitor. Il seguente frammento di codice mostra come eseguire tale operazione.

    from sagemaker import get_execution_role, session, Session from sagemaker.model_monitor import ModelQualityMonitor role = get_execution_role() session = Session() model_quality_monitor = ModelQualityMonitor( role=role, instance_count=1, instance_type='ml.m5.xlarge', volume_size_in_gb=20, max_runtime_in_seconds=1800, sagemaker_session=session )
  2. Ora chiama il metodo suggest_baseline dell'oggetto ModelQualityMonitor per eseguire un processo di base. Il seguente frammento di codice presuppone che tu disponga di un set di dati di base contenente sia previsioni che etichette archiviate in Amazon S3.

    baseline_job_name = "MyBaseLineJob" job = model_quality_monitor.suggest_baseline( job_name=baseline_job_name, baseline_dataset=baseline_dataset_uri, # The S3 location of the validation dataset. dataset_format=DatasetFormat.csv(header=True), output_s3_uri = baseline_results_uri, # The S3 location to store the results. problem_type='BinaryClassification', inference_attribute= "prediction", # The column in the dataset that contains predictions. probability_attribute= "probability", # The column in the dataset that contains probabilities. ground_truth_attribute= "label" # The column in the dataset that contains ground truth labels. ) job.wait(logs=False)
  3. Una volta che il processo di base viene completato, è possibile visualizzare i vincoli generati dal processo. Innanzitutto, ottieni i risultati del processo di base chiamando il metodo latest_baselining_job dell'oggetto ModelQualityMonitor.

    baseline_job = model_quality_monitor.latest_baselining_job
  4. Il processo di base suggerisce dei vincoli, che sono soglie per i parametri valutati dal monitoraggio del modello. Se una parametro supera la soglia suggerita, Model Monitor segnala una violazione. Per visualizzare i vincoli generati dal processo di base, chiama il metodo suggested_constraints del processo di base. Il seguente frammento di codice carica i vincoli per un modello di classificazione binaria in un dataframe Pandas.

    import pandas as pd pd.DataFrame(baseline_job.suggested_constraints().body_dict["binary_classification_constraints"]).T

    Si consiglia di visualizzare i vincoli generati e modificarli, se necessario, prima di utilizzarli per il monitoraggio. Se, ad esempio, un vincolo è troppo aggressivo, potresti ricevere più avvisi di violazione di quanti ne desideri.

    Se il vincolo contiene numeri espressi in notazione scientifica, sarà necessario convertirli in valori con virgola mobile. Il seguente esempio di script di preelaborazione in Python mostra come convertire i numeri in notazione scientifica in valori con virgola mobile.

    import csv def fix_scientific_notation(col): try: return format(float(col), "f") except: return col def preprocess_handler(csv_line): reader = csv.reader([csv_line]) csv_record = next(reader) #skip baseline header, change HEADER_NAME to the first column's name if csv_record[0] == “HEADER_NAME”: return [] return { str(i).zfill(20) : fix_scientific_notation(d) for i, d in enumerate(csv_record)}

    È possibile aggiungere lo script di pre-elaborazione a una pianificazione di base o di monitoraggio come record_preprocessor_script, come definito nella documentazione di Model Monitor.

  5. Quando sei soddisfatto dei vincoli, passali come parametro constraints quando crei una pianificazione di monitoraggio. Per ulteriori informazioni, consulta Pianifica i lavori di monitoraggio della qualità del modello.

I vincoli di base suggeriti sono contenuti nel file constraints.json nella posizione specificata con output_s3_uri. Trovi le informazioni sullo schema di questo file in Schema per vincoli (file constraints.json).