Cree una línea base de calidad del modelo - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cree una línea base de calidad del modelo

Cree un trabajo de referencia que compare las predicciones de su modelo con las etiquetas de Ground Truth de un conjunto de datos de referencia que haya almacenado en Amazon S3. Por lo general, utiliza un conjunto de datos de entrenamiento como conjunto de datos de referencia. El trabajo de referencia calcula las métricas del modelo y sugiere las restricciones que se utilizarán para supervisar la desviación de calidad del modelo.

Para crear un trabajo de referencia, debe tener un conjunto de datos que contenga las predicciones de su modelo junto con etiquetas que representen la Ground Truth de sus datos.

Para crear un trabajo de referenciaSDK, utilice la ModelQualityMonitor clase proporcionada por SageMaker Python y complete los siguientes pasos.

Par crear una referencia de calidad del modelo
  1. Primero, cree una instancia de la clase ModelQualityMonitor. En el siguiente fragmento de código se muestra cómo hacerlo.

    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. Ahora llame al método suggest_baseline del objeto ModelQualityMonitor para ejecutar un trabajo de referencia. En el siguiente fragmento de código se supone que tiene un conjunto de datos de referencia que contiene predicciones y etiquetas almacenadas en 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 vez que finalice el trabajo de referencia, puede ver las restricciones que ha generado el trabajo. En primer lugar, obtenga los resultados del trabajo de referencia llamando al método latest_baselining_job del objeto ModelQualityMonitor.

    baseline_job = model_quality_monitor.latest_baselining_job
  4. El trabajo de referencia sugiere restricciones, que son umbrales para las métricas que modelan las medidas del monitor. Si una métrica supera el umbral sugerido, el monitor de modelos informa de una infracción. Para ver las restricciones que generó el trabajo de referencia, llame al método suggested_constraints del trabajo de referencia. El siguiente fragmento de código carga las restricciones de un modelo de clasificación binaria en un marco de datos de Pandas.

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

    Se recomienda consultar las restricciones generadas y modificarlas según sea necesario antes de utilizarlas para la supervisión. Por ejemplo, si una restricción es demasiado agresiva, es posible que reciba más alertas de infracciones de las que desearía.

    Si la restricción contiene números expresados en notación científica, tendrá que convertirlos en números flotantes. En el siguiente ejemplo de secuencia de script de preprocesamiento de Python, se muestra cómo convertir números en notación científica en números flotantes.

    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)}

    Puede agregar el script de preprocesamiento a una referencia o a una programación de supervisión como un record_preprocessor_script tal y como se define en la documentación del Monitor de modelos.

  5. Cuando esté satisfecho con las restricciones, páselas como el parámetro constraints al crear un programa de supervisión. Para obtener más información, consulte Programe trabajos de monitoreo de la calidad del modelo.

Las restricciones de referencia sugeridas se incluyen en el archivo constraints.json, en la ubicación que especifique con output_s3_uri. Puede obtener información sobre el esquema de este archivo en Esquema para restricciones (archivo constraints.json).