Paso 4: Entrenar un 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.

Paso 4: Entrenar un modelo

El SDK de Amazon SageMaker Python proporciona estimadores de marcos y estimadores genéricos para entrenar el modelo y, al mismo tiempo, organizar el ciclo de vida del aprendizaje automático (ML) y acceder a las SageMaker funciones de entrenamiento y a las infraestructuras AWS , como Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2) y Amazon Simple Storage Service (Amazon S3)). Para obtener más información sobre los estimadores de marcos SageMaker integrados, consulte Frameworks en la documentación del SDK de Amazon SageMaker Python. Para obtener más información sobre los algoritmos integrados, consulte Usa algoritmos SageMaker integrados de Amazon o modelos previamente entrenados.

Elección del algoritmo de entrenamiento

Para elegir el algoritmo correcto para su conjunto de datos, normalmente necesitará evaluar diferentes modelos para encontrar los más adecuados para sus datos. Para simplificar, el algoritmo SageMaker Usa el algoritmo XGBoost con Amazon SageMaker integrado se utiliza a lo largo de este tutorial sin la evaluación previa de los modelos.

sugerencia

Si desea SageMaker encontrar un modelo adecuado para su conjunto de datos tabular, utilice Amazon SageMaker Autopilot, que automatiza una solución de aprendizaje automático. Para obtener más información, consulte SageMaker Piloto automático.

Creación y ejecución de un trabajo de entrenamiento

Una vez que haya decidido qué modelo usar, comience a construir un SageMaker estimador para el entrenamiento. Este tutorial utiliza el algoritmo integrado XGBoost para el estimador genérico. SageMaker

Para ejecutar un trabajo de entrenamiento de modelo
  1. Importe el SDK de Amazon SageMaker Python y comience por recuperar la información básica de su SageMaker sesión actual.

    import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))

    Esto devuelve la siguiente información:

    • region— La AWS región actual en la que se ejecuta la instancia del SageMaker bloc de notas.

    • role: el rol de IAM utilizado por la instancia del cuaderno.

    nota

    Compruebe la versión del SDK de SageMaker Python ejecutandosagemaker.__version__. Este tutorial se basa en sagemaker>=2.20. Si el SDK está desactualizado, instale la versión más reciente ejecutando el comando siguiente:

    ! pip install -qU sagemaker

    Si ejecutas esta instalación en las instancias de SageMaker Studio o Notebook que ya tienes, tendrás que actualizar manualmente el núcleo para terminar de aplicar la actualización de la versión.

  2. Cree un estimador de XGBoost con la clase sagemaker.estimator.Estimator. En el siguiente código de ejemplo, el estimador de XGBoost de llama xgb_model.

    from sagemaker.debugger import Rule, ProfilerRule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()), ProfilerRule.sagemaker(rule_configs.ProfilerReport()) ] )

    Para construir el SageMaker estimador, especifique los siguientes parámetros:

    • image_uri: especifique el URI de la imagen del contenedor de entrenamiento. En este ejemplo, el URI del contenedor de entrenamiento SageMaker XGBoost se especifica mediante. sagemaker.image_uris.retrieve

    • role— La función AWS Identity and Access Management (IAM) que se SageMaker utiliza para realizar tareas en su nombre (por ejemplo, leer los resultados de la formación, llamar a artefactos de modelos de Amazon S3 y escribir los resultados de la formación en Amazon S3).

    • instance_count y instance_type: el tipo y el número de instancias de computación de machine learning de Amazon EC2 que se deben usar para el entrenamiento de modelos. Para este ejercicio de entrenamiento, utilizará una sola instancia de ml.m4.xlarge, que tiene 4 CPU, 16 GB de memoria, un almacenamiento en Amazon Elastic Block Store (Amazon EBS) y un alto rendimiento de red. Para obtener más información sobre los tipos de instancias, consulte Tipos de instancias de Amazon EC2. Para obtener más información sobre la facturación, consulta los SageMaker precios de Amazon.

    • volume_size: el tamaño, en GB, del volumen de almacenamiento de EBS que se va a asociar a la instancia de entrenamiento. Debe ser lo suficientemente grande para almacenar datos de entrenamiento si utiliza el modo File (el modo File es el predeterminado). Si no especifica este parámetro, el valor predeterminado es de 30.

    • output_path— La ruta al depósito S3, donde se SageMaker almacenan el artefacto modelo y los resultados del entrenamiento.

    • sagemaker_session— El objeto de sesión que gestiona las interacciones con las operaciones de la SageMaker API y otros AWS servicios que utiliza el trabajo de formación.

    • rules— Especifique una lista de reglas integradas en SageMaker Debugger. En este ejemplo, la regla create_xgboost_report() crea un informe de XGBoost que proporciona información sobre el progreso y los resultados del entrenamiento, y la regla ProfilerReport() crea un informe sobre la utilización de los recursos informáticos de EC2. Para obtener más información, consulte SageMaker Informe de formación sobre Debugger XGBoost.

    sugerencia

    Si desea realizar un entrenamiento distribuido de modelos de aprendizaje profundo de gran tamaño, como modelos de redes neuronales convolucionales (CNN) y modelos de procesamiento del lenguaje natural (NLP), utilice SageMaker Distributed para el paralelismo de datos o el paralelismo de modelos. Para obtener más información, consulte Formación distribuida en Amazon SageMaker.

  3. Ajuste los valores de los hiperparámetros para el trabajo de entrenamiento de XGBoost llamando al método set_hyperparameters del estimador. Para obtener una lista completa de hiperparámetros de XGBoost, consulte Hiperparámetros XGBoost.

    xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
    sugerencia

    También puede ajustar los hiperparámetros mediante la función de optimización de hiperparámetros. SageMaker Para obtener más información, consulte Realice un ajuste automático del modelo con SageMaker.

  4. Utilice la clase TrainingInput para configurar un flujo de entrada de datos para el entrenamiento. El siguiente código de ejemplo muestra cómo configurar los objetos TrainingInput para que usen los conjuntos de datos de entrenamiento y validación que cargó en Amazon S3 en la sección División de los datos en conjuntos de entrenamiento, validación y prueba..

    from sagemaker.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
  5. Para iniciar el entrenamiento del modelo, llame al método fit del estimador con los conjuntos de datos de entrenamiento y validación. Al configurar wait=True, el método fit muestra los registros de progreso y espera hasta que el entrenamiento se complete.

    xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)

    Para obtener más información acerca del modelo de entrenamiento, consulte Entrena a un modelo con Amazon SageMaker. Este tutorial de un trabajo de entrenamiento puede llevar hasta 10 minutos.

    Una vez finalizado el trabajo de formación, puede descargar un informe de formación de XGBoost y un informe de creación de perfiles generados por Debugger. SageMaker El informe de entrenamiento de XGBoost le ofrece información sobre el progreso y los resultados del entrenamiento, como la función de pérdida con respecto a la iteración, la importancia de las características, la matriz de confusión, las curvas de precisión y otros resultados estadísticos del entrenamiento. Por ejemplo, puede encontrar la siguiente curva de pérdidas en el informe de entrenamiento de XGBoost, lo que indica claramente que hay un problema de sobreajuste.

    Ejecute el siguiente código para especificar el URI del bucket de S3 en el que se generan los informes de entrenamiento del depurador y compruebe si los informes existen.

    rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive

    Descargue los informes de entrenamiento y creación de perfiles de XGBoost del depurador en el espacio de trabajo actual:

    ! aws s3 cp {rule_output_path} ./ --recursive

    Ejecute el siguiente script de iPython para obtener el enlace al archivo del informe de entrenamiento de XGBoost:

    from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))

    El siguiente script de iPython devuelve el enlace al archivo del informe de creación de perfiles del depurador, que muestra resúmenes y detalles del uso de los recursos de la instancia EC2, los resultados de la detección de cuellos de botella en el sistema y los resultados de la creación de perfiles de operaciones de Python:

    profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
    sugerencia

    Si los informes HTML no representan gráficos en la JupyterLab vista, debe elegir Confiar en HTML en la parte superior de los informes.

    Para identificar los problemas de entrenamiento, como el sobreajuste, la desaparición de los gradientes y otros problemas que impiden la convergencia del modelo, utilice SageMaker Debugger y tome medidas automatizadas mientras crea prototipos y entrena sus modelos de aprendizaje automático. Para obtener más información, consulte Utilice Amazon SageMaker Debugger para depurar y mejorar el rendimiento del modelo. Para obtener un análisis completo de los parámetros del modelo, consulte el cuaderno de ejemplo Explicability with Amazon SageMaker Debugger.

Ahora tiene un modelo XGBoost entrenado. SageMaker almacena el artefacto modelo en su depósito S3. Para encontrar la ubicación del artefacto modelo, ejecute el siguiente código para imprimir el atributo model_data del estimador xgb_model:

xgb_model.model_data
sugerencia

Para medir los sesgos que pueden producirse durante cada etapa del ciclo de vida del aprendizaje automático (recopilación de datos, entrenamiento y ajuste de los modelos y supervisión de los modelos de aprendizaje automático implementados para la predicción), utilice SageMaker Clarify. Para obtener más información, consulte Explicabilidad del modelo. Para ver un end-to-end ejemplo, consulte el cuaderno de ejemplo Equidad y explicabilidad con SageMaker Clarify.