

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.

# Capacitación de un modelo
<a name="ex1-train-model"></a>

En este paso se elige un algoritmo de entrenamiento y se ejecuta un trabajo de entrenamiento para el modelo. El [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) 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 funciones de SageMaker IA para el 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) 3). Para obtener más información sobre los estimadores de [marcos integrados de SageMaker IA, consulte Frameworks](https://sagemaker.readthedocs.io/en/stable/frameworks/index.html) en la documentación del [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). Para obtener más información sobre los algoritmos integrados, consulte [Algoritmos integrados y modelos previamente entrenados en Amazon SageMaker](algos.md).

**Topics**
+ [Elección del algoritmo de entrenamiento](#ex1-train-model-select-algorithm)
+ [Creación y ejecución de un trabajo de entrenamiento](#ex1-train-model-sdk)

## Elección del algoritmo de entrenamiento
<a name="ex1-train-model-select-algorithm"></a>

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 [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md) integrado de SageMaker IA se utiliza a lo largo de este tutorial sin la evaluación previa de los modelos.

**sugerencia**  
Si desea que la SageMaker IA encuentre 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](autopilot-automate-model-development.md).

## Creación y ejecución de un trabajo de entrenamiento
<a name="ex1-train-model-sdk"></a>

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

**Para ejecutar un trabajo de entrenamiento de modelo**

1. Importe el [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) y comience por recuperar la información básica de su sesión de SageMaker IA 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 bloc de notas de SageMaker IA.
   + `role`: es el rol de IAM utilizado por la instancia del cuaderno.
**nota**  
Compruebe la versión del SDK de SageMaker Python ejecutando`sagemaker.__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.

1. Cree un XGBoost estimador utilizando la clase. `sagemaker.estimator.Estimator` En el siguiente código de ejemplo, se denomina al XGBoost estimador. `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 estimador de SageMaker IA, 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 XGBoost entrenamiento de SageMaker IA se especifica mediante. `sagemaker.image_uris.retrieve`
   + `role`— La función AWS Identity and Access Management (IAM) que la SageMaker IA 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](https://aws.amazon.com/ec2/instance-types/). Para obtener más información sobre la facturación, consulta los [ SageMaker precios de Amazon](https://aws.amazon.com/sagemaker/pricing/). 
   + `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`— El camino hacia el compartimento S3, donde la SageMaker IA almacena el artefacto del 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 las reglas integradas del SageMaker Debugger. En este ejemplo, la `create_xgboost_report()` regla crea un XGBoost informe que proporciona información sobre el progreso y los resultados de la formación, y la `ProfilerReport()` regla crea un informe sobre la utilización de los recursos informáticos de EC2. Para obtener más información, consulte [SageMaker Informe interactivo de Debugger para XGBoost](debugger-report-xgboost.md).
**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 AI Distributed para el paralelismo de datos o el paralelismo de modelos. Para obtener más información, consulte [Formación distribuida en Amazon SageMaker AI](distributed-training.md).

1. Establezca los hiperparámetros del algoritmo llamando al método del estimador. XGBoost `set_hyperparameters` Para obtener una lista completa de los XGBoost hiperparámetros, consulte. [XGBoost hiperparámetros](xgboost_hyperparameters.md)

   ```
   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 mediante SageMaker IA. Para obtener más información, consulte [Ajuste automático de modelos con IA SageMaker](automatic-model-tuning.md). 

1. 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.](ex1-preprocess-data.md#ex1-preprocess-data-transform).

   ```
   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"
   )
   ```

1. 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](how-it-works-training.md). 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 XGBoost formación y un informe de creación de perfiles generados por Debugger. SageMaker El informe de XGBoost entrenamiento 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, puedes encontrar la siguiente curva de pérdidas en el informe de XGBoost entrenamiento, que indica claramente que hay un problema de sobreajuste.  
![\[El gráfico del informe de XGBoost entrenamiento.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/get-started-ni/gs-ni-train-loss-curve-validation-overfitting.png)

   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
   ```

   Descarga los informes de XGBoost formación y creación de perfiles de Debugger en el espacio de trabajo actual:

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

   Ejecute el siguiente IPython script para obtener el enlace al archivo del informe de XGBoost formación:

   ```
   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 [Amazon SageMaker Debugger](train-debugger.md). Para obtener un análisis completo de los parámetros del modelo, consulte el cuaderno de [ejemplo Explicability with Amazon SageMaker Debugger](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/xgboost_census_explanations/xgboost-census-debugger-rules.html#Explainability-with-Amazon-SageMaker-Debugger). 

Ahora tiene un modelo entrenado. XGBoost SageMaker La IA 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\$1data 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](clarify-model-explainability.md). Para ver un end-to-end ejemplo, consulte el cuaderno de ejemplo [Equidad y explicabilidad con SageMaker Clarify.](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html)