

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.

# SageMaker flujos de trabajo de IA
<a name="workflows"></a>

A medida que escala sus operaciones de aprendizaje automático (ML), puede utilizar los servicios de flujo de trabajo totalmente gestionados de Amazon SageMaker AI para implementar prácticas de integración e implementación continuas (CI/CD) para su ciclo de vida de aprendizaje automático. Con el SDK de Canalizaciones, puede elegir e integrar los pasos de la canalización en una solución unificada que automatiza el proceso de creación de modelos, desde la preparación de los datos hasta la implementación del modelo. En el caso de las arquitecturas basadas en Kubernetes, puede instalar operadores de IA en su clúster de Kubernetes para crear SageMaker trabajos de SageMaker IA de forma nativa mediante la API de Kubernetes y las herramientas de Kubernetes de línea de comandos, como `kubectl` Con los componentes de IA para las canalizaciones de Kubeflow, puedes crear y supervisar trabajos de SageMaker IA nativos desde tus canalizaciones de Kubeflow. SageMaker Se puede acceder a los parámetros del trabajo, el estado y los resultados de la SageMaker IA desde la interfaz de usuario de Kubeflow Pipelines. Por último, si desea programar trabajos por lotes, puede utilizar la integración de colas de trabajos o el servicio de flujos de AWS Batch trabajo de Jupyter basado en cuadernos para iniciar ejecuciones independientes o regulares según el cronograma que usted defina.

En resumen, AI ofrece las siguientes tecnologías de flujo de trabajo SageMaker :
+ [Canalizaciones](pipelines.md): herramienta para crear y administrar canalizaciones de ML.
+ [Orquestación de Kubernetes](kubernetes-workflows.md): Operadores de SageMaker IA personalizados para su clúster de Kubernetes y componentes para Kubeflow Pipelines.
+ [SageMaker Trabajos de cuaderno](notebook-auto-run.md): ejecuciones por lotes no interactivas bajo demanda o programadas de su cuaderno de Jupyter.

También puedes aprovechar otros servicios que se integran con SageMaker la IA para desarrollar tu flujo de trabajo. Las opciones incluyen los siguientes servicios:
+ [Flujos de trabajo de flujo](https://sagemaker.readthedocs.io/en/stable/workflows/airflow/index.html) de aire: SageMaker APIs para exportar configuraciones para crear y gestionar flujos de trabajo de flujo de aire.
+ [AWS Step Functions](https://sagemaker.readthedocs.io/en/stable/workflows/step_functions/index.html): Flujos de trabajo de aprendizaje automático de varios pasos en Python que organizan la infraestructura de SageMaker IA sin tener que aprovisionar los recursos por separado.
+ [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html): Envíe los trabajos de formación en SageMaker IA a una lista de AWS Batch trabajos, donde podrá priorizar y programar los trabajos para que se ejecuten en un entorno informático.

Para obtener más información sobre la gestión de la SageMaker formación y la inferencia, consulte [Flujos de trabajo del SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable/workflows/index.html).

**Topics**
+ [Canalizaciones](pipelines.md)
+ [Orquestación de Kubernetes](kubernetes-workflows.md)
+ [SageMaker Trabajos de cuaderno](notebook-auto-run.md)
+ [Programación de sus flujos de trabajo de ML](workflow-scheduling.md)
+ [AWS Batch soporte para trabajos de formación en SageMaker IA](training-job-queues.md)

# Canalizaciones
<a name="pipelines"></a>

Amazon SageMaker Pipelines es un servicio de organización de flujos de trabajo diseñado específicamente para automatizar el desarrollo del aprendizaje automático (ML).

Las canalizaciones ofrecen las siguientes ventajas en comparación con otras ofertas de flujo de trabajo: AWS 

**Infraestructura sin servidor con escalado automático** No es necesario gestionar la infraestructura de orquestación subyacente para ejecutar Pipelines, lo que le permite centrarse en las tareas principales del aprendizaje automático. SageMaker La IA aprovisiona, escala y cierra automáticamente los recursos informáticos de orquestación de procesos según lo requiera su carga de trabajo de aprendizaje automático.

**Experiencia de usuario intuitiva** Los pipelines se pueden crear y gestionar a través de la interfaz que prefieras: editor visual APIs, SDK o JSON. Puedes seguir drag-and-drop los distintos pasos de ML para crear tus canalizaciones en la interfaz visual de Amazon SageMaker Studio. En la siguiente captura de pantalla, se muestra el editor visual de Studio para las canalizaciones.

![\[Captura de pantalla de la drag-and-drop interfaz visual de Pipelines en Studio.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Si prefieres gestionar tus flujos de trabajo de aprendizaje automático mediante programación, el SDK de SageMaker Python ofrece funciones de orquestación avanzadas. Para obtener más información, consulte [Amazon SageMaker Pipelines](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html) en la documentación del SDK de SageMaker Python.

**AWS Las integraciones** Pipelines proporcionan una integración perfecta con todas las funciones de SageMaker IA y otros AWS servicios para automatizar el procesamiento de datos, el entrenamiento de modelos, el ajuste, la evaluación, el despliegue y la supervisión de las tareas. Puedes incorporar las funciones de SageMaker IA en tus canalizaciones y navegar por ellas mediante enlaces profundos para crear, supervisar y depurar tus flujos de trabajo de aprendizaje automático a escala.

**Costes reducidos** Con Pipelines, solo paga por el entorno de SageMaker Studio y los trabajos subyacentes organizados por Pipelines (por ejemplo, SageMaker formación, SageMaker procesamiento, inferencia de SageMaker inteligencia artificial y almacenamiento de datos en Amazon S3).

**Auditabilidad y seguimiento del linaje** Con Canalizaciones, puede realizar un seguimiento del historial de actualizaciones y ejecuciones de las canalizaciones mediante el control de versiones integrado. Amazon SageMaker ML Lineage Tracking le ayuda a analizar las fuentes de datos y los consumidores de datos en el ciclo de vida del desarrollo del aprendizaje end-to-end automático.

**Topics**
+ [Información general de canalizaciones](pipelines-overview.md)
+ [Acciones de canalizaciones](pipelines-build.md)

# Información general de canalizaciones
<a name="pipelines-overview"></a>

Una canalización de Amazon SageMaker AI es una serie de pasos interconectados en un gráfico acíclico dirigido (DAG) que se definen mediante la drag-and-drop interfaz de usuario o el SDK de [Pipelines](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html). También puede crear una canalización utilizando el [esquema JSON de definición de canalizaciones](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). Esta definición de JSON de DAG proporciona información sobre los requisitos y las relaciones entre cada paso de la canalización. La estructura del DAG de una canalización viene determinada por las dependencias de datos entre los pasos. Estas dependencias de datos se crean cuando las propiedades de la salida de un paso se transfieren como entrada a otro paso. En la siguiente imagen, se muestra un ejemplo de DAG de canalización:

![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-full.png)


**El DAG de ejemplo incluye los siguientes pasos:**

1. `AbaloneProcess`, una instancia del paso de [procesamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), ejecuta un script de preprocesamiento de los datos utilizados para el entrenamiento. Por ejemplo, el script podría rellenar los valores que faltan, normalizar los datos numéricos o dividir los datos en conjuntos de datos de entrenamiento, validación y prueba.

1. `AbaloneTrain`, una instancia del paso de [entrenamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-training), configura los hiperparámetros y entrena un modelo a partir de los datos de entrada preprocesados.

1. `AbaloneEval`, otra instancia del paso de [procesamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), evalúa la exactitud del modelo. En este paso, se muestra un ejemplo de una dependencia de datos: en este paso se utiliza la salida del conjunto de datos de prueba de `AbaloneProcess`.

1. `AbaloneMSECond`es un ejemplo de un paso de [condición](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-condition) que, en este ejemplo, comprueba que el mean-square-error resultado de la evaluación del modelo esté por debajo de un límite determinado. Si el modelo no cumple los criterios, la ejecución de la canalización se detiene.

1. La ejecución de la canalización realiza los siguientes pasos:

   1. `AbaloneRegisterModel`, donde SageMaker AI solicita un [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)paso para registrar el modelo como un grupo de paquetes de modelos versionados en el Registro de SageMaker Modelos de Amazon.

   1. `AbaloneCreateModel`, donde la SageMaker IA da un [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)paso hacia la creación del modelo como preparación para la transformación por lotes. En`AbaloneTransform`, la SageMaker IA invoca un paso de [transformación](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-transform) para generar predicciones del modelo en un conjunto de datos que especifique.

En los siguientes temas, se describen los conceptos fundamentales de Canalizaciones. Para ver un tutorial que describe la implementación de estos conceptos, consulte [Acciones de canalizaciones](pipelines-build.md).

**Topics**
+ [Estructura y ejecución de la canalización](build-and-manage-pipeline.md)
+ [Administración de acceso de IAM](build-and-manage-access.md)
+ [Configuración de la compatibilidad entre cuentas para Canalizaciones](build-and-manage-xaccount.md)
+ [Parámetros de canalizaciones](build-and-manage-parameters.md)
+ [Pasos de canalizaciones](build-and-manage-steps.md)
+ [Lift-and-shift Código Python con el decorador @step](pipelines-step-decorator.md)
+ [Transferencia de datos entre pasos](build-and-manage-propertyfile.md)
+ [Almacenamiento en caché de pasos de canalización](pipelines-caching.md)
+ [Política de reintentos para los pasos de la canalización](pipelines-retry-policy.md)
+ [Ejecución selectiva de los pasos de la canalización](pipelines-selective-ex.md)
+ [Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Pipelines ClarifyCheck y QualityCheck pasos](pipelines-quality-clarify-baseline-lifecycle.md)
+ [Programación de ejecuciones de canalizaciones](pipeline-eventbridge.md)
+ [Integración de Amazon SageMaker Experiments](pipelines-experiments.md)
+ [Ejecución de canalizaciones en modo local](pipelines-local-mode.md)
+ [Solución de problemas de Amazon SageMaker Pipelines](pipelines-troubleshooting.md)

# Estructura y ejecución de la canalización
<a name="build-and-manage-pipeline"></a>

**Topics**
+ [Estructura de la canalización](#build-and-manage-pipeline-structure)
+ [Ejecución de canalización mediante la configuración del paralelismo](#build-and-manage-pipeline-execution)

## Estructura de la canalización
<a name="build-and-manage-pipeline-structure"></a>

Una instancia de Amazon SageMaker Pipelines se compone de `name``parameters`, y`steps`. Los nombres de las canalizaciones deben ser únicos en un par `(account, region)`. Todos los parámetros utilizados en las definiciones de los pasos se deben definir en la canalización. Los pasos de la canalización enumerados determinan automáticamente su orden de ejecución en función de la dependencia de los datos entre sí. El servicio de Canalizaciones resuelve las relaciones entre los pasos del DAG de dependencia de datos para crear una serie de pasos que completa la ejecución. A continuación se muestra un ejemplo de una estructura de canalización.

**aviso**  
Al crear una canalización mediante el editor visual o el SDK de Python para SageMaker IA, no incluyas información confidencial en los parámetros de la canalización ni en ningún campo de definición de pasos (como las variables de entorno). Estos campos serán visibles en el futuro cuando se devuelvan en una solicitud `DescribePipeline`.

```
from sagemaker.workflow.pipeline import Pipeline
  
  pipeline_name = f"AbalonePipeline"
  pipeline = Pipeline(
      name=pipeline_name,
      parameters=[
          processing_instance_type, 
          processing_instance_count,
          training_instance_type,
          model_approval_status,
          input_data,
          batch_data,
      ],
      steps=[step_process, step_train, step_eval, step_cond],
  )
```

## Ejecución de canalización mediante la configuración del paralelismo
<a name="build-and-manage-pipeline-execution"></a>

De forma predeterminada, una canalización realiza todos los pasos que están disponibles para ejecutarse en paralelo. Puede controlar este comportamiento mediante la propiedad `ParallelismConfiguration` al crear o actualizar una canalización, así como al iniciar o reintentar la ejecución de una canalización. 

Las configuraciones de paralelismo se aplican por ejecución. Por ejemplo, si se inician dos ejecuciones, cada una de ellas puede ejecutar un máximo de 50 pasos simultáneamente, lo que supone un total de 100 pasos ejecutados simultáneamente. Además, la `ParallelismConfiguration` especificada al iniciar, reintentar o actualizar una ejecución tiene prioridad sobre la configuración de paralelismo definida en la canalización.

**Example Creación de una ejecución en canalización con `ParallelismConfiguration`**  

```
pipeline = Pipeline(
        name="myPipeline",
        steps=[step_process, step_train]
    )

  pipeline.create(role, parallelism_config={"MaxParallelExecutionSteps": 50})
```

# Administración de acceso de IAM
<a name="build-and-manage-access"></a>

En las siguientes secciones se describen los requisitos AWS Identity and Access Management (de IAM) de Amazon SageMaker Pipelines. Para ver un ejemplo de cómo puede implementar estos permisos, consulte [Requisitos previos](define-pipeline.md#define-pipeline-prereq).

**Topics**
+ [Permisos de rol de canalización](#build-and-manage-role-permissions)
+ [Permisos de paso de canalización](#build-and-manage-step-permissions)
+ [Configuración de CORS con buckets de Amazon S3](#build-and-manage-cors-s3)
+ [Personalización de la administración del acceso para los trabajos de Canalizaciones](#build-and-manage-step-permissions-prefix)
+ [Personalización del acceso a las versiones de canalización](#build-and-manage-step-permissions-version)
+ [Políticas de control de servicios con canalizaciones](#build-and-manage-scp)

## Permisos de rol de canalización
<a name="build-and-manage-role-permissions"></a>

Su canalización requiere una función de ejecución de la canalización de IAM que se transfiere a Pipelines al crear una canalización. La función de la instancia de SageMaker IA que utilices para crear la canalización debe tener una política con el `iam:PassRole` permiso que especifique la función de ejecución de la canalización. Esto se debe a que la instancia necesita permiso para transferir tu función de ejecución de canalizaciones al servicio Pipelines para que se use en la creación y ejecución de canalizaciones. Para obtener más información acerca de los roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

El rol de ejecución de la canalización requiere los siguientes permisos:
+ Puedes usar un rol único o personalizado para cualquiera de los pasos del trabajo de SageMaker IA de tu proceso (en lugar del rol de ejecución del proceso, que se usa de forma predeterminada). Asegúrate de que tu función de ejecución en proceso haya añadido una política con el `iam:PassRole` permiso que especifique cada una de estas funciones.
+  Los permisos `Create` y `Describe` para cada uno de los tipos de trabajo de la canalización. 
+  Permisos de Amazon S3 para utilizar la función `JsonGet`. Puede controlar el acceso a los recursos de Amazon S3 a través de una política basada en identidades o una política basada en recursos. Se aplica una política basada en recursos al bucket de Amazon S3 y concede acceso al bucket a Canalizaciones. Una política basada en identidades permite a la canalización realizar llamadas a Amazon S3 desde su cuenta. Para obtener más información acerca de las políticas de acceso basadas en recursos, consulte [Políticas basadas en identidad y políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html). 

  ```
  {
      "Action": [
          "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::<your-bucket-name>/*",
      "Effect": "Allow"
  }
  ```

## Permisos de paso de canalización
<a name="build-and-manage-step-permissions"></a>

Las canalizaciones incluyen los pasos que ejecutan las tareas de SageMaker IA. Para que los pasos de la canalización ejecuten estos trabajos, requieren un rol de IAM en la cuenta que proporcione acceso al recurso necesario. Tu proceso transfiere esta función al director del servicio de SageMaker IA. Para obtener más información acerca de los roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). 

De forma predeterminada, cada paso asume el rol de ejecución de la canalización. Si lo desea, puede transferir un rol diferente a cualquiera de los pasos de su canalización. Esto garantiza que el código de cada paso no pueda afectar a los recursos utilizados en otros pasos, a menos que exista una relación directa entre los dos pasos especificados en la definición de la canalización. Estos roles se asignan al definir el procesador o el estimador de su paso. Para ver ejemplos de cómo incluir estas funciones en estas definiciones, consulta la [documentación del SDK de Python para SageMaker IA](https://sagemaker.readthedocs.io/en/stable/overview.html#using-estimators). 

## Configuración de CORS con buckets de Amazon S3
<a name="build-and-manage-cors-s3"></a>

Para garantizar que las imágenes se importen a sus canalizaciones desde un bucket de Amazon S3 de forma predecible, debe añadirse una configuración de CORS a los buckets de Amazon S3 desde los que se importan las imágenes. En esta sección se proporcionan instrucciones sobre cómo establecer la configuración de CORS requerida en el bucket de Amazon S3. El XML `CORSConfiguration` necesario para las canalizaciones es diferente del que aparece en [Requisito de CORS para datos de imagen de entrada](sms-cors-update.md); puede utilizar la información que contiene para obtener más información sobre el requisito de CORS en los buckets de Amazon S3.

Utilice el siguiente código de configuración de CORS para los buckets de Amazon S3 que alojan las imágenes. Para ver instrucciones sobre cómo configurar CORS, consulte [Configuración del uso compartido de recursos entre orígenes (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html) en la Guía del usuario de Amazon Simple Storage Service. Si utiliza la consola de Amazon S3 para agregar la política a su bucket, debe utilizar el formato JSON.

**JSON**

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

El siguiente GIF muestra las instrucciones que se encuentran en la documentación de Amazon S3 para añadir una política de encabezados CORS mediante la consola de Amazon S3.

![\[Gif que muestra un ejemplo sobre cómo añadir una política de encabezados de CORS mediante la consola de Amazon S3.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## Personalización de la administración del acceso para los trabajos de Canalizaciones
<a name="build-and-manage-step-permissions-prefix"></a>

Puede personalizar aún más sus políticas de IAM para que los miembros seleccionados de su organización puedan ejecutar todos los pasos de la canalización o cualquiera de ellos. Por ejemplo, puede conceder permiso a determinados usuarios para crear trabajos de entrenamiento, conceder permisos a otro grupo de usuarios para crear trabajos de procesamiento y conceder permisos a todos tus usuarios permiso para ejecutar el resto de pasos. Para usar esta característica, seleccione una cadena personalizada como prefijo al nombre del trabajo. El administrador antepone el prefijo a lo permitido ARNs , mientras que el científico de datos incluye este prefijo en las instancias de canalización. Como la política de IAM para los usuarios permitidos contiene un ARN de trabajo con el prefijo especificado, los trabajos posteriores de su paso de canalización cuentan con los permisos necesarios para continuar. El prefijo de trabajo está desactivado de forma predeterminada; debe activar esta opción en su clase `Pipeline`para usarla. 

Para los trabajos con el prefijo desactivado, el nombre del trabajo tiene el formato que se muestra y es una concatenación de los campos que se describen en la siguiente tabla:

`pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>`


| Campo | Definición | 
| --- | --- | 
|  pipelines   |  Siempre se antepone una cadena estática. Esta cadena identifica el servicio de orquestación de canalizaciones como el origen del trabajo.  | 
|  executionId  |  Un búfer aleatorio para la instancia en ejecución de la canalización.  | 
|  stepNamePrefix  |  El nombre del paso especificado por el usuario (indicado en el argumento `name` del paso de canalización), limitado a los primeros 20 caracteres.  | 
|  entityToken  |  Un token aleatorio para garantizar la idempotencia de la entidad de paso.  | 
|  failureCount  |  El número actual de reintentos que han tenido lugar para completar el trabajo.  | 

En este caso, no se agrega ningún prefijo personalizado al nombre del trabajo y la política de IAM correspondiente debe coincidir con esta cadena.

Para los usuarios que activan el prefijo de trabajo, el nombre del trabajo subyacente adopta el siguiente formato, con el prefijo personalizado especificado como `MyBaseJobName`:

*<MyBaseJobName>*-*<executionId>*-*<entityToken>*-*<failureCount>*

El prefijo personalizado reemplaza a la `pipelines` cadena estática para ayudarte a reducir la selección de usuarios que pueden ejecutar el trabajo de SageMaker IA como parte de una canalización.

**Restricciones de longitud del prefijo**

Los nombres de los trabajos tienen restricciones de longitud internas específicas para cada paso de la canalización. Esta restricción también limita la longitud del prefijo permitido. Los requisitos de longitud de los prefijos son los siguientes:


| Paso de canalización | Longitud del prefijo | 
| --- | --- | 
|   `[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`, `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`, `[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`, `[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`, `[ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)`, `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)`, `[RegisterModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`   |  38  | 
|  `[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`, `[AutoML](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`  |  6  | 

### Aplicación de prefijos de trabajo a una política de IAM
<a name="build-and-manage-step-permissions-prefix-iam"></a>

El administrador crea políticas de IAM que permiten a los usuarios de prefijos específicos crear trabajos. El siguiente ejemplo de política permite a los científicos de datos crear trabajos de entrenamiento si utilizan el prefijo `MyBaseJobName`. 

```
{
    "Action": "sagemaker:CreateTrainingJob",
    "Effect": "Allow",
    "Resource": [
        "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*"
    ]
}
```

### Aplicación de prefijos de trabajo a las instancias de canalización
<a name="build-and-manage-step-permissions-prefix-inst"></a>

El prefijo se especifica con el argumento `*base_job_name` de la clase de instancia del trabajo.

**nota**  
Debe pasar el prefijo de trabajo con el argumento `*base_job_name` a la instancia de trabajo antes de crear un paso de canalización. Esta instancia de trabajo contiene la información necesaria para que el trabajo se ejecute como un paso de una canalización. Este argumento varía en función de la instancia de trabajo utilizada. En la siguiente lista se muestra el argumento que se debe utilizar para cada tipo de paso de la canalización:  
`base_job_name` para las clases `[Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)` (`[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`), `[Processor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html)` (`[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`) y `[AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)` (`[AutoMLStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`)
`tuning_base_job_name` para la clase `[Tuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)` (`[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`)
`transform_base_job_name` para la clase `[Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html)` (`[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`)
`base_job_name` de `[CheckJobConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#checkjobconfig)` para las clases `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)` (Quality Check) y `[ClarifyCheckstep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)` (Clarify Check)
Para la clase `[Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html)`, el argumento utilizado depende de si ejecuta `create` o `register` en su modelo antes de pasar el resultado a `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`  
Si llama a `create`, el prefijo personalizado proviene del argumento `name` cuando construye su modelo (es decir, `Model(name=)`)
Si llama a `register`, el prefijo personalizado proviene del argumento `model_package_name` de su llamada a `register` (es decir, `my_model.register(model_package_name=)`)

En el siguiente ejemplo se muestra cómo especificar un prefijo para una nueva instancia de trabajo de entrenamiento.

```
# Create a job instance
xgb_train = Estimator(
    image_uri=image_uri,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=model_path,
    role=role,
    subnets=["subnet-0ab12c34567de89f0"],
    base_job_name="MyBaseJobName"
    security_group_ids=["sg-1a2bbcc3bd4444e55"],
    tags = [ ... ]
    encrypt_inter_container_traffic=True, 
)

# Attach your job instance to a pipeline step
step_train = TrainingStep(
    name="TestTrainingJob",
    estimator=xgb_train, 
    inputs={
        "train": TrainingInput(...), 
        "validation": TrainingInput(...) 
    }
)
```

El prefijo del trabajo está desactivado de forma predeterminada. Para activar esta característica, utilice la opción `use_custom_job_prefix` de `PipelineDefinitionConfig`, tal como se muestra en el siguiente fragmento:

```
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
        
# Create a definition configuration and toggle on custom prefixing
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True);

# Create a pipeline with a custom prefix
 pipeline = Pipeline(
     name="MyJobPrefixedPipeline",
     parameters=[...]
     steps=[...]
     pipeline_definition_config=definition_config
)
```

Cree y ejecute su canalización. En el siguiente ejemplo, se crea y ejecuta una canalización, y también se muestra cómo desactivar los prefijos de trabajo y volver a ejecutar la canalización.

```
pipeline.create(role_arn=sagemaker.get_execution_role())

# Optionally, call definition() to confirm your prefixed job names are in the built JSON
pipeline.definition()
pipeline.start()
      
# To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline 
# via upsert() or update(), and start a new run
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Del mismo modo, puede activar la característica para las canalizaciones existentes e iniciar una nueva ejecución que utilice prefijos de trabajo.

```
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Por último, para ver su trabajo con un prefijo personalizado, llame a `list_steps` en la ejecución de la canalización.

```
steps = execution.list_steps()

prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
```

## Personalización del acceso a las versiones de canalización
<a name="build-and-manage-step-permissions-version"></a>

Puede conceder acceso personalizado a versiones específicas de Amazon SageMaker Pipelines mediante la clave de `sagemaker:PipelineVersionId` condición. Por ejemplo, la política que aparece a continuación permite iniciar las ejecuciones o actualizar la versión de la canalización solo para la versión con el ID de versión 6 o superior.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowStartPipelineExecution",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartPipelineExecution",
            "sagemaker:UpdatePipelineVersion"
        ],
        "Resource": "*",
        "Condition": {
            "NumericGreaterThanEquals": {
                "sagemaker:PipelineVersionId": 6
            }
        }
    }
}
```

------

Para obtener más información sobre las claves de condición compatibles, consulta [Claves de condición para Amazon SageMaker AI](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys).

## Políticas de control de servicios con canalizaciones
<a name="build-and-manage-scp"></a>

Las políticas de control de servicios (SCPs) son un tipo de política organizacional que puede usar para administrar los permisos en su organización. SCPs ofrecen un control central sobre el número máximo de permisos disponibles para todas las cuentas de su organización. Al utilizar Pipelines en su organización, puede asegurarse de que los científicos de datos gestionen las ejecuciones de sus pipelines sin tener que interactuar con la AWS consola. 

Si utiliza una VPC con su SCP que restringe el acceso a Amazon S3, debe tomar medidas para permitir que su canalización acceda a otros recursos de Amazon S3. 

Para permitir que Canalizaciones acceda a Amazon S3 fuera de su VPC con la función `JsonGet`, actualice la SCP de su organización para asegurarse de que el rol que usa Canalizaciones pueda acceder a Amazon S3. Para ello, cree una excepción para los roles que utiliza el ejecutor de Canalizaciones mediante el rol de ejecución de canalizaciones a través de una etiqueta de entidad principal y una clave de condición. 

**Concesión de permiso a Canalizaciones para acceder a Amazon S3 fuera de su VPC**

1. Cree una etiqueta única para su rol de ejecución de la canalización según los pasos de [Etiquetado de usuarios y roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html). 

1. Conceda una excepción en su SCP utilizando la clave de condición `Aws:PrincipalTag IAM` de la etiqueta que ha creado. Para obtener más información, consulte [Creación, actualización y eliminación de políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html). 

# Configuración de la compatibilidad entre cuentas para Canalizaciones
<a name="build-and-manage-xaccount"></a>

El soporte multicuenta para Amazon SageMaker Pipelines le permite colaborar en procesos de aprendizaje automático con otros equipos u organizaciones que operan en cuentas diferentes. AWS Al configurar el uso compartido de canalizaciones entre cuentas, puede conceder acceso controlado a las canalizaciones, permitir que otras cuentas vean los detalles de las canalizaciones, activar las ejecuciones y supervisar las ejecuciones. En el siguiente tema, se explica cómo configurar el uso compartido de canalizaciones entre cuentas, las diferentes políticas de permisos disponibles para los recursos compartidos y cómo acceder a las entidades de canalización compartidas e interactuar con ellas mediante llamadas directas a la API a la IA. SageMaker 

## Configuración del uso compartido de canalizaciones entre cuentas
<a name="build-and-manage-xaccount-set-up"></a>

SageMaker La IA utiliza [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM) para ayudarte a compartir de forma segura las entidades de tu canalización entre cuentas. 

### Creación de un recurso compartido
<a name="build-and-manage-xaccount-set-up-console"></a>

1. Seleccione **Crear un recurso compartido** a través de la [Consola de AWS RAM](https://console.aws.amazon.com/ram/home).

1. Al especificar los detalles del uso compartido de los recursos, elija el tipo de recurso de Canalizaciones y seleccione una o más canalizaciones que desee compartir. Al compartir una canalización con cualquier otra cuenta, también se comparten todas sus ejecuciones de forma implícita.

1. Asocie permisos a un recurso compartido. Elija la política predeterminada de permisos de solo lectura o la política ampliada de permisos de ejecución de canalizaciones. Para obtener información más detallada, consulte [Políticas de permisos para los recursos de Canalizaciones](#build-and-manage-xaccount-permissions). 
**nota**  
Si seleccionas la política de ejecución de canalizaciones ampliadas, ten en cuenta que cualquier comando de inicio, parada y reintento invocado por cuentas compartidas utiliza recursos de la AWS cuenta que compartió la canalización.

1. Usa la AWS cuenta IDs para especificar las cuentas a las que quieres conceder acceso a tus recursos compartidos.

1. Revise la configuración del recurso compartido y seleccione **Crear recurso compartido**. La asociación del recurso y la entidad principal puede tardar unos minutos en completarse.

Para obtener más información, consulte [Sharing your AWS resources](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) en la *Guía del usuario de AWS Resource Access Manager*.

### Obtención de respuestas a la invitación para compartir recursos
<a name="build-and-manage-xaccount-set-up-responses"></a>

Una vez establecidas la cuota de recursos y las asociaciones de entidades principales, las cuentas de AWS especificadas reciben una invitación para unirse al recurso compartido. Las AWS cuentas deben aceptar la invitación para acceder a cualquier recurso compartido.

Para obtener más información sobre cómo aceptar una invitación para compartir recursos AWS RAM, consulte [Uso de AWS recursos compartidos](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) en la *Guía del usuario de AWS Resource Access Manager*.

## Políticas de permisos para los recursos de Canalizaciones
<a name="build-and-manage-xaccount-permissions"></a>

Al crear tu recurso compartido, elige una de las dos políticas de permisos compatibles para asociarla al tipo de recurso de canalización de SageMaker IA. Ambas políticas permiten el acceso a cualquier canalización seleccionada y a todas sus ejecuciones. 

### Permisos predeterminados de solo lectura
<a name="build-and-manage-xaccount-permissions-default"></a>

La política `AWSRAMDefaultPermissionSageMakerPipeline` permite las siguientes acciones de solo lectura:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"
```

### Permisos ampliados de ejecución de canalización
<a name="build-and-manage-xaccount-permissions-extended"></a>

La política `AWSRAMPermissionSageMakerPipelineAllowExecution` incluye todos los permisos de solo lectura de la política predeterminada y también permite que las cuentas compartidas inicien, detengan y reintenten las ejecuciones de canalizaciones.

**nota**  
Ten en cuenta el uso de los AWS recursos cuando utilices la política de permisos de ejecución ampliados de canalización. Con esta política, las cuentas compartidas pueden iniciar, detener y volver a intentar las ejecuciones en canalización. La cuenta propietaria consume todos los recursos utilizados para las ejecuciones de canalizaciones compartidas. 

La política ampliada de permisos de ejecución de canalizaciones permite las siguientes acciones:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"
```

## Acceso a las entidades de canalización compartidas mediante llamadas directas a la API
<a name="build-and-manage-xaccount-api-calls"></a>

Una vez que se haya configurado el uso compartido de canalizaciones entre cuentas, puedes ejecutar las siguientes acciones de SageMaker API mediante un ARN de canalización:

**nota**  
Solo puede llamar a los comandos de la API si están incluidos en los permisos asociados a su recurso compartido. Si seleccionas la `AWSRAMPermissionSageMakerPipelineAllowExecution` política, los comandos start, stop y retry utilizan los recursos de la AWS cuenta que compartió la canalización.
+ [DescribePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipeline.html)
+ [DescribePipelineDefinitionForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineDefinitionForExecution.html)
+ [DescribePipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html)
+ [ListPipelineExecutions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutions.html)
+ [ListPipelineExecutionSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutionSteps.html)
+ [ListPipelineParametersForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineParametersForExecution.html)
+ [StartPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html)
+ [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)
+ [RetryPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryPipelineExecution.html)

# Parámetros de canalizaciones
<a name="build-and-manage-parameters"></a>

Puede introducir variables en la definición de su canalización mediante parámetros. Puede hacer referencia a los parámetros que defina en la definición de la canalización. Los parámetros tienen un valor predeterminado, que puede anular si especifica valores para los parámetros al iniciar la ejecución de una canalización. El valor predeterminado debe ser una instancia que coincida con el tipo de parámetro. Todos los parámetros utilizados en las definiciones de los pasos deben estar definidos en la definición de la canalización. En este tema, se describen los parámetros que puede definir y cómo implementarlos.

Amazon SageMaker Pipelines admite los siguientes tipos de parámetros: 
+  `ParameterString`: representa un parámetro de cadena. 
+  `ParameterInteger`: representa un parámetro entero. 
+  `ParameterFloat`: representa un parámetro flotante.
+  `ParameterBoolean`: representa un tipo booleano de Python.

Los parámetros tienen el siguiente formato:

```
<parameter> = <parameter_type>(
    name="<parameter_name>",
    default_value=<default_value>
)
```

El siguiente ejemplo muestra una implementación de parámetro de muestra.

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
    ParameterFloat,
    ParameterBoolean
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
```

El parámetro se pasa al crear la canalización, tal como se muestra en el siguiente ejemplo.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_count
    ],
    steps=[step_process]
)
```

También puede pasar un valor de parámetro diferente del valor predeterminado a una ejecución de canalización, como se muestra en el ejemplo siguiente.

```
execution = pipeline.start(
    parameters=dict(
        ProcessingInstanceCount="2",
        ModelApprovalStatus="Approved"
    )
)
```

Puede manipular parámetros con funciones del SDK de SageMaker Python como`[ sagemaker.workflow.functions.Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.functions.Join)`. Para obtener más información sobre los parámetros, consulte [Parámetros de SageMaker canalizaciones](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parameters).

[Para conocer las limitaciones conocidas de los parámetros de Pipelines, consulte *[Limitaciones: parametrización en el SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#parameterization)* de Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

# Pasos de canalizaciones
<a name="build-and-manage-steps"></a>

Las canalizaciones se componen de pasos. Estos pasos definen las acciones que realiza la canalización y las relaciones entre los pasos mediante propiedades. En la página siguiente, se describen los tipos de pasos, sus propiedades y las relaciones entre ellos.

**Topics**
+ [Adición de un paso](build-and-manage-steps-types.md)
+ [Añadir integración](build-and-manage-steps-integration.md)
+ [Propiedades de paso](#build-and-manage-properties)
+ [Paralelismo de paso](#build-and-manage-parallelism)
+ [Dependencia de datos entre pasos](#build-and-manage-data-dependency)
+ [Dependencia personalizada entre pasos](#build-and-manage-custom-dependency)
+ [Imágenes personalizadas en un paso](#build-and-manage-images)

# Adición de un paso
<a name="build-and-manage-steps-types"></a>

A continuación, se describen los requisitos de cada tipo de paso y se proporciona un ejemplo de implementación del paso, así como la forma de añadirlo a Canalizaciones. No son implementaciones funcionales porque no proporcionan los recursos y las entradas necesarios. Para ver un tutorial que implemente estos pasos, consulte[Acciones de canalizaciones](pipelines-build.md).

**nota**  
También puede crear un paso a partir del código de machine learning local convirtiéndolo en un paso de Canalizaciones con el decorador `@step`. Para obtener más información, consulte [Decorador @step](#step-type-custom).

Amazon SageMaker Pipelines admite los siguientes tipos de pasos:
+ [Ejecutar código](#step-type-executecode)

  [Procesando](#step-type-processing)
+ [Formación](#step-type-training)
+ [Ajuste](#step-type-tuning)
+ [AutoML](#step-type-automl)
+ [`Model`](#step-type-model)
+ [`Create model`](#step-type-create-model)
+ [`Register model`](#step-type-register-model)
+ [`Deploy model (endpoint)`](#step-type-deploy-model-endpoint)
+ [Transformar](#step-type-transform)
+ [Condición](#step-type-condition)
+ [`Callback`](#step-type-callback)
+ [Lambda](#step-type-lambda)
+ [`ClarifyCheck`](#step-type-clarify-check)
+ [`QualityCheck`](#step-type-quality-check)
+ [EMR](#step-type-emr)
+ [Trabajo de cuaderno](#step-type-notebook-job)
+ [Fail](#step-type-fail)

## Decorador @step
<a name="step-type-custom"></a>

Si quiere organizar un trabajo de aprendizaje automático personalizado que aproveche las funciones avanzadas de SageMaker IA u otros AWS servicios de la interfaz de usuario de drag-and-drop Pipelines, utilice el. [paso de ejecución del código](#step-type-executecode)

Puede crear un paso a partir del código de machine learning local mediante el decorador `@step`. Después de probar el código, puedes convertir la función en un paso de una canalización de SageMaker IA anotándolo con el decorador. `@step` Canalizaciones crea y ejecuta una canalización al pasar el resultado de la función decorada con`@step` como paso a la canalización. También puedes crear una canalización de DAG de varios pasos que incluya una o más funciones `@step` decoradas, así como los pasos de una canalización de IA tradicional SageMaker . Para obtener más información sobre cómo crear un paso con el decorador `@step`, consulte [Lift-and-shift Código Python con el decorador @step](pipelines-step-decorator.md).

## paso de ejecución del código
<a name="step-type-executecode"></a>

En la drag-and-drop interfaz de usuario de Pipelines, puedes usar un paso de ejecución de **código para ejecutar** tu propio código como paso de canalización. Puede cargar una función, un script o un cuaderno de Python para que se ejecute como parte de su canalización. Deberías usar este paso si quieres organizar un trabajo de aprendizaje automático personalizado que aproveche las funciones avanzadas de SageMaker IA u otros servicios. AWS 

El paso **Execute Code** carga los archivos a tu bucket de Amazon S3 predeterminado para Amazon SageMaker AI. Es posible que este bucket no tenga establecidos los permisos de uso compartido de recursos entre orígenes (CORS). Para obtener más información sobre cómo configurar permisos de CORS, consulte [Requisito de CORS para datos de imagen de entrada](sms-cors-update.md).

El paso **Ejecutar código** utiliza un trabajo de SageMaker formación de Amazon para ejecutar el código. Asegúrese de que su rol de IAM tenga los permisos de la API `sagemaker:DescribeTrainingJob` y `sagemaker:CreateTrainingJob`. Para obtener más información sobre todos los permisos necesarios para Amazon SageMaker AI y cómo configurarlos, consulte[Permisos de la API de Amazon SageMaker AI: referencia sobre acciones, permisos y recursos](api-permissions-reference.md).

Para añadir un paso de ejecución de código a una canalización mediante el diseñador de canalizaciones, haga lo siguiente:

1. Abre la consola de Amazon SageMaker Studio siguiendo las instrucciones de[Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Ejecutar código** y arrástrelo al lienzo.

1. En el lienzo, elige el paso **Ejecutar código** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**.

1. Puede cargar un solo archivo para ejecutarlo o cargar una carpeta comprimida que contenga varios artefactos.

1. Para cargar un solo archivo, puede proporcionar parámetros opcionales para cuadernos, funciones de Python o scripts.

1. Al proporcionar funciones de Python, se debe proporcionar un controlador en el formato `file.py:<function_name>`.

1. Para cargar carpetas comprimidas, se deben proporcionar las rutas relativas al código y, si lo desea, puede proporcionar las rutas a un archivo `requirements.txt` o script de inicialización dentro de la carpeta comprimida.

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Ejecutar código** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Ejecutar código** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Ejecutar código** que ha añadido, haga clic y arrastre el cursor desde el paso **Ejecutar código** hasta el paso para crear un borde. Se puede hacer referencia a los resultados de los pasos **Ejecutar código** para las funciones de Python.

## Paso de procesamiento
<a name="step-type-processing"></a>

Utilice un paso de procesamiento para crear un trabajo de procesamiento para el procesamiento de datos. Para obtener más información sobre los trabajos de procesamiento, consulte [Process Data and Evaluate Models](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).

------
#### [ Pipeline Designer ]

Para añadir un paso de procesamiento a una canalización mediante el diseñador de canalizaciones, haga lo siguiente:

1. Abre la consola de Amazon SageMaker Studio siguiendo las instrucciones de[Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. En la barra lateral izquierda, elija **Procesar datos** y arrástrelos al lienzo.

1. En el lienzo, elija el paso **Procesar datos** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Procesar datos** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Procesar datos** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Procesar datos** que ha añadido, haga clic y arrastre el cursor desde el paso **Procesar datos** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

Un paso de procesamiento requiere un procesador, un script de Python que defina el código de procesamiento, las salidas para el procesamiento y los argumentos del trabajo. El siguiente ejemplo muestra cómo crear una definición de `ProcessingStep`. 

```
from sagemaker.sklearn.processing import SKLearnProcessor

sklearn_processor = SKLearnProcessor(framework_version='1.0-1',
                                     role=<role>,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)
```

```
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

inputs = [
    ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),
]

outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args = sklearn_processor.run(inputs=inputs, outputs=outputs,
        code="abalone/preprocessing.py")
)
```

**Pasar parámetros de tiempo de ejecución**

El siguiente ejemplo muestra cómo pasar los parámetros de tiempo de ejecución de un PySpark procesador a un`ProcessingStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.spark.processing import PySparkProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

pipeline_session = PipelineSession()

pyspark_processor = PySparkProcessor(
    framework_version='2.4',
    role=<role>,
    instance_type='ml.m5.xlarge',
    instance_count=1,
    sagemaker_session=pipeline_session,
)

step_args = pyspark_processor.run(
    inputs=[ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
    ],
    code="preprocess.py",
    arguments=None,
)


step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args=step_args,
)
```

Para obtener más información sobre los requisitos de los pasos de procesamiento, consulte [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep)documentación. Para ver un ejemplo detallado, consulte el cuaderno de ejemplo [Orchestrate Jobs to Train and Evaluate Models with Amazon SageMaker Pipelines](https://github.com/aws/amazon-sagemaker-examples/blob/62de6a1fca74c7e70089d77e36f1356033adbe5f/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.ipynb). En la sección *Definir un paso de procesamiento para la ingeniería de características* se incluye más información.

------

## Paso de entrenamiento
<a name="step-type-training"></a>

Puede usar un paso de entrenamiento para crear un trabajo de entrenamiento para entrenar un modelo. Para obtener más información sobre los trabajos de formación, consulte [Entrenar a un modelo con Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

Un paso de entrenamiento requiere un estimador, así como la introducción y la validación de los datos de entrenamiento.

------
#### [ Pipeline Designer ]

Para añadir un paso de entrenamiento a una canalización mediante el diseñador de canalizaciones, haga lo siguiente:

1. Abre la consola de Amazon SageMaker Studio siguiendo las instrucciones de[Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Entrenar modelo** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Entrenar modelo** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Entrenar modelo** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Entrenar modelo** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Entrenar modelo** que ha añadido, haga clic y arrastre el cursor desde el paso **Entrenar modelo** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

El siguiente ejemplo muestra cómo crear una definición de `TrainingStep`. Para obtener más información sobre los requisitos de los pasos de entrenamiento, consulte [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep)documentación.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TrainingStep

from sagemaker.xgboost.estimator import XGBoost

pipeline_session = PipelineSession()

xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session)

step_args = xgb_estimator.fit(
    inputs={
        "train": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv"
        ),
        "validation": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv"
        )
    }
)

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=step_args,
)
```

------

## Paso de ajuste
<a name="step-type-tuning"></a>

Se utiliza un paso de ajuste para crear un trabajo de ajuste de hiperparámetros, también conocido como optimización de hiperparámetros (HPO). Un trabajo de ajuste de hiperparámetros ejecuta varios trabajos de entrenamiento, cada uno de los cuales produce una versión del modelo. Para obtener más información sobre el ajuste de hiperparámetros, consulte [Ajuste automático de modelos con IA SageMaker](automatic-model-tuning.md).

El trabajo de ajuste está asociado con el experimento de SageMaker IA que se está llevando a cabo, y los trabajos de formación se crean a modo de pruebas. Para obtener más información, consulte [Integración de experimentos](pipelines-experiments.md).

Un paso de ajuste requiere una [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)y aportaciones de formación. Puede volver a entrenar los trabajos de ajuste anteriores si especifica el parámetro `warm_start_config` del `HyperparameterTuner`. Para obtener más información sobre el inicio en caliente y el ajuste de hiperparámetros, consulte [Ejecución de un trabajo de ajuste de hiperparámetros de inicio en caliente](automatic-model-tuning-warm-start.md).

[Se utiliza el método [get\$1top\$1model\$1s3\$1uri del sagemaker.workflow.steps](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep.get_top_model_s3_uri). TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)clase para obtener el artefacto del modelo de una de las versiones del modelo con mejor rendimiento. [Para ver un cuaderno que muestre cómo utilizar un paso de ajuste en una canalización de SageMaker IA, consulta sagemaker-pipelines-tuning-step .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/tuning-step/sagemaker-pipelines-tuning-step.ipynb)

**importante**  
Los pasos de ajuste se introdujeron en Amazon SageMaker Python SDK v2.48.0 y Amazon SageMaker Studio Classic v3.8.0. Debe actualizar Studio Classic antes de utilizar un paso de ajuste o no aparecerá el DAG de canalización. Para actualizar Studio Classic, consulte [Cierre y actualice Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

El siguiente ejemplo muestra cómo crear una definición de `TuningStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.tuner import HyperparameterTuner
from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TuningStep

tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession())
    
step_tuning = TuningStep(
    name = "HPTuning",
    step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data"))
)
```

**Obtención de la mejor versión del modelo**

El siguiente ejemplo muestra cómo obtener la mejor versión del modelo a partir del trabajo de ajuste mediante el método `get_top_model_s3_uri`. A lo sumo, las 50 versiones con mejor rendimiento están disponibles clasificadas según. [HyperParameterTuningJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html) El argumento `top_k` es un índice de las versiones, donde `top_k=0` es la versión con mejor rendimiento y `top_k=49` es la versión con peor rendimiento.

```
best_model = Model(
    image_uri=image_uri,
    model_data=step_tuning.get_top_model_s3_uri(
        top_k=0,
        s3_bucket=sagemaker_session.default_bucket()
    ),
    ...
)
```

Para obtener más información sobre los requisitos de los pasos de ajuste, consulte [sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)documentación.

## Paso de afinamiento
<a name="step-type-fine-tuning"></a>

El ajuste fino entrena un modelo básico previamente entrenado de Amazon SageMaker JumpStart en un nuevo conjunto de datos. Este proceso, también conocido como aprendizaje por transferencia, puede producir modelos precisos con conjuntos de datos más pequeños y con menos tiempo de entrenamiento. Al afinar un modelo, puede usar el conjunto de datos predeterminado o elegir sus propios datos. Para obtener más información sobre cómo ajustar con precisión un modelo base, consulte. JumpStart [Ajuste de un modelo](jumpstart-fine-tune.md)

El paso de ajuste utiliza un trabajo de SageMaker formación de Amazon para personalizar el modelo. Asegúrese de que su rol de IAM tenga los permisos de API `sagemaker:DescribeTrainingJob` y `sagemaker:CreateTrainingJob` para ejecutar el trabajo de afinamiento en su canalización. Para obtener más información sobre los permisos necesarios para Amazon SageMaker AI y cómo configurarlos, consulte[Permisos de la API de Amazon SageMaker AI: referencia sobre acciones, permisos y recursos](api-permissions-reference.md).

Para añadir un paso del **modelo de ajuste** preciso a su proceso mediante el drag-and-drop editor, siga estos pasos:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Ajustar modelo de forma más precisa** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Ajustar modelo de forma más precisa** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**.

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Ajustar modelo de forma más precisa** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Ajustar modelo de forma más precisa** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Ajustar modelo de forma más precisa** que ha añadido, haga clic y arrastre el cursor desde el paso **Ajustar modelo de forma más precisa** hasta el paso para crear un borde.

## Paso AutoML
<a name="step-type-automl"></a>

Utilice la API de [AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html) para crear un trabajo de AutoML para entrenar automáticamente un modelo. Para obtener más información sobre los trabajos de AutoML, consulte [Automatizar el desarrollo de modelos con Amazon SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) Autopilot. 

**nota**  
Actualmente, el paso AutoML solo admite el [modo de entrenamiento de ensamblaje](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html).

El siguiente ejemplo muestra cómo crear una definición mediante `AutoMLStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.automl_step import AutoMLStep

pipeline_session = PipelineSession()

auto_ml = AutoML(...,
    role="<role>",
    target_attribute_name="my_target_attribute_name",
    mode="ENSEMBLING",
    sagemaker_session=pipeline_session) 

input_training = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-training-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="training",
)
input_validation = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-validation-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="validation",
)

step_args = auto_ml.fit(
    inputs=[input_training, input_validation]
)

step_automl = AutoMLStep(
    name="AutoMLStep",
    step_args=step_args,
)
```

**Obtención de la mejor versión del modelo**

El paso AutoML entrena automáticamente a varios candidatos de modelos. Obtenga el modelo con la mejor métrica objetiva del trabajo AutoML utilizando el método `get_best_auto_ml_model` siguiente. También debe utilizar un `role` de IAM para acceder a los artefactos del modelo.

```
best_model = step_automl.get_best_auto_ml_model(role=<role>)
```

Para obtener más información, consulte el paso [AutoML](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep) en el SDK de SageMaker Python.

## Paso de modelo
<a name="step-type-model"></a>

Utilice a `ModelStep` para crear o registrar un modelo de SageMaker IA. Para obtener más información sobre `ModelStep` los requisitos, consulte [sagemaker.workflow.model\$1step. ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.model_step.ModelStep)documentación.

### Crear un modelo
<a name="step-type-model-create"></a>

Puede usar un `ModelStep` para crear un modelo de SageMaker IA. A `ModelStep` requiere artefactos del modelo e información sobre el tipo de instancia de SageMaker IA que necesita usar para crear el modelo. Para obtener más información sobre los modelos de SageMaker IA, consulte [Entrenar un modelo con Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

El siguiente ejemplo muestra cómo crear una definición de `ModelStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.model import Model
from sagemaker.workflow.model_step import ModelStep

step_train = TrainingStep(...)
model = Model(
    image_uri=pytorch_estimator.training_image_uri(),
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    sagemaker_session=PipelineSession(),
    role=role,
)

step_model_create = ModelStep(
   name="MyModelCreationStep",
   step_args=model.create(instance_type="ml.m5.xlarge"),
)
```

### Registrar un modelo
<a name="step-type-model-register"></a>

Puede utilizar un `ModelStep` para registrar un `sagemaker.model.Model` o un `sagemaker.pipeline.PipelineModel` en el Registro de SageMaker modelos de Amazon. Un `PipelineModel` representa una canalización de inferencia, que es un modelo compuesto de una secuencia lineal de contenedores que procesan solicitudes de inferencia. Para obtener más información sobre cómo registrar un modelo, consulte [Implementación del registro de modelos con el registro de modelos](model-registry.md).

El siguiente ejemplo muestra cómo crear un `ModelStep` que registre un `PipelineModel`.

```
import time

from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

pipeline_session = PipelineSession()

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(
   model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
   entry_point='inference.py',
   source_dir='sklearn_source_dir/',
   code_location=code_location,
   framework_version='1.0-1',
   role=role,
   sagemaker_session=pipeline_session,
   py_version='py3'
)

xgboost_model = XGBoostModel(
   model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
   entry_point='inference.py',
   source_dir='xgboost_source_dir/',
   code_location=code_location,
   framework_version='0.90-2',
   py_version='py3',
   sagemaker_session=pipeline_session,
   role=role
)

from sagemaker.workflow.model_step import ModelStep
from sagemaker import PipelineModel

pipeline_model = PipelineModel(
   models=[sklearn_model, xgboost_model],
   role=role,sagemaker_session=pipeline_session,
)

register_model_step_args = pipeline_model.register(
    content_types=["application/json"],
   response_types=["application/json"],
   inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
   transform_instances=["ml.m5.xlarge"],
   model_package_group_name='sipgroup',
)

step_model_registration = ModelStep(
   name="AbaloneRegisterModel",
   step_args=register_model_step_args,
)
```

## Paso Crear modelo
<a name="step-type-create-model"></a>

El paso Crear modelo se utiliza para crear un modelo de SageMaker IA. Para obtener más información sobre los modelos de SageMaker IA, consulte[Entrena a un modelo con Amazon SageMaker](how-it-works-training.md).

El paso de creación del modelo requiere artefactos del modelo e información sobre el tipo de instancia de SageMaker IA que debe usar para crear el modelo. Los siguientes ejemplos muestran cómo crear una definición del paso Crear modelo. Para obtener más información sobre los requisitos de los pasos para crear un modelo, consulta [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep)documentación.

------
#### [ Pipeline Designer ]

Para añadir un paso de creación de modelo a su canalización, haga lo siguiente:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Crear modelo** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Crear modelo** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Crear modelo** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Crear modelo** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Crear modelo** que ha añadido, haga clic y arrastre el cursor desde el paso **Crear modelo** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

**importante**  
Recomendamos usarlo [Paso de modelo](#step-type-model) para crear modelos a partir de la versión 2.90.0 del SDK de SageMaker Python para IA. `CreateModelStep`seguirá funcionando en las versiones anteriores del SDK de SageMaker Python, pero ya no es compatible activamente.

```
from sagemaker.workflow.steps import CreateModelStep

step_create_model = CreateModelStep(
    name="AbaloneCreateModel",
    model=best_model,
    inputs=inputs
)
```

------

## Paso Registrar modelo
<a name="step-type-register-model"></a>

El paso Registrar el modelo registra un modelo en el Registro de SageMaker modelos.

------
#### [ Pipeline Designer ]

Para registrar un modelo desde una canalización mediante el diseñador de canalizaciones, haga lo siguiente:

1. Abre la consola de Amazon SageMaker Studio siguiendo las instrucciones de[Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Registrar modelo** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Registrar modelo** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Registrar modelo** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Registrar modelo** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Registrar modelo** que ha añadido, haga clic y arrastre el cursor desde el paso **Registrar modelo** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

**importante**  
Recomendamos usarlo [Paso de modelo](#step-type-model) para registrar modelos a partir de la versión 2.90.0 del SDK de SageMaker Python para IA. `RegisterModel`seguirá funcionando en las versiones anteriores del SDK de SageMaker Python, pero ya no es compatible activamente.

[Debe seguir un `RegisterModel` paso para registrar un Sagemaker.Model.model o un [sagemaker.pipeline](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html). PipelineModel](https://sagemaker.readthedocs.io/en/stable/api/inference/pipeline.html#pipelinemodel)con el Registro de SageMaker modelos de Amazon. Un `PipelineModel` representa una canalización de inferencia, que es un modelo compuesto de una secuencia lineal de contenedores que procesan solicitudes de inferencia.

Para obtener más información sobre cómo registrar un modelo, consulte [Implementación del registro de modelos con el registro de modelos](model-registry.md). Para obtener más información sobre los requisitos de los `RegisterModel` pasos, consulte [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel)documentación.

El siguiente ejemplo muestra cómo crear un paso `RegisterModel` que registre un `PipelineModel`.

```
import time
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
 entry_point='inference.py',
 source_dir='sklearn_source_dir/',
 code_location=code_location,
 framework_version='1.0-1',
 role=role,
 sagemaker_session=sagemaker_session,
 py_version='py3')

xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
 entry_point='inference.py',
 source_dir='xgboost_source_dir/',
 code_location=code_location,
 framework_version='0.90-2',
 py_version='py3',
 sagemaker_session=sagemaker_session,
 role=role)

from sagemaker.workflow.step_collections import RegisterModel
from sagemaker import PipelineModel
pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session)

step_register = RegisterModel(
 name="AbaloneRegisterModel",
 model=pipeline_model,
 content_types=["application/json"],
 response_types=["application/json"],
 inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
 transform_instances=["ml.m5.xlarge"],
 model_package_group_name='sipgroup',
)
```

Si no se proporciona el `model`, el paso de registro del modelo requiere un estimador, como se muestra en el ejemplo siguiente.

```
from sagemaker.workflow.step_collections import RegisterModel

step_register = RegisterModel(
    name="AbaloneRegisterModel",
    estimator=xgb_train,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    content_types=["text/csv"],
    response_types=["text/csv"],
    inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
    transform_instances=["ml.m5.xlarge"],
    model_package_group_name=model_package_group_name,
    approval_status=model_approval_status,
    model_metrics=model_metrics
)
```

------

## Paso Implementar modelo (puntos de conexión)
<a name="step-type-deploy-model-endpoint"></a>

En el diseñador de canalizaciones, utilice el paso Implementar modelo (punto de conexión) para implementar el modelo en un punto de conexión. Puede crear un nuevo punto de conexión o utilizar un punto de conexión existente. La inferencia en tiempo real es idónea para cargas de trabajo de inferencia con requisitos en tiempo real, interactivos y de baja latencia. Puede implementar su modelo en los servicios de alojamiento de SageMaker IA y obtener un punto final en tiempo real que pueda usarse como inferencia. Estos puntos de conexión están totalmente administrados y admiten escalado automático. Para obtener más información sobre la inferencia en tiempo real en la SageMaker IA, consulte. [Inferencia en tiempo real](realtime-endpoints.md)

Antes de añadir un paso del modelo de implementación a su canalización, asegúrese de que su rol de IAM tenga los siguientes permisos:
+ `sagemaker:CreateModel`
+ `sagemaker:CreateEndpointConfig`
+ `sagemaker:CreateEndpoint`
+ `sagemaker:UpdateEndpoint`
+ `sagemaker:DescribeModel`
+ `sagemaker:DescribeEndpointConfig`
+ `sagemaker:DescribeEndpoint`

Para obtener más información sobre todos los permisos necesarios para la SageMaker IA y cómo configurarlos, consulte[Permisos de la API de Amazon SageMaker AI: referencia sobre acciones, permisos y recursos](api-permissions-reference.md).

Para añadir un paso de despliegue modelo a tu canalización en el drag-and-drop editor, sigue estos pasos:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Implementar modelo (punto de conexión)** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Implementar modelo (punto de conexión)** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**.

1. Si el lienzo incluye algún paso que precede inmediatamente al paso **Implementar modelo (punto de conexión)** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Implementar modelo (punto de conexión)** para crear un borde.

1. Si el lienzo incluye algún paso que sigue inmediatamente al paso **Implementar modelo (punto de conexión)** que ha añadido, haga clic y arrastre el cursor desde el paso **Implementar modelo (punto de conexión)** hasta el paso para crear un borde.

## Paso de transformación
<a name="step-type-transform"></a>

Utilice un paso de transformación por lotes para ejecutar la inferencia en todo un conjunto de datos. Para obtener más información acerca de la transformación por lotes, consulte [Transformaciones por lotes con canalizaciones de inferencia](inference-pipeline-batch.md).

Un paso de transformación requiere un transformador y los datos sobre los que se ejecutará la transformación por lotes. El siguiente ejemplo muestra cómo crear una definición del paso Transformar. Para obtener más información sobre los requisitos de los pasos de transformación, consulta [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep)documentación.

------
#### [ Pipeline Designer ]

Para añadir un paso de transformación por lotes a tu proceso mediante el editor drag-and-drop visual, haz lo siguiente:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, seleccione **Implementar modelo (transformación por lotes)** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Implementar modelo (transformación por lotes)** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulta [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep).

1. Si el lienzo incluye algún paso que precede inmediatamente al paso **Implementar modelo (transformación por lotes)** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Implementar modelo (transformación por lotes)** para crear un borde.

1. Si el lienzo incluye algún paso que sigue inmediatamente al paso **Implementar modelo (transformación por lotes)** que ha añadido, haga clic y arrastre el cursor desde el paso **Implementar modelo (transformación por lotes)** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.transformer import Transformer
from sagemaker.inputs import TransformInput
from sagemaker.workflow.steps import TransformStep

transformer = Transformer(..., sagemaker_session=PipelineSession())

step_transform = TransformStep(
    name="AbaloneTransform",
    step_args=transformer.transform(data="s3://amzn-s3-demo-bucket/my-data"),
)
```

------

## Paso de condición
<a name="step-type-condition"></a>

Se utiliza un paso de condición para evaluar la condición de las propiedades del paso y evaluar qué acción se debe realizar a continuación en la canalización.

Un paso de condición requiere lo siguiente:
+ Una lista de condiciones.
+ Una lista de pasos que se van a ejecutar si la condición se evalúa en `true`.
+ Una lista de pasos que se van a ejecutar si la condición se evalúa en `false`.

------
#### [ Pipeline Designer ]

Para añadir un paso de condición a una canalización mediante el diseñador de canalizaciones, haga lo siguiente:

1. Abre la consola de Amazon SageMaker Studio siguiendo las instrucciones de[Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, elija **Condición** y arrástrela al lienzo.

1. En el lienzo, elija el paso **Condición** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.condition_step.ConditionStep).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Condición** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Condición** para crear un borde.

1. Si el lienzo incluye algún paso que siga inmediatamente al paso **Condición** que ha añadido, haga clic y arrastre el cursor desde el paso **Condición** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

 El siguiente ejemplo muestra cómo crear una definición de `ConditionStep`. 

**Limitaciones**
+ Las canalizaciones no admiten el uso de pasos de condición anidados. No puede pasar un paso de condición como entrada para otro paso de condición.
+ Un paso de condición no puede usar pasos idénticos en ambas ramas. Si necesita la misma funcionalidad de paso en ambas ramas, duplique el paso y asígnele un nombre diferente.

```
from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value"
    ),
    right=6.0
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_register, step_create_model, step_transform],
    else_steps=[]
)
```

Para obtener más información sobre `ConditionStep` los requisitos, consulte [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#conditionstep) Referencia de API. Para obtener más información sobre las condiciones admitidas, consulte *[Amazon SageMaker Pipelines: Condiciones](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#conditions)* en la documentación del SDK de Python para SageMaker IA. 

------

## Paso de devolución de llamada
<a name="step-type-callback"></a>

Utilice un `Callback` paso para añadir procesos y AWS servicios adicionales a su flujo de trabajo que Amazon SageMaker Pipelines no proporcione directamente. Cuando se ejecuta un paso `Callback`, se lleva a cabo el siguiente procedimiento:
+ Canalizaciones envía un mensaje a una cola de Amazon Simple Queue Service (Amazon SQS) especificada por el cliente. El mensaje contiene un token generado por Canalizaciones y una lista de parámetros de entrada proporcionada por el cliente. Tras enviar el mensaje, Canalizaciones espera una respuesta del cliente.
+ El cliente recupera el mensaje de la cola de Amazon SQS e inicia su proceso personalizado.
+ Cuando finaliza el proceso, el cliente llama a una de las siguientes direcciones APIs y envía el token generado por Pipelines:
  +  [SendPipelineExecutionStepSuccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepSuccess.html), junto con una lista de parámetros de salida
  +  [SendPipelineExecutionStepFailure](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepFailure.html), junto con el motivo del fallo
+ La llamada a la API hace que Canalizaciones continúe con el proceso de canalización o produzcan un error.

Para obtener más información sobre los requisitos de los `Callback` pasos, consulte [sagemaker.workflow.callback\$1step. CallbackStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.callback_step.CallbackStep)documentación. Para obtener una solución completa, consulte [Ampliar los SageMaker canales para incluir pasos personalizados mediante pasos de devolución de llamadas](https://aws.amazon.com/blogs/machine-learning/extend-amazon-sagemaker-pipelines-to-include-custom-steps-using-callback-steps/).

**importante**  
`Callback`los pasos se introdujeron en Amazon SageMaker Python SDK v2.45.0 y Amazon SageMaker Studio Classic v3.6.2. Debe actualizar Studio Classic antes de utilizar un paso `Callback` o no aparecerá el DAG de canalización. Para actualizar Studio Classic, consulte [Cierre y actualice Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

En el siguiente ejemplo, se muestra una implementación del procedimiento anterior.

```
from sagemaker.workflow.callback_step import CallbackStep

step_callback = CallbackStep(
    name="MyCallbackStep",
    sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue",
    inputs={...},
    outputs=[...]
)

callback_handler_code = '
    import boto3
    import json

    def handler(event, context):
        sagemaker_client=boto3.client("sagemaker")

        for record in event["Records"]:
            payload=json.loads(record["body"])
            token=payload["token"]

            # Custom processing

            # Call SageMaker AI to complete the step
            sagemaker_client.send_pipeline_execution_step_success(
                CallbackToken=token,
                OutputParameters={...}
            )
'
```

**nota**  
Los parámetros de salida para `CallbackStep` no deben estar anidados. Por ejemplo, si utiliza un diccionario anidado como parámetro de salida, el diccionario se trata como una cadena única (p. ej. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Si proporciona un valor anidado, cuando intenta hacer referencia a un parámetro de salida concreto, la SageMaker IA arroja un error de cliente que no se puede volver a intentar.

**Comportamiento de detención**

Un proceso de canalización no se detiene mientras se ejecuta un paso `Callback`.

Cuando llamas a un proceso de canalización con un `Callback` paso [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)en ejecución, Pipelines envía un mensaje de Amazon SQS a la cola de SQS. El cuerpo del mensaje de SQS contiene un campo **Estado**, que se establece en `Stopping`. En el siguiente ejemplo se muestra un cuerpo de mensaje SQS.

```
{
  "token": "26vcYbeWsZ",
  "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a",
  "arguments": {
    "number": 5,
    "stringArg": "some-arg",
    "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv"
  },
  "status": "Stopping"
}
```

Debe añadir lógica a su consumidor de mensajes de Amazon SQS para tomar las medidas necesarias (por ejemplo, limpiar los recursos) al recibir el mensaje. A continuación, añada una llamada a `SendPipelineExecutionStepSuccess` o `SendPipelineExecutionStepFailure`.

Solo cuando Canalizaciones recibe una de estas llamadas detiene el proceso de canalización.

## Paso de Lambda
<a name="step-type-lambda"></a>

Se utiliza un paso Lambda para ejecutar una AWS Lambda función. Puede ejecutar una función Lambda existente o la SageMaker IA puede crear y ejecutar una función Lambda nueva. Si decide utilizar una función Lambda existente, debe estar en la Región de AWS misma línea que la canalización de SageMaker IA. [Para ver un cuaderno que muestre cómo usar un paso de Lambda en una canalización de SageMaker IA, consulte sagemaker-pipelines-lambda-step .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/lambda-step/sagemaker-pipelines-lambda-step.ipynb)

**importante**  
Los pasos de Lambda se introdujeron en Amazon SageMaker Python SDK v2.51.0 y Amazon SageMaker Studio Classic v3.9.1. Debe actualizar Studio Classic antes de utilizar un paso Lambda o no aparecerá el DAG de canalización. Para actualizar Studio Classic, consulte [Cierre y actualice Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

SageMaker AI proporciona la [clase SageMaker.Lambda\$1Helper.Lambda para crear, actualizar, invocar y eliminar funciones Lambda](https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.html). `Lambda`tiene la siguiente firma.

```
Lambda(
    function_arn,       # Only required argument to invoke an existing Lambda function

    # The following arguments are required to create a Lambda function:
    function_name,
    execution_role_arn,
    zipped_code_dir,    # Specify either zipped_code_dir and s3_bucket, OR script
    s3_bucket,          # S3 bucket where zipped_code_dir is uploaded
    script,             # Path of Lambda function script
    handler,            # Lambda handler specified as "lambda_script.lambda_handler"
    timeout,            # Maximum time the Lambda function can run before the lambda step fails
    ...
)
```

El [sagemaker.workflow.lambda\$1step. LambdaStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.lambda_step.LambdaStep)la clase tiene un argumento de tipo. `lambda_func` `Lambda` Para invocar una función de Lambda existente, el único requisito es proporcionar el nombre de recurso de Amazon (ARN) de la función al `function_arn`. Si no proporciona un valor para `function_arn`, debe especificar el `handler` y una de las siguientes opciones:
+ `zipped_code_dir`: la ruta de la función de Lambda comprimida

  `s3_bucket`: el bucket de Amazon S3 donde se va a cargar `zipped_code_dir`
+ `script`: la ruta del archivo de script de la función de Lambda

El siguiente ejemplo muestra cómo crear una definición de paso `Lambda` que invoque una función de Lambda existente.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
        function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda"
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

El siguiente ejemplo muestra cómo crear una definición de paso `Lambda` que cree e invoque una función de Lambda mediante un script de función de Lambda.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
      function_name="split-dataset-lambda",
      execution_role_arn=execution_role_arn,
      script="lambda_script.py",
      handler="lambda_script.lambda_handler",
      ...
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

**Entradas y salidas**

Si la función `Lambda` tiene entradas o salidas, estas también deben definirse en el paso `Lambda`.

**nota**  
Los parámetros de entrada y salida no deben estar anidados. Por ejemplo, si utiliza un diccionario anidado como parámetro de salida, el diccionario se trata como una cadena única (p. ej. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Si proporciona un valor anidado e intenta consultarlo más adelante, se produce un error de cliente indicando que no se puede volver a intentar.

Al definir el paso `Lambda`, `inputs` debe se un diccionario de pares clave-valor. Cada valor del diccionario de `inputs` debe ser de un tipo primitivo (cadena, entero o flotante). No se admiten objetos anidados. Si no se define, el valor de `inputs` predeterminado es `None`.

El valor de `outputs` debe ser una lista de claves. Estas claves hacen referencia a un diccionario definido en la salida de la función `Lambda`. Como en `inputs`, estas claves deben ser de tipos primitivos y no se admiten objetos anidados.

**Comportamiento de tiempo de espera y detención**

La clase `Lambda` tiene un argumento `timeout` que especifica el tiempo máximo que puede ejecutarse la función de Lambda. El valor predeterminado es de 120 segundos, con un máximo de 10 minutos. Si la función de Lambda se está ejecutando cuando se alcanza el tiempo de espera, el paso Lambda producirá un erro; sin embargo, la función de Lambda seguirá ejecutándose.

No se puede detener un proceso de canalización mientras se está ejecutando un paso Lambda porque la función de Lambda invocada por el paso Lambda no se puede detener. Si detiene el proceso mientras se ejecuta la función de Lambda, la canalización esperará a que finalice la función o hasta que se agote el tiempo de espera. Esto depende de lo que ocurra primero. A continuación, el proceso se detiene. Si la función de Lambda finaliza, el estado del proceso de canalización es `Stopped`. Si se agota el tiempo de espera, el estado del proceso de canalización es `Failed`.

## ClarifyCheck paso
<a name="step-type-clarify-check"></a>

Puede utilizar el paso `ClarifyCheck` para comprobar la desviación de la referencia con respecto a las líneas de base anteriores para analizar los sesgos y la explicabilidad del modelo. A continuación, puede generar y [registrar las líneas de base](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) con el método `model.register()` y pasar la salida de ese método a [Paso de modelo](#step-type-model) con `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. Amazon SageMaker Model Monitor puede utilizar estas líneas base para la comprobación de desviaciones para los puntos finales de su modelo. Como resultado, no necesita hacer una sugerencia de [referencia](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) por separado. 

El paso `ClarifyCheck` también permite extraer líneas de base para la comprobación de desviaciones del registro del modelo. En este `ClarifyCheck` paso se utiliza el contenedor prediseñado de SageMaker Clarify. Este contenedor proporciona una serie de capacidades de supervisión de modelos, incluida la sugerencia de restricciones y la validación de restricciones con respecto a una referencia determinada. Para obtener más información, consulte [Contenedores SageMaker Clarify prediseñados](clarify-processing-job-configure-container.md).

### Configurar el paso ClarifyCheck
<a name="configuring-step-type-clarify"></a>

Puede configurar el paso `ClarifyCheck` para que realice solo uno de los siguientes tipos de comprobaciones cada vez que se utilice en una canalización.
+ Verificación del sesgo de datos
+ Verificación del sesgo del modelo
+ Verificación de la explicabilidad del modelo

Para ello, defina el parámetro `clarify_check_config` con uno de los siguientes valores de tipo de comprobación:
+ `DataBiasCheckConfig`
+ `ModelBiasCheckConfig`
+ `ModelExplainabilityCheckConfig`

El `ClarifyCheck` paso inicia un trabajo de procesamiento que ejecuta el contenedor prediseñado de SageMaker AI Clarify y requiere [configuraciones específicas para la comprobación y el trabajo de procesamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-configure-processing-jobs.html). `ClarifyCheckConfig`y `CheckJobConfig` son funciones auxiliares para estas configuraciones. Estas funciones auxiliares están alineadas con la forma en que el trabajo de procesamiento de SageMaker Clarify calcula para comprobar el sesgo del modelo, el sesgo de los datos o la explicabilidad del modelo. Para obtener más información, consulte [Ejecute SageMaker Clarify Processing Jobs para analizar los sesgos y facilitar la explicación](clarify-processing-job-run.md). 

### Control del comportamiento del paso para comprobaciones de desviación
<a name="controlling-step-type-clarify"></a>

El paso `ClarifyCheck` requiere los dos indicadores booleanos siguientes para controlar su comportamiento:
+ `skip_check`: este parámetro indica si se omite o no la comprobación de desviaciones con respecto a la referencia anterior. Si se establece en `False`, debe estar disponible la referencia anterior del tipo de comprobación configurado.
+ `register_new_baseline`: este parámetro indica si se puede acceder a una referencia recién calculada mediante la propiedad de paso `BaselineUsedForDriftCheckConstraints`. Si se establece en `False`, también debe estar disponible la referencia anterior del tipo de comprobación configurado. Se puede acceder a ella a través de la propiedad `BaselineUsedForDriftCheckConstraints`. 

Para obtener más información, consulte [Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Pipelines ClarifyCheck y QualityCheck pasos](pipelines-quality-clarify-baseline-lifecycle.md).

### Trabajo con líneas de base
<a name="step-type-clarify-working-with-baselines"></a>

Puede especificar `model_package_group_name` para localizar la referencia existente. A continuación, el paso `ClarifyCheck` extrae `DriftCheckBaselines` en el último paquete de modelos aprobado del grupo de paquetes de modelos. 

O bien, puede proporcionar una referencia anterior a través del parámetro `supplied_baseline_constraints`. Si especifica tanto `model_package_group_name` como `supplied_baseline_constraints`, el paso `ClarifyCheck` utiliza la referencia especificada por el parámetro `supplied_baseline_constraints`.

[Para obtener más información sobre el uso de los requisitos de los `ClarifyCheck` pasos, consulte sagemaker.workflow.steps. ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.clarify_check_step.ClarifyCheckStep)en el *Amazon SageMaker SageMaker AI SDK para Python*. Para ver un bloc de notas clásico de Amazon SageMaker Studio que muestre cómo usar `ClarifyCheck` step in Pipelines, consulta [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb).

**Example Creación de un paso `ClarifyCheck` para la comprobación del sesgo de los datos**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_bias_data_config = DataConfig(
    s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']),
    label=0,
    dataset_type="text/csv",
    s3_analysis_config_output_path=data_bias_analysis_cfg_output_path,
)

data_bias_config = BiasConfig(
    label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]]  
)

data_bias_check_config = DataBiasCheckConfig(
    data_config=data_bias_data_config,
    data_bias_config=data_bias_config,
)h

data_bias_check_step = ClarifyCheckStep(
    name="DataBiasCheckStep",
    clarify_check_config=data_bias_check_config,
    check_job_config=check_job_config,
    skip_check=False,
    register_new_baseline=False
   supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## QualityCheck paso
<a name="step-type-quality-check"></a>

Utilice el paso `QualityCheck` para realizar [sugerencias de referencia](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) y comprobar las desviaciones con respecto a una referencia anterior para determinar la calidad de los datos o la calidad del modelo en una canalización. A continuación, puede generar y [registrar las referencias](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) con el método `model.register()` y pasar la salida de ese método a [Paso de modelo](#step-type-model) con `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`.

El monitor de modelos utiliza estas referencias para la comprobación de desviaciones en los puntos de conexión del modelo, de manera que no sea necesario hacer una sugerencia de referencia aparte. El paso `QualityCheck` también permite extraer líneas de base para la comprobación de desviaciones del registro del modelo. El `QualityCheck` paso aprovecha el contenedor prediseñado de Amazon SageMaker AI Model Monitor. Este contenedor dispone de una serie de funciones de supervisión del modelo que incluyen la sugerencia de restricciones, la generación de estadísticas y la validación de restricciones con respecto a una referencia. Para obtener más información, consulte [Contenedor prediseñado de Amazon SageMaker Model Monitor](model-monitor-pre-built-container.md).

### Configurar el paso QualityCheck
<a name="configuring-step-type-quality"></a>

Puede configurar el paso `QualityCheck` para que ejecute solo uno de los siguientes tipos de comprobaciones cada vez que se utilice en una canalización.
+ Verificación de la calidad de los datos
+ Control de la calidad del modelo

Para ello, defina el parámetro `quality_check_config` con uno de los siguientes valores de tipo de comprobación:
+ `DataQualityCheckConfig`
+ `ModelQualityCheckConfig`

El paso `QualityCheck` inicia un trabajo de procesamiento que ejecuta el contenedor prediseñado del monitor de modelos y requiere configuraciones específicas para el trabajo de verificación y procesamiento. `QualityCheckConfig` y `CheckJobConfig` son funciones auxiliares para estas configuraciones. Estas funciones auxiliares están alineadas con la forma en que el Monitor de modelos crea una referencia para supervisar la calidad del modelo o la calidad de los datos. Para obtener más información sobre las sugerencias de referencia del monitor de modelos, consulte [Crear una referencia](model-monitor-create-baseline.md) y [Creación de una referencia de calidad del modelo](model-monitor-model-quality-baseline.md).

### Control del comportamiento del paso para comprobaciones de desviación
<a name="controlling-step-type-quality"></a>

El paso `QualityCheck` requiere los dos indicadores booleanos siguientes para controlar su comportamiento:
+ `skip_check`: este parámetro indica si se omite o no la comprobación de desviaciones con respecto a la referencia anterior. Si se establece en `False`, debe estar disponible la referencia anterior del tipo de comprobación configurado.
+ `register_new_baseline`: este parámetro indica si se puede acceder a una referencia recién calculada mediante las propiedad de paso `BaselineUsedForDriftCheckConstraints` y `BaselineUsedForDriftCheckStatistics`. Si se establece en `False`, también debe estar disponible la referencia anterior del tipo de comprobación configurado. Se puede acceder a ella a través de las propiedades `BaselineUsedForDriftCheckConstraints` y `BaselineUsedForDriftCheckStatistics`.

Para obtener más información, consulte [Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Pipelines ClarifyCheck y QualityCheck pasos](pipelines-quality-clarify-baseline-lifecycle.md).

### Trabajo con líneas de base
<a name="step-type-quality-working-with-baselines"></a>

Puede especificar una referencia anterior directamente a través de los parámetros `supplied_baseline_statistics` y `supplied_baseline_constraints`. También puede especificar `model_package_group_name` y el paso `QualityCheck` extrae las `DriftCheckBaselines` del paquete de modelos aprobado más reciente del grupo de paquetes de modelos. 

Cuando especifica lo siguiente, el paso `QualityCheck` utiliza la referencia especificada por `supplied_baseline_constraints` y `supplied_baseline_statistics` en el tipo de comprobación del paso `QualityCheck`.
+ `model_package_group_name`
+ `supplied_baseline_constraints`
+ `supplied_baseline_statistics`

Para obtener más información sobre el uso de los requisitos del `QualityCheck` paso, consulte [sagemaker.workflow.steps. QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.quality_check_step.QualityCheckStep)en el *Amazon SageMaker SageMaker AI SDK para Python*. Para ver un bloc de notas clásico de Amazon SageMaker Studio que muestre cómo usar `QualityCheck` step in Pipelines, consulta [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb). 

**Example Creación de un paso `QualityCheck` para la comprobación de la calidad de los datos**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_quality_check_config = DataQualityCheckConfig(
    baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"),
    output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep'])
)

data_quality_check_step = QualityCheckStep(
    name="DataQualityCheckStep",
    skip_check=False,
    register_new_baseline=False,
    quality_check_config=data_quality_check_config,
    check_job_config=check_job_config,
    supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json",
    supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## Paso EMR
<a name="step-type-emr"></a>

Utilice el paso [EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html) de Amazon SageMaker Pipelines para:
+ Procesar los [pasos de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) en un clúster de Amazon EMR en ejecución.
+ Hacer que la canalización cree y administre un clúster de Amazon EMR por usted.

Para obtener más información sobre Amazon EMR, consulte [Introducción a Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

El paso EMR requiere que `EMRStepConfig` incluya la ubicación del archivo JAR que utilizará el clúster de Amazon EMR y cualquier argumento que se vaya a pasar. También debe proporcionar el ID del clúster de Amazon EMR si desea ejecutar el paso en un clúster de EMR en ejecución. También puede pasar la configuración del clúster para ejecutar el paso EMR en un clúster que cree, administre y finalice en su nombre. Las siguientes secciones incluyen ejemplos y enlaces a cuadernos de muestra que muestran ambos métodos.

**nota**  
Los pasos EMR requieren que el rol transferido a su canalización tenga permisos adicionales. Asocie la [política administrada de AWS : `AmazonSageMakerPipelinesIntegrations`](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-pipelines.html#security-iam-awsmanpol-AmazonSageMakerPipelinesIntegrations) a su rol de canalización o asegúrese de que el rol incluya los permisos de esa política.
Si procesa un paso EMR en un clúster en ejecución, solo podrá usar un clúster que se encuentre en uno de los siguientes estados:   
`STARTING`
`BOOTSTRAPPING`
`RUNNING`
`WAITING`
Si procesa los pasos EMR en un clúster en ejecución, puede tener como máximo 256 pasos EMR en un estado `PENDING` en un clúster de EMR. Los pasos EMR enviados por encima de este límite provocan un error en la ejecución de la canalización. Puede plantearse usar [Política de reintentos para los pasos de la canalización](pipelines-retry-policy.md).
Especifique el ID del clúster o la configuración del clúster, pero no ambos.
El paso de EMR depende de Amazon EventBridge para monitorear los cambios en el paso de EMR o en el estado del clúster. Si procesa su trabajo de Amazon EMR en un clúster en ejecución, el paso EMR utiliza la regla `SageMakerPipelineExecutionEMRStepStatusUpdateRule` para supervisar el estado del paso EMR. Si procesa su trabajo en un clúster que el paso EMR cree en su nombre, el paso usa la regla `SageMakerPipelineExecutionEMRClusterStatusRule` para supervisar los cambios en el estado del clúster. Si ve alguna de estas EventBridge reglas en su AWS cuenta, no la elimine o, de lo contrario, es posible que su paso de EMR no se complete.

**Añada un paso de Amazon EMR a su proceso**

Para añadir un paso de EMR a tu canalización, haz lo siguiente:
+ Abre la consola de Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ En el panel de navegación izquierdo, seleccione **Canalizaciones**.
+ Seleccione **Crear**.
+ Seleccione **En blanco**.
+ En la barra lateral izquierda, elija **Procesar datos** y arrástrelos al lienzo.
+ En el lienzo, elija el paso **Procesar datos** que ha añadido.
+ En la barra lateral derecha, en modo, selecciona **EMR** (gestionado).
+ **En la barra lateral derecha, completa los formularios de las pestañas Configuración y Detalles.** [Para obtener información sobre los campos de estas pestañas, consulte sagemaker.workflow.fail\$1step. EMRstep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep).

**Lanzamiento de un nuevo trabajo en un clúster de Amazon EMR en ejecución**

Para inicializar un nuevo trabajo en un clúster de Amazon EMR en ejecución, debe pasar el ID del clúster en forma de cadena al argumento `cluster_id` del `EMRStep`. El siguiente ejemplo demuestra este procedimiento.

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

step_emr = EMRStep (
    name="EMRSampleStep", # required
    cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster
    step_config=emr_config, # required
    display_name="My EMR Step",
    description="Pipeline step to execute EMR job"
)
```

Para ver un ejemplo de cuaderno que le guíe a través de un ejemplo completo, consulte [Pipelines EMR Step With Running EMR Cluster](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-running-emr-cluster.ipynb).

**Lanzamiento de un nuevo trabajo en un clúster de Amazon EMR nuevo**

Para inicializar un nuevo trabajo en un nuevo clúster que `EMRStep` cree para usted, proporcione la configuración de su clúster como diccionario. El diccionario debe tener la misma estructura que una [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html)solicitud. Sin embargo, no incluya los siguientes campos en la configuración del clúster:
+ [`Name`]
+ [`Steps`]
+ [`AutoTerminationPolicy`]
+ [`Instances`][`KeepJobFlowAliveWhenNoSteps`]
+ [`Instances`][`TerminationProtected`]

Todos los demás argumentos `RunJobFlow` están disponibles para su uso en la configuración del clúster. Para obtener más información sobre la sintaxis de la solicitud, consulte [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html).

El siguiente ejemplo pasa una configuración de clúster a una definición de paso EMR. Esto solicita al paso que inicialice un nuevo trabajo en un nuevo clúster de EMR. La configuración del clúster de EMR de este ejemplo incluye especificaciones para los nodos del clúster de EMR principales y básicos. Para obtener más información sobre los tipos de nodos de Amazon EMR, consulte [Descripción de los tipos de nodos: principales, básicos y de tarea](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html).

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_step_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

# include your cluster configuration as a dictionary
emr_cluster_config = {
    "Applications": [
        {
            "Name": "Spark", 
        }
    ],
    "Instances":{
        "InstanceGroups":[
            {
                "InstanceRole": "MASTER",
                "InstanceCount": 1,
                "InstanceType": "m5.2xlarge"
            },
            {
                "InstanceRole": "CORE",
                "InstanceCount": 2,
                "InstanceType": "m5.2xlarge"
            }
        ]
    },
    "BootstrapActions":[],
    "ReleaseLabel": "emr-6.6.0",
    "JobFlowRole": "job-flow-role",
    "ServiceRole": "service-role"
}

emr_step = EMRStep(
    name="emr-step",
    cluster_id=None,
    display_name="emr_step",
    description="MyEMRStepDescription",
    step_config=emr_step_config,
    cluster_config=emr_cluster_config
)
```

Para ver un ejemplo de cuaderno que le guie a través de un ejemplo completo, consulte [Pipelines EMR Step With Cluster Lifecycle Management](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-cluster-lifecycle-management.ipynb).

## Paso EMR sin servidor
<a name="step-type-serverless"></a>

Para añadir un paso sin servidor de EMR a su canalización, haga lo siguiente:
+ Abre la consola de Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ En el panel de navegación izquierdo, seleccione **Canalizaciones**.
+ Seleccione **Crear**.
+ Seleccione **En blanco**.
+ En la barra lateral izquierda, elija **Procesar datos** y arrástrelos al lienzo.
+ En el lienzo, elija el paso **Procesar datos** que ha añadido.
+ En la barra lateral derecha, en modo, selecciona **EMR** (sin servidor).
+ **En la barra lateral derecha, completa los formularios de las pestañas Configuración y Detalles.**

## Paso Trabajo de cuaderno
<a name="step-type-notebook-job"></a>

Utilice `NotebookJobStep` a para ejecutar su SageMaker Notebook Job de forma no interactiva como un paso de proceso. Si creas tu canalización en la drag-and-drop interfaz de usuario de Pipelines, úsala [paso de ejecución del código](#step-type-executecode) para ejecutar tu cuaderno. Para obtener más información sobre SageMaker Notebook Jobs, consulte[SageMaker Trabajos de cuaderno](notebook-auto-run.md).

Un `NotebookJobStep` requiere como mínimo un cuaderno de entrada, el URI de la imagen y el nombre del kernel. Para obtener más información sobre los requisitos de los pasos de Notebook Job y otros parámetros que puede configurar para personalizar su paso, consulte [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

En el siguiente ejemplo, se utilizan los argumentos mínimos para definir un `NotebookJobStep`.

```
from sagemaker.workflow.notebook_job_step import NotebookJobStep


notebook_job_step = NotebookJobStep(
    input_notebook=input_notebook,
    image_uri=image_uri,
    kernel_name=kernel_name
)
```

El paso de la `NotebookJobStep` canalización se considera un trabajo de SageMaker cuaderno. Como resultado, realice un seguimiento del estado de ejecución en el panel de trabajos del cuaderno de la IU de Studio Classic incluyendo etiquetas específicas con el argumento `tags`. Para obtener más información acerca de las etiquetas que se deben incluir, consulte [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

Además, si programa el trabajo del bloc de notas con el SDK de SageMaker Python, solo podrá especificar determinadas imágenes para ejecutar el trabajo del bloc de notas. Para obtener más información, consulte [Restricciones de imagen para trabajos de cuadernos del SDK de Python para SageMaker IA](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

## Paso Error
<a name="step-type-fail"></a>

Utilice un paso de error para detener una ejecución de Amazon SageMaker Pipelines cuando no se alcance la condición o el estado deseados. El paso Error también le permite introducir un mensaje de error personalizado en el que se indique la causa del error de la ejecución de la canalización.

**nota**  
Cuando un paso Error y otros pasos de la canalización se ejecutan al mismo tiempo, la canalización no finaliza hasta que todos los pasos simultáneos se hayan completado.

### Limitaciones del uso del paso Error
<a name="step-type-fail-limitations"></a>
+ No puede añadir un paso Error a la lista `DependsOn` de otros pasos. Para obtener más información, consulte [Dependencia personalizada entre pasos](build-and-manage-steps.md#build-and-manage-custom-dependency).
+ Otros pasos no pueden hacer referencia al paso Error. Es *siempre* el último paso de la ejecución de una canalización.
+ No se puede volver a intentar ejecutar una canalización que termine con un paso Error.

Puede crear el mensaje del paso Error en forma de cadena de texto estático. Como alternativa, también puede utilizar [Parámetros de canalización](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-parameters.html), una operación de [unión](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html?highlight=Join#sagemaker.workflow.functions.Join) u otras [propiedades del paso](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-properties) para crear un mensaje de error más informativo si usa el SDK.

------
#### [ Pipeline Designer ]

Para añadir un paso Error a su canalización, haga lo siguiente:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, elija **Error** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Error** que ha añadido.

1. En la barra lateral derecha, complete los formularios de las pestañas **Configuración** y **Detalles**. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.fail\$1step. FailStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.fail_step.FailStep).

1. Si el lienzo incluye algún paso que preceda inmediatamente al paso **Error** que ha añadido, haga clic y arrastre el cursor desde el paso hasta el paso **Error** para crear un borde.

1. Si el lienzo incluye algún paso que sigue inmediatamente al paso **Error** que ha añadido, haga clic y arrastre el cursor desde el paso **Error** hasta el paso para crear un borde.

------
#### [ SageMaker Python SDK ]

**Example**  
El siguiente fragmento de código de ejemplo utiliza un `FailStep` con un `ErrorMessage` configurado con parámetros de canalización y una operación `Join`.  

```
from sagemaker.workflow.fail_step import FailStep
from sagemaker.workflow.functions import Join
from sagemaker.workflow.parameters import ParameterInteger

mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5)
step_fail = FailStep(
    name="AbaloneMSEFail",
    error_message=Join(
        on=" ", values=["Execution failed due to MSE >", mse_threshold_param]
    ),
)
```

------

# Añadir integración
<a name="build-and-manage-steps-integration"></a>

MLflow la integración le permite utilizarla MLflow con Pipelines para seleccionar un servidor de seguimiento o una aplicación sin servidor, elegir un experimento y registrar las métricas.

## Conceptos clave
<a name="add-integration-key-concepts"></a>

**Creación de aplicaciones por defecto**: se creará una MLflow aplicación por defecto al entrar en el editor visual de Pipeline.

**Panel de integraciones**: incluye MLflow un nuevo panel de integraciones que puedes seleccionar y configurar.

**Actualizar la aplicación y el experimento**: la opción de anular la aplicación y el experimento seleccionados durante la ejecución del proceso.

## Funcionamiento
<a name="add-integration-how-it-works"></a>
+ Ve al editor **visual Pipeline**
+ Selecciona **Integración** en la barra de herramientas
+ Haga clic en **MLflow**.
+ Configura la MLflow aplicación y experimenta

## Capturas de pantalla de ejemplo
<a name="add-integration-example-screenshots"></a>

Panel lateral de integraciones

![\[La descripción de las tareas pendientes.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/screenshot-pipeline-1.png)


MLflow configuración

![\[La descripción de las tareas pendientes.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/screenshot-pipeline-2.png)


Cómo anular el experimento durante la ejecución de la canalización

![\[La descripción de las tareas pendientes.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/screenshot-pipeline-3.png)


## Propiedades de paso
<a name="build-and-manage-properties"></a>

El atributo `properties` se utiliza para añadir dependencias de datos entre los pasos de la canalización. Las canalizaciones utilizan estas dependencias de datos para construir el DAG a partir de la definición de la canalización. Se puede hacer referencia a estas propiedades como valores de marcador de posición y se resuelven en el tiempo de ejecución. 

El `properties` atributo de un paso de Pipelines coincide con el objeto devuelto por una `Describe` llamada para el tipo de trabajo de SageMaker IA correspondiente. Para cada tipo de trabajo, la llamada `Describe` devuelve el siguiente objeto de respuesta:
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

Para comprobar qué propiedades son recomendables para cada tipo de paso durante la creación de una dependencia de datos, consulte Dependencia de *[datos: referencia de propiedades](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* en el SDK de Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

## Paralelismo de paso
<a name="build-and-manage-parallelism"></a>

Cuando un paso no depende de ningún otro paso, se ejecuta inmediatamente después de la ejecución de la canalización. Sin embargo, si se ejecutan demasiados pasos de canalización en paralelo se podrían agotar rápidamente los recursos disponibles. Controle el número de pasos simultáneos para la ejecución de una canalización con `ParallelismConfiguration`.

En el siguiente ejemplo, se utiliza `ParallelismConfiguration` para establecer el límite de pasos simultáneos en cinco.

```
pipeline.create(
    parallelism_config=ParallelismConfiguration(5),
)
```

## Dependencia de datos entre pasos
<a name="build-and-manage-data-dependency"></a>

La estructura del DAG se define al especificar las relaciones de datos entre los pasos. Para crear dependencias de datos entre los pasos, transfiera las propiedades de un paso como entrada a otro paso de la canalización. El paso que recibe la entrada no se inicia hasta que termina de ejecutarse el paso que proporciona la entrada.

Una dependencia de datos utiliza la JsonPath notación en el siguiente formato. Este formato recorre el archivo de propiedades de JSON. Esto significa que puede añadir tantas *<property>* instancias como necesite para alcanzar la propiedad anidada deseada en el archivo. [Para obtener más información sobre la JsonPath notación, consulta el JsonPath repositorio.](https://github.com/json-path/JsonPath)

```
<step_name>.properties.<property>.<property>
```

A continuación se muestra cómo especificar un bucket de Amazon S3 mediante la propiedad `ProcessingOutputConfig` de un paso de procesamiento.

```
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
```

Para crear la dependencia de datos, pase el bucket a un paso de entrenamiento de la siguiente manera.

```
from sagemaker.workflow.pipeline_context import PipelineSession

sklearn_train = SKLearn(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="CensusTrain",
    step_args=sklearn_train.fit(inputs=TrainingInput(
        s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
            "train_data"].S3Output.S3Uri
    ))
)
```

Para comprobar qué propiedades son recomendables para cada tipo de paso durante la creación de una dependencia de datos, consulte Dependencia de *[datos: referencia de propiedades](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* en el SDK de Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

## Dependencia personalizada entre pasos
<a name="build-and-manage-custom-dependency"></a>

Al especificar una dependencia de datos, Canalizaciones proporciona la conexión de los datos entre los pasos. Como alternativa, un paso puede acceder a los datos de un paso anterior sin utilizar directamente Canalizaciones. En este caso, puede crear una dependencia personalizada que indique a Canalizaciones que no inicie un paso hasta que haya terminado de ejecutarse otro paso. Para crear una dependencia personalizada, especifique el atributo `DependsOn` de un paso.

A modo de ejemplo, lo siguiente define un paso `C` que comienza solo después de que el paso `A` y el paso `B` terminen de ejecutarse.

```
{
  'Steps': [
    {'Name':'A', ...},
    {'Name':'B', ...},
    {'Name':'C', 'DependsOn': ['A', 'B']}
  ]
}
```

Canalizaciones lanza una excepción de validación si la dependencia crea una dependencia cíclica.

En el siguiente ejemplo, se crea un paso de entrenamiento que comienza cuando termina de ejecutarse un paso de procesamiento.

```
processing_step = ProcessingStep(...)
training_step = TrainingStep(...)

training_step.add_depends_on([processing_step])
```

El siguiente ejemplo crea un paso de entrenamiento que no comienza hasta que terminen de ejecutarse dos pasos de procesamiento diferentes.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(...)

training_step.add_depends_on([processing_step_1, processing_step_2])
```

A continuación, se proporciona una forma alternativa de crear la dependencia personalizada.

```
training_step.add_depends_on([processing_step_1])
training_step.add_depends_on([processing_step_2])
```

El siguiente ejemplo crea un paso de entrenamiento que recibe la entrada de un paso de procesamiento y espera a que termine de ejecutarse otro paso de procesamiento.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(
    ...,
    inputs=TrainingInput(
        s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[
            "train_data"
        ].S3Output.S3Uri
    )

training_step.add_depends_on([processing_step_2])
```

En el ejemplo siguiente se muestra cómo recuperar una lista de cadenas de las dependencias personalizadas de un paso.

```
custom_dependencies = training_step.depends_on
```

## Imágenes personalizadas en un paso
<a name="build-and-manage-images"></a>

 Puede usar cualquiera de las [imágenes de SageMaker AI Deep Learning Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) disponibles al crear un paso en su proceso. 

También puede utilizar su propio contenedor con pasos de canalización. Dado que no puede crear una imagen desde Studio Classic, deberá crearla mediante otro método antes de utilizarla con Canalizaciones.

Para usar su propio contenedor al crear los pasos de la canalización, incluya el URI de la imagen en la definición del estimador. Para obtener más información sobre cómo usar tu propio contenedor con SageMaker IA, consulta Cómo [usar contenedores Docker con SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html).

# Lift-and-shift Código Python con el decorador @step
<a name="pipelines-step-decorator"></a>

El decorador `@step` es una característica que convierte el código de machine learning (ML) local en uno o más pasos de canalización. Puede escribir su función de ML como para cualquier proyecto de ML. Una vez probada localmente o como un trabajo de formación con el `@remote` decorador, puedes convertir la función en un paso de proceso de SageMaker IA añadiendo un `@step` decorador. A continuación, puede pasar la salida de la llamada a la función decorada con `@step` como un paso a Canalizaciones para crear y ejecutar una canalización. También puede encadenar una serie de funciones con el decorador `@step` para crear también una canalización de gráficos acíclicos dirigidos (DAG) de varios pasos.

La configuración para usar el decorador `@step` es la misma que la configuración para usar el decorador `@remote`. Puede consultar la documentación de las funciones remotas para obtener información sobre cómo [configurar el entorno](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator.html#train-remote-decorator-env) y [utilizar un archivo de configuración](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) para establecer los valores predeterminados. Para obtener más información sobre el decorador `@step`, consulte [sagemaker.workflow.function\$1step.step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.step).

Para ver ejemplos de cuadernos que demuestran el uso del decorador `@step`, consulte [@step decorator sample notebooks](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator).

En las siguientes secciones, se explica cómo anotar el código de ML local con un decorador `@step`para crear un paso, crear y ejecutar una canalización utilizando el paso y personalizar la experiencia para su caso de uso.

**Topics**
+ [Creación de una canalización con funciones decoradas con `@step`](pipelines-step-decorator-create-pipeline.md)
+ [Ejecución de una canalización](pipelines-step-decorator-run-pipeline.md)
+ [Configuración de la canalización](pipelines-step-decorator-cfg-pipeline.md)
+ [Prácticas recomendadas](pipelines-step-decorator-best.md)
+ [Limitaciones](pipelines-step-decorator-limit.md)

# Creación de una canalización con funciones decoradas con `@step`
<a name="pipelines-step-decorator-create-pipeline"></a>

Puede crear una canalización convirtiendo las funciones de Python en pasos de canalización mediante el decorador `@step`, creando dependencias entre esas funciones para crear un gráfico de canalización (o gráfico acíclico dirigido [DAG]) y pasando los nodos de hoja de ese gráfico como una lista de pasos a la canalización. En las siguientes secciones, se explica este procedimiento en detalle con ejemplos.

**Topics**
+ [Conversión de una función en un paso](#pipelines-step-decorator-run-pipeline-convert)
+ [Creación de dependencias entre los pasos](#pipelines-step-decorator-run-pipeline-link)
+ [Uso de `ConditionStep` con pasos decorados con `@step`](#pipelines-step-decorator-condition)
+ [Definición de una canalización utilizando la salida `DelayedReturn` de los pasos](#pipelines-step-define-delayed)
+ [Creación de una canalización](#pipelines-step-decorator-pipeline-create)

## Conversión de una función en un paso
<a name="pipelines-step-decorator-run-pipeline-convert"></a>

Para crear un paso con el decorador `@step`, anote la función con `@step`. En el siguiente ejemplo, se muestra una función decorada con `@step` que preprocesa los datos.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
    
step_process_result = preprocess(raw_data)
```

Cuando invocas una función `@step` decorada con símbolos, la SageMaker IA devuelve una `DelayedReturn` instancia en lugar de ejecutar la función. Una instancia de `DelayedReturn` es un proxy de la devolución real de esa función. La instancia de `DelayedReturn` se puede pasar a otra función como argumento o directamente a una instancia de canalización como paso. [Para obtener información sobre la `DelayedReturn` clase, consulta sagemaker.workflow.function\$1step. DelayedReturn](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.DelayedReturn).

## Creación de dependencias entre los pasos
<a name="pipelines-step-decorator-run-pipeline-link"></a>

Al crear una dependencia entre dos pasos, se crea una conexión entre los pasos del gráfico de canalización. En las siguientes secciones, se presentan varias formas de crear una dependencia entre los pasos de la canalización.

### Dependencias de datos a través de argumentos de entrada
<a name="pipelines-step-decorator-run-pipeline-link-interstep"></a>

Al pasar la salida `DelayedReturn` de una función como entrada a otra función, se crea automáticamente una dependencia de datos en el DAG de la canalización. En el siguiente ejemplo, al pasar la salida `DelayedReturn` de la función `preprocess` a la función `train`, se crea una dependencia entre `preprocess` y `train`.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe

@step
def train(training_data):
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train(step_process_result)
```

El ejemplo anterior define una función de entrenamiento que está decorada con `@step`. Cuando se invoca esta función, recibe como entrada la salida `DelayedReturn` del paso de la canalización de preprocesamiento. Al invocar la función de entrenamiento, se devuelve otra instancia de `DelayedReturn`. Esta instancia contiene la información sobre todos los pasos anteriores definidos en esa función (es decir, el paso `preprocess` de este ejemplo) que forman el DAG de la canalización.

En el ejemplo anterior, la función `preprocess` devuelve un valor único. Para ver tipos de devoluciones más complejas, como listas o tuplas, consulte [Limitaciones](pipelines-step-decorator-limit.md).

### Definición de dependencias personalizadas
<a name="pipelines-step-decorator-run-pipeline-link-custom"></a>

En el ejemplo anterior, la función `train` recibió la salida `DelayedReturn` de `preprocess` y creó una dependencia. Si desea definir la dependencia de forma explícita sin pasar la salida del paso anterior, utilice la función `add_depends_on` con el paso. Puede usar la función `get_step()` para recuperar el paso subyacente de su instancia de `DelayedReturn` y, a continuación, llamar a `add_depends_on`\$1on con la dependencia como entrada. Para ver la definición de la función `get_step()`, consulte [sagemaker.workflow.step\$1outputs.get\$1step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_outputs.get_step). El siguiente ejemplo muestra cómo crear una dependencia entre `preprocess` y `train` usando `get_step()` y `add_depends_on()`.

```
from sagemaker.workflow.step_outputs import get_step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    processed_data = ..
    return s3.upload(processed_data)

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train()

get_step(step_train_result).add_depends_on([step_process_result])
```

### Transferencia de datos desde y hacia una función decorada con `@step` para un paso de canalización tradicional
<a name="pipelines-step-decorator-run-pipeline-link-pass"></a>

Puede crear una canalización que incluya un paso decorado con `@step` y un paso de canalización tradicional y pasar datos entre ellos. Por ejemplo, puede utilizar `ProcessingStep` para procesar los datos y pasar su resultado a la función de entrenamiento decorada con `@step`. En el siguiente ejemplo, un paso de entrenamiento decorado con `@step` hace referencia al resultado de un paso de procesamiento.

```
# Define processing step

from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

sklearn_processor = SKLearnProcessor(
    framework_version='1.2-1',
    role='arn:aws:iam::123456789012:role/SagemakerExecutionRole',
    instance_type='ml.m5.large',
    instance_count='1',
)

inputs = [
    ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
]
outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

process_step = ProcessingStep(
    name="MyProcessStep",
    step_args=sklearn_processor.run(inputs=inputs, outputs=outputs,code='preprocessing.py'),
)
```

```
# Define a @step-decorated train step which references the 
# output of a processing step

@step
def train(train_data_path, test_data_path):
    ...
    return trained_model
    
step_train_result = train(
   process_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
   process_step.properties.ProcessingOutputConfig.Outputs["test"].S3Output.S3Uri,
)
```

## Uso de `ConditionStep` con pasos decorados con `@step`
<a name="pipelines-step-decorator-condition"></a>

Canalizaciones admite una clase `ConditionStep` que evalúa los resultados de los pasos anteriores para decidir qué medidas tomar en la canalización. También puede utilizar `ConditionStep` con un paso decorado con `@step`. Para usar la salida de cualquier paso decorado con `@step` con `ConditionStep`, introduzca la salida de ese paso como argumento para `ConditionStep`. En el siguiente ejemplo, el paso de condición recibe el resultado del paso de evaluación del modelo decorado con `@step`.

```
# Define steps

@step(name="evaluate")
def evaluate_model():
    # code to evaluate the model
    return {
        "rmse":rmse_value
    }
    
@step(name="register")
def register_model():
    # code to register the model
    ...
```

```
# Define ConditionStep

from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep

conditionally_register = ConditionStep(
    name="conditional_register",
    conditions=[
        ConditionGreaterThanOrEqualTo(
            # Output of the evaluate step must be json serializable
            left=evaluate_model()["rmse"],  # 
            right=5,
        )
    ],
    if_steps=[FailStep(name="Fail", error_message="Model performance is not good enough")],
    else_steps=[register_model()],
)
```

## Definición de una canalización utilizando la salida `DelayedReturn` de los pasos
<a name="pipelines-step-define-delayed"></a>

La canalización se define de la misma manera independientemente de si se utiliza o no un decorador `@step`. Cuando pasa una instancia de `DelayedReturn` a su canalización, no es necesario pasar una lista completa de pasos para crear la canalización. El SDK deduce automáticamente los pasos anteriores en función de las dependencias que defina. Todos los pasos anteriores de los objetos `Step` que ha pasado a la canalización o a los objetos `DelayedReturn` se incluyen en el gráfico de la canalización. En el siguiente ejemplo, la canalización recibe el objeto `DelayedReturn` de la función `train`. SageMaker La IA añade el `preprocess` paso, como paso anterior`train`, al gráfico de canalización.

```
from sagemaker.workflow.pipeline import Pipeline

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=<sagemaker-session>,
)
```

Si no hay datos o dependencias personalizadas entre los pasos y ejecuta varios pasos en paralelo, el gráfico de canalización tiene más de un nodo hoja. Pase todos estos nodos de hoja en una lista al argumento `steps` de la definición de la canalización, tal y como se muestra en el siguiente ejemplo:

```
@step
def process1():
    ...
    return data
    
@step
def process2():
   ...
   return data
   
step_process1_result = process1()
step_process2_result = process2()

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_process1_result, step_process2_result],
    sagemaker_session=sagemaker-session,
)
```

Cuando se ejecuta la canalización, ambos pasos se ejecutan en paralelo.

Solo se pasan los nodos de hoja del gráfico a la canalización, ya que los nodos de hoja contienen información sobre todos los pasos anteriores definidos mediante dependencias de datos o personalizadas. Al compilar la canalización, la SageMaker IA también deduce todos los pasos subsiguientes que forman el gráfico de la canalización y añade cada uno de ellos como un paso independiente a la canalización.

## Creación de una canalización
<a name="pipelines-step-decorator-pipeline-create"></a>

Cree una canalización mediante una llamada a `pipeline.create()`, tal y como se muestra en el siguiente fragmento. Para obtener más información sobre `create()`, consulte [sagemaker.workflow.pipeline.Pipeline.create](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.create).

```
role = "pipeline-role"
pipeline.create(role)
```

Cuando llamas`pipeline.create()`, la SageMaker IA compila todos los pasos definidos como parte de la instancia de canalización. SageMaker La IA carga la función serializada, los argumentos y todos los demás artefactos relacionados con los pasos en Amazon S3.

Los datos residen en el bucket de S3 de acuerdo con la siguiente estructura:

```
s3_root_uri/
    pipeline_name/
        sm_rf_user_ws/
            workspace.zip  # archive of the current working directory (workdir)
        step_name/
            timestamp/
                arguments/                # serialized function arguments
                function/                 # serialized function
                pre_train_dependencies/   # any dependencies and pre_execution scripts provided for the step       
        execution_id/
            step_name/
                results     # returned output from the serialized function including the model
```

`s3_root_uri`se define en el archivo de configuración de SageMaker AI y se aplica a toda la canalización. Si no está definido, se utiliza el depósito de SageMaker IA predeterminado.

**nota**  
Cada vez que la SageMaker IA compila una canalización, SageMaker guarda las funciones, los argumentos y las dependencias serializados de los pasos en una carpeta con la fecha y hora actuales. Esto ocurre cada vez que ejecuta `pipeline.create()`, `pipeline.update()`, `pipeline.upsert()` o `pipeline.definition()`.

# Ejecución de una canalización
<a name="pipelines-step-decorator-run-pipeline"></a>

En la siguiente página se describe cómo ejecutar una canalización con Amazon SageMaker Pipelines, ya sea con recursos de SageMaker IA o de forma local.

Inicie una nueva ejecución de canalización con la `pipeline.start()` función como lo haría con una canalización de SageMaker IA tradicional. Para obtener más información sobre la función `start()`, consulte [sagemaker.workflow.pipeline.Pipeline.start](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.start).

**nota**  
Un paso definido con el decorador `@step` funciona como un trabajo de entrenamiento. Por tanto, debe tener en cuenta los siguientes límites:  
Límites de instancias y límites de trabajos de entrenamiento en sus cuentas. Actualice sus límites en consecuencia para evitar problemas de limitación o límites de recursos.
El costo económico asociado a cada ejecución de un paso de entrenamiento de la canalización. Para obtener más información, consulta los [ SageMaker precios de Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Recuperación de los resultados de una canalización ejecutada localmente
<a name="pipelines-step-decorator-run-pipeline-retrieve"></a>

Para ver el resultado de cualquier paso de la ejecución de una canalización, use [execution.result()](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline._PipelineExecution.result           ), como se muestra en el siguiente fragmento:

```
execution = pipeline.start()
execution.result(step_name="train")
```

**nota**  
Canalizaciones no es compatible con `execution.result()` en el modo local.

Solo puede recuperar los resultados de un paso cada vez. Si el nombre del paso lo generó la SageMaker IA, puedes recuperarlo llamando de la `list_steps` siguiente manera:

```
execution.list_step()
```

## Ejecución de una canalización de forma local
<a name="pipelines-step-decorator-run-pipeline-local"></a>

Puede ejecutar una canalización con pasos decorados con `@step` localmente, como lo haría con los pasos de una canalización tradicional. Para obtener más información sobre la ejecución de canalizaciones en modo local, consulte [Ejecución de canalizaciones en modo local](pipelines-local-mode.md). Para usar el modo local, proporciona una `LocalPipelineSession` en lugar de una `SageMakerSession` a su definición de canalización, tal y como se muestra en el siguiente ejemplo:

```
from sagemaker.workflow.function_step import step
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import LocalPipelineSession

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model
    
step_train_result = train()

local_pipeline_session = LocalPipelineSession()

local_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=local_pipeline_session # needed for local mode
)

local_pipeline.create(role_arn="role_arn")

# pipeline runs locally
execution = local_pipeline.start()
```

# Configuración de la canalización
<a name="pipelines-step-decorator-cfg-pipeline"></a>

Se recomienda utilizar el archivo de configuración de SageMaker AI para establecer los valores predeterminados de la canalización. Para obtener información sobre el archivo de configuración de SageMaker AI, consulte [Configuración y uso de valores predeterminados con el SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). Cualquier configuración que se añada al archivo de configuración se aplica a todos los pasos de la canalización. Si quiere anular las opciones de alguno de los pasos, proporcione nuevos valores en los argumentos del decorador `@step`. En el siguiente tema, se describe cómo configurar un archivo de configuración.

La configuración del decorador `@step` en el archivo de configuración es idéntica a la configuración del decorador `@remote`. Para configurar el ARN del rol de canalización y las etiquetas de canalización en el archivo de configuración, use la sección `Pipeline` que se muestra en el siguiente fragmento:

```
SchemaVersion: '1.0'
SageMaker:
  Pipeline:
    RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
    Tags:
    - Key: 'tag_key'
      Value: 'tag_value'
```

La mayoría de los valores predeterminados que se pueden establecer en el archivo de configuración también se pueden anular pasando nuevos valores al decorador `@step`. Por ejemplo, puede anular el tipo de instancia establecido en el archivo de configuración para el paso de preprocesamiento, tal y como se muestra en el ejemplo siguiente:

```
@step(instance_type="ml.m5.large")
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
```

Algunos argumentos no forman parte de la lista de parámetros del `@step` decorador; solo se pueden configurar para toda la canalización a través del archivo de configuración de SageMaker AI. Son los siguientes:
+ `sagemaker_session`(`sagemaker.session.Session`): La sesión de SageMaker IA subyacente en la que la SageMaker IA delega las llamadas de servicio. Si no se especifica, se crea una sesión con la siguiente configuración predeterminada:

  ```
  SageMaker:
    PythonSDK:
      Modules:
        Session:
          DefaultS3Bucket: 'default_s3_bucket'
          DefaultS3ObjectKeyPrefix: 'key_prefix'
  ```
+ `custom_file_filter` (`CustomFileFilter)`: un objeto `CustomFileFilter` que especifica los directorios y archivos locales que se van a incluir en el paso de canalización. Si no se especifica, este valor se establece de forma predeterminada en `None`. Para que `custom_file_filter` se aplique, debe establecer `IncludeLocalWorkdir` en `True`. El siguiente ejemplo muestra una configuración que ignora todos los archivos del cuaderno, así como los archivos y directorios denominados `data`.

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          IncludeLocalWorkDir: true
          CustomFileFilter: 
            IgnoreNamePatterns: # files or directories to ignore
            - "*.ipynb" # all notebook files
            - "data" # folder or file named "data"
  ```

  Para obtener más información sobre cómo utilizar `IncludeLocalWorkdir` con `CustomFileFilter`, consulte [Uso de código modular con el decorador @remote](train-remote-decorator-modular.md).
+ `s3_root_uri (str)`: la carpeta raíz de Amazon S3 en la que SageMaker AI carga los archivos de código y los datos. Si no se especifica, se utiliza el depósito de SageMaker IA predeterminado.
+ `s3_kms_key (str)`: clave utilizada para cifrar los datos de entrada y salida. Solo puedes configurar este argumento en el archivo de configuración de SageMaker AI y el argumento se aplica a todos los pasos definidos en la canalización. Si no se especifica, el valor se establece de forma predeterminada en `None`. Consulte el siguiente fragmento para ver un ejemplo de la configuración de claves KMS de S3:

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          S3KmsKeyId: 's3kmskeyid'
          S3RootUri: 's3://amzn-s3-demo-bucket/my-project
  ```

# Prácticas recomendadas
<a name="pipelines-step-decorator-best"></a>

En las secciones siguientes, se incluyen prácticas recomendadas para usar el decorador `@step` en los pasos de la canalización.

## Uso de grupos de calentamiento
<a name="pipelines-step-decorator-best-warmpool"></a>

Para agilizar las ejecuciones de las canalizaciones, utilice la funcionalidad de grupos de calentamiento que se proporciona para los trabajos de entrenamiento. Para activar la funcionalidad de grupos de calentamiento, proporcione el argumento `keep_alive_period_in_seconds` al decorador `@step`, tal y como se muestra en el siguiente fragmento:

```
@step(
   keep_alive_period_in_seconds=900
)
```

Para obtener más información acerca de los grupos de calentamiento, consulte [SageMaker Piscinas calientes gestionadas por IA](train-warm-pools.md). 

## Estructuración del directorio
<a name="pipelines-step-decorator-best-dir"></a>

Se recomienda utilizar módulos de código mientras se utiliza el decorador `@step`. Coloque el módulo `pipeline.py`, en el que invoca las funciones de pasos y se define la canalización, en la raíz del espacio de trabajo. La estructura recomendada se muestra de la siguiente manera:

```
.
├── config.yaml # the configuration file that define the infra settings
├── requirements.txt # dependencies
├── pipeline.py  # invoke @step-decorated functions and define the pipeline here
├── steps/
| ├── processing.py
| ├── train.py
├── data/
├── test/
```

# Limitaciones
<a name="pipelines-step-decorator-limit"></a>

En las secciones siguientes, se describen las limitaciones que hay que tener en cuenta al utilizar el decorador `@step` en los pasos de canalización.

## Limitaciones de los argumentos de funciones
<a name="pipelines-step-decorator-arg"></a>

Al pasar un argumento de entrada a la función decorada con `@step`, se aplican las siguientes limitaciones:
+ Puede pasar los objetos `DelayedReturn`, `Properties` (de pasos de otros tipos) `Parameter` y `ExecutionVariable` a funciones decoradas con `@step` como argumentos. Sin embargo, las funciones decoradas con `@step` no admiten objetos `JsonGet` y `Join` como argumentos.
+ No se puede acceder directamente a una variable de canalización desde una función `@step`. El siguiente ejemplo produce un error:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ No puede anidar una variable de canalización en otro objeto y pasarlo a una función `@step`. El siguiente ejemplo produce un error:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ Como las entradas y salidas de una función están serializadas, existen restricciones en cuanto al tipo de datos que se puede transferir como entrada o salida desde una función. Consulte la sección *Serialización y deserialización de datos* de [Invocación de una función remota](train-remote-decorator-invocation.md) para obtener más información. Las mismas restricciones se aplican a las funciones decoradas con `@step`.
+ Ningún objeto que tenga un cliente boto se puede serializar, por lo que no se pueden pasar dichos objetos como entrada o salida desde una función decorada con `@step`. Por ejemplo, las clases de cliente del SDK de SageMaker Python`Estimator`, como`Predictor`, y, no se `Processor` pueden serializar.

## Importaciones de funciones
<a name="pipelines-step-decorator-best-import"></a>

Debe importar las bibliotecas necesarias para el paso dentro más que fuera de la función. Si las importa a escala global, corre el riesgo de que se produzca un error de importación al serializar la función. Por ejemplo, `sklearn.pipeline.Pipeline` podría ser anulada por `sagemaker.workflow.pipeline.Pipeline`.

## Referencia a miembros secundarios del valor de devolución de la función
<a name="pipelines-step-decorator-best-child"></a>

Si hace referencia a los miembros secundarios del valor de devolución de una función decorada con `@step`, se aplican las siguientes limitaciones:
+ Puede hacer referencia a los miembros secundarios con `[]` si el objeto `DelayedReturn` representa una tupla, una lista o un dictado, como se muestra en el siguiente ejemplo:

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ No se puede desempaquetar el resultado de una tupla o lista, porque no se puede conocer la longitud exacta de la tupla o lista subyacente al invocar la función. El siguiente ejemplo produce un error:

  ```
  a, b, c = func() # this raises ValueError
  ```
+ No se puede iterar sobre un objeto `DelayedReturn`. El siguiente ejemplo da un error:

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ No se puede hacer referencia a miembros secundarios arbitrarios con `.`. El siguiente ejemplo produce un error:

  ```
  delayed_return.a_child # raises AttributeError
  ```

## Características de canalización existentes que no se admiten
<a name="pipelines-step-decorator-best-unsupported"></a>

No puede usar el decorador `@step` con las siguientes características de canalización:
+ [Almacenamiento en caché de pasos de canalización](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [Archivos de propiedades](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)

# Transferencia de datos entre pasos
<a name="build-and-manage-propertyfile"></a>

Al crear canalizaciones con Amazon SageMaker Pipelines, es posible que necesite pasar los datos de un paso al siguiente. Por ejemplo, es posible que desee utilizar los artefactos del modelo generados por un paso de entrenamiento como entrada para un paso de evaluación del modelo o implementación. Puede usar esta funcionalidad para crear pasos de canalización interdependientes y crear sus flujos de trabajo de ML.

Cuando necesite recuperar información de la salida de un paso de la canalización, puede usar `JsonGet`. `JsonGet` le ayuda a extraer información de Amazon S3 o de archivos de propiedades. En las siguientes secciones, se explican los métodos que puede utilizar para extraer la salida de los pasos con `JsonGet`.

## Transferencia de datos entre pasos con Amazon S3
<a name="build-and-manage-propertyfile-s3"></a>

Puede utilizar `JsonGet` en un `ConditionStep` para obtener la salida JSON directamente desde Amazon S3. El URI de Amazon S3 puede ser una función `Std:Join` que contiene cadenas primitivas, variables de ejecución de canalización o parámetros de canalización. El siguiente ejemplo muestra cómo puede utilizar `JsonGet` en un `ConditionStep`:

```
# Example json file in s3 bucket generated by a processing_step
{
   "Output": [5, 10]
}

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name="<step-name>",
        s3_uri="<s3-path-to-json>",
        json_path="Output[1]"
    ),
    right=6.0
)
```

Si utiliza `JsonGet` con una ruta de Amazon S3 en el paso de condición, debe añadir explícitamente una dependencia entre el paso de condición y el paso que genera la salida de JSON. En el siguiente ejemplo, el paso de condición se crea con una dependencia en el paso de procesamiento:

```
cond_step = ConditionStep(
        name="<step-name>",
        conditions=[cond_lte],
        if_steps=[fail_step],
        else_steps=[register_model_step],
        depends_on=[processing_step],
)
```

## Transferencia de datos entre pasos con archivos de propiedades
<a name="build-and-manage-propertyfile-property"></a>

Use los archivos de propiedades para almacenar la información de la salida de un paso de procesamiento. Resulta particularmente útil cuando se analizan los resultados de un paso de procesamiento para decidir cómo se debe ejecutar un paso condicional. La `JsonGet` función procesa un archivo de propiedades y le permite utilizar la JsonPath notación para consultar el archivo JSON de propiedades. Para obtener más información sobre la JsonPath notación, consulta el [JsonPath repositorio](https://github.com/json-path/JsonPath).

Para almacenar un archivo de propiedades para utilizarlo más adelante, primero debe crear una instancia `PropertyFile` con el siguiente formato. El parámetro `path` es el nombre del archivo JSON en el que se guarda el archivo de propiedades. Cualquier `output_name` debe coincidir con el `output_name` de la `ProcessingOutput` que defina en el paso de procesamiento. Esto permite que el archivo de propiedades capture la `ProcessingOutput` en el paso.

```
from sagemaker.workflow.properties import PropertyFile

<property_file_instance> = PropertyFile(
    name="<property_file_name>",
    output_name="<processingoutput_output_name>",
    path="<path_to_json_file>"
)
```

Cuando cree la `ProcessingStep` instancia, añada el `property_files` parámetro para enumerar todos los archivos de parámetros que el servicio Amazon SageMaker Pipelines debe indexar. De este modo, se guarda el archivo de propiedades para utilizarse más adelante.

```
property_files=[<property_file_instance>]
```

Para usar el archivo de propiedades en un paso de condición, agregue el `property_file` a la condición que va a pasar al paso de condición, como se muestra en el siguiente ejemplo, para consultar el archivo JSON de la propiedad deseada mediante el parámetro `json_path`.

```
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=<property_file_instance>,
        json_path="mse"
    ),
    right=6.0
)
```

Para ver ejemplos más detallados, consulte *[Property File](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#property-file)* en el [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

# Almacenamiento en caché de pasos de canalización
<a name="pipelines-caching"></a>

En Amazon SageMaker Pipelines, puede utilizar el almacenamiento en caché por pasos para ahorrar tiempo y recursos al volver a ejecutar canalizaciones. El almacenamiento en caché de pasos reutiliza el resultado de una ejecución correcta anterior de un paso (en lugar de volver a procesarlo) cuando el paso tiene la misma configuración y las mismas entradas. Esto ayuda a conseguir resultados uniformes en todas las nuevas ejecuciones de la canalización con parámetros idénticos. En el siguiente tema, se muestra cómo configurar y activar el almacenamiento en caché de pasos para las canalizaciones.

Al utilizar el almacenamiento en caché de firmas de pasos, Canalizaciones intenta buscar una ejecución anterior del paso de canalización actual con los mismos valores para determinados atributos. Si la encuentra, Canalizaciones propaga las salidas de la ejecución anterior en lugar de volver a procesar el paso. Los atributos marcados son específicos del tipo de paso y se enumeran en [Atributos clave de caché predeterminados por tipo de paso de la canalización](pipelines-default-keys.md).

Debe elegir utilizar el almacenamiento en caché de pasos; está desactivado de forma predeterminada. Al activar el almacenamiento en caché de pasos, también debe definir un tiempo de espera. Este tiempo de espera define la antigüedad que puede tener una ejecución anterior para que aún pueda reutilizarse.

El almacenamiento en caché de pasos solo considera las ejecuciones correctas; nunca reutiliza las ejecuciones que produjeron un error. Cuando hay varias ejecuciones correctas dentro del período de tiempo de espera, Canalizaciones utiliza el resultado de la ejecución correcta más reciente. Si ninguna ejecución correcta coincide en el período de tiempo de espera, Canalizaciones vuelve a ejecutar el paso. Si el ejecutor encuentra una ejecución anterior que cumple los criterios pero que aún está en curso, ambos pasos seguirán ejecutándose y actualizarán la caché si se realizan correctamente.

El almacenamiento en caché de pasos solo se aplica a canalizaciones individuales, por lo que no puede reutilizar un paso de otra canalización aunque la firma de un paso coincida.

El almacenamiento en caché de pasos está disponible para los siguientes tipos de pasos: 
+ [Procesando](build-and-manage-steps-types.md#step-type-processing)
+ [Formación](build-and-manage-steps-types.md#step-type-training)
+ [Ajuste](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [Transformar](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [Activación del almacenamiento en caché de pasos](pipelines-caching-enabling.md)
+ [Desactivación del almacenamiento en caché de pasos](pipelines-caching-disabling.md)
+ [Atributos clave de caché predeterminados por tipo de paso de la canalización](pipelines-default-keys.md)
+ [Control de acceso a los datos en caché](pipelines-access-control.md)

# Activación del almacenamiento en caché de pasos
<a name="pipelines-caching-enabling"></a>

Para activar el almacenamiento en caché de pasos, debe añadir una propiedad `CacheConfig` a la definición del paso. Las propiedades `CacheConfig` utilizan el siguiente formato en el archivo de definición de la canalización:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

El campo `Enabled` indica si el almacenamiento en caché está activado para un paso concreto. Puede configurar el campo en`true`, lo que indica a la SageMaker IA que intente encontrar una ejecución anterior del paso con los mismos atributos. O bien, puedes configurar el campo en`false`, lo que indica a la SageMaker IA que ejecute el paso cada vez que se ejecute la canalización. `ExpireAfter`es una cadena en formato de [duración ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) que define el período de espera. La duración `ExpireAfter` puede ser un valor de año, mes, semana, día, hora o minuto. Cada valor consta de un número seguido de una letra que indica la unidad de duración. Por ejemplo:
+ “30d” = 30 días
+ “5y” = 5 años
+ “T16m” = 16 minutos
+ “30dT5h” = 30 días y 5 horas.

En el siguiente análisis se describe el procedimiento para activar el almacenamiento en caché para canalizaciones nuevas o preexistentes mediante el SDK de Amazon Python SageMaker .

**Activación del almacenamiento en caché para nuevas canalizaciones**

En el caso de canalizaciones nuevas, inicialice una instancia `CacheConfig` con `enable_caching=True` y proporcione esto como entrada al paso de canalización. En el siguiente ejemplo, se activa el almacenamiento en caché con un período de espera de 1 hora para un paso de entrenamiento: 

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
      
cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)
```

**Activación del almacenamiento en caché para canalizaciones preexistentes**

Para activar el almacenamiento en caché de las canalizaciones preexistentes y ya definidas, active la propiedad `enable_caching` para el paso y establezca `expire_after` en un valor de tiempo de espera. Por último, actualiza la canalización con `pipeline.upsert()` o `pipeline.update()`. Una vez que se ejecute de nuevo, el siguiente ejemplo de código activa el almacenamiento en caché con un período de espera de 1 hora para un paso de entrenamiento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Como alternativa, actualice la configuración de la caché una vez que haya definido la canalización (preexistente), lo que permitirá ejecutar el código de forma continua. En el siguiente ejemplo de código se muestra este método:

```
# turn on caching with timeout period of one hour
pipeline.steps[0].cache_config.enable_caching = True 
pipeline.steps[0].cache_config.expire_after = "PT1H" 

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Para obtener ejemplos de código más detallados y un análisis sobre cómo los parámetros del SDK de Python afectan al almacenamiento en caché, consulte [Configuración del almacenamiento en caché](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) en la documentación del SDK de Amazon SageMaker Python.

# Desactivación del almacenamiento en caché de pasos
<a name="pipelines-caching-disabling"></a>

Un paso de canalización no se vuelve a ejecutar si cambia algún atributo que no aparezca enumerado en [Atributos clave de caché predeterminados por tipo de paso de la canalización](pipelines-default-keys.md) de su tipo de paso. Sin embargo, puede decidir que desea que el paso de canalización se vuelva a ejecutar de todos modos. En este caso, debe desactivar el almacenamiento en caché de pasos.

Para desactivar el almacenamiento en caché de pasos, defina el atributo `Enabled` de la propiedad `CacheConfig` en la definición del paso en `false`, tal y como se muestra en el siguiente fragmento de código:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Tenga en cuenta que el atributo `ExpireAfter` se pasa por alto cuando `Enabled` es `false`.

Para desactivar el almacenamiento en caché de un paso de canalización mediante el SDK de Amazon SageMaker Python, defina la canalización de su paso de canalización, desactive la `enable_caching` propiedad y actualice la canalización.

Una vez que se ejecute de nuevo, el siguiente ejemplo de código activa el almacenamiento en caché para un paso de entrenamiento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=False, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Como alternativa, desactive la propiedad `enable_caching` una vez que haya definido la canalización, lo que permitirá ejecutar el código de forma continua. En el siguiente ejemplo de código se muestra esta solución:

```
# turn off caching for the training step
pipeline.steps[0].cache_config.enable_caching = False

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Para obtener ejemplos de código más detallados y un análisis sobre cómo los parámetros del SDK de Python afectan al almacenamiento en caché, consulte [Configuración del almacenamiento en caché](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) en la documentación del SDK de Amazon SageMaker Python.

# Atributos clave de caché predeterminados por tipo de paso de la canalización
<a name="pipelines-default-keys"></a>

Al decidir si reutilizar un paso de la canalización anterior o volver a ejecutar el paso, Canalizaciones comprueba si algunos atributos han cambiado. Si el conjunto de atributos es diferente al de todas las ejecuciones anteriores dentro del período de tiempo de espera, el paso se vuelve a ejecutar. Estos atributos incluyen los artefactos de entrada, la especificación de la aplicación o el algoritmo y las variables del entorno. La siguiente lista muestra cada tipo de paso de la canalización y los atributos que, si se modifican, inician una nueva ejecución del paso. Para obtener más información sobre los parámetros del SDK de Python que se utilizan para crear los siguientes atributos, consulte [Configuración de almacenamiento en caché](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) en la documentación del SDK de Amazon SageMaker Python.

## [Paso de procesamiento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ Entorno
+ ProcessingInputs. Este atributo contiene información sobre el script de preprocesamiento.

  

## [Paso de entrenamiento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ Entorno
+ HyperParameters
+ InputDataConfig. Este atributo contiene información sobre el guion de entrenamiento.

  

## [Paso de ajuste](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. Este atributo se compone de varios atributos secundarios, y no todos hacen que el paso se vuelva a ejecutar. Los atributos secundarios que podrían volver a ejecutarse (si se modifican) son:
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [Paso AutoML](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ MLJobConfig automático. Este atributo se compone de varios atributos secundarios, y no todos hacen que el paso se vuelva a ejecutar. Los atributos secundarios que podrían volver a ejecutarse (si se modifican) son:
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Mode
+ MLJobObjetivo automático
+ InputDataConfig
+ ProblemType

  

## [Paso de transformación](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ Entorno
+ ModelName
+ TransformInput

  

## [ClarifyCheck paso](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck paso](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [Paso EMR](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# Control de acceso a los datos en caché
<a name="pipelines-access-control"></a>

Cuando se ejecuta una canalización de SageMaker IA, guarda en caché los parámetros y metadatos asociados a los trabajos de SageMaker IA lanzados por la canalización y los guarda para reutilizarlos en ejecuciones posteriores. Es posible acceder a estos metadatos a través de diversos orígenes, además de los pasos de la canalización en caché, e incluyen los siguientes tipos:
+ Solicitudes `Describe*Job`
+ CloudWatch Registros
+ CloudWatch Eventos
+ CloudWatch Métricas
+ SageMaker Búsqueda de IA

Tenga en cuenta que el acceso a cada origen de datos de la lista se controla mediante su propio conjunto de permisos de IAM. Si se elimina el acceso de un rol concreto a un origen de datos el nivel de acceso a los demás no se ve afectado. Por ejemplo, el administrador de una cuenta puede eliminar los permisos de IAM para las solicitudes `Describe*Job` del rol del intermediario. Si bien el intermediario ya no puede realizar solicitudes `Describe*Job`, puede recuperar los metadatos de una canalización ejecutada con pasos en caché, siempre y cuando tenga permiso para ejecutar la canalización. Si el administrador de una cuenta quiere eliminar por completo el acceso a los metadatos de una tarea de SageMaker IA concreta, debe eliminar los permisos de cada uno de los servicios pertinentes que proporcionan acceso a los datos. 

# Política de reintentos para los pasos de la canalización
<a name="pipelines-retry-policy"></a>

Las políticas de reintentos le ayudan a reintentar automáticamente los pasos de Canalizaciones cuando se produce un error. Cualquier paso de la canalización puede tener excepciones, y las excepciones se producen por varios motivos. En algunos casos, un nuevo intento puede resolver estos problemas. Con una política de reintentos para los pasos de canalización, puede elegir si quiere volver a intentar o no un paso concreto de la canalización.

La política de reintentos solo admite los siguientes pasos de canalización:
+ [Paso de procesamiento](build-and-manage-steps-types.md#step-type-processing) 
+ [Paso de entrenamiento](build-and-manage-steps-types.md#step-type-training) 
+ [Paso de ajuste](build-and-manage-steps-types.md#step-type-tuning) 
+ [Paso AutoML](build-and-manage-steps-types.md#step-type-automl) 
+ [Paso Crear modelo](build-and-manage-steps-types.md#step-type-create-model) 
+ [Paso Registrar modelo](build-and-manage-steps-types.md#step-type-register-model) 
+ [Paso de transformación](build-and-manage-steps-types.md#step-type-transform) 
+ [Paso Trabajo de cuaderno](build-and-manage-steps-types.md#step-type-notebook-job) 

**nota**  
Los trabajos que se ejecutan dentro de los pasos de ajuste y AutoML realizan reintentos internos y no reintentarán el tipo de excepción `SageMaker.JOB_INTERNAL_ERROR`, incluso si se ha configurado una política de reintentos. Puedes programar tu propia [estrategia de reintentos](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html) mediante la SageMaker API.

## Tipos de excepciones compatibles con la política de reintentos
<a name="pipelines-retry-policy-supported-exceptions"></a>

La política de reintentos para los pasos de la canalización admite los siguientes tipos de excepciones:
+ `Step.SERVICE_FAULT`: estas excepciones se producen cuando se produce un error interno del servidor o un error transitorio al llamar a servicios posteriores. Canalizaciones vuelve a intentarlo automáticamente cuando se produce este tipo de error. Con una política de reintentos, puede anular la operación de reintento predeterminada para este tipo de excepción.
+ `Step.THROTTLING`: se pueden producir excepciones de limitación al llamar a los servicios posteriores. Canalizaciones vuelve a intentarlo automáticamente cuando se produce este tipo de error. Con una política de reintentos, puede anular la operación de reintento predeterminada para este tipo de excepción.
+ `SageMaker.JOB_INTERNAL_ERROR`: Estas excepciones se producen cuando se devuelve `InternalServerError` el trabajo de SageMaker IA. En este caso, iniciar un nuevo trabajo puede solucionar un problema transitorio.
+ `SageMaker.CAPACITY_ERROR`: El trabajo de SageMaker IA puede encontrarse con Amazon EC2`InsufficientCapacityErrors`, lo que lleva al fracaso del trabajo de SageMaker IA. Puede volver a intentarlo iniciando un nuevo trabajo de SageMaker IA para evitar el problema. 
+ `SageMaker.RESOURCE_LIMIT`: Puedes superar la cuota límite de recursos al ejecutar un trabajo de SageMaker IA. Puedes esperar y volver a intentar ejecutar la tarea de SageMaker IA tras un breve periodo de tiempo para comprobar si se liberan los recursos.

## El esquema JSON para la política de reintentos
<a name="pipelines-retry-policy-json-schema"></a>

La política de reintentos de las canalizaciones tiene el siguiente esquema JSON:

```
"RetryPolicy": {
   "ExceptionType": [String]
   "IntervalSeconds": Integer
   "BackoffRate": Double
   "MaxAttempts": Integer
   "ExpireAfterMin": Integer
}
```
+ `ExceptionType`: este campo requiere los siguientes tipos de excepciones en un formato de matriz de cadenas.
  + `Step.SERVICE_FAULT`
  + `Step.THROTTLING`
  + `SageMaker.JOB_INTERNAL_ERROR`
  + `SageMaker.CAPACITY_ERROR`
  + `SageMaker.RESOURCE_LIMIT`
+ `IntervalSeconds` (opcional): el número de segundos antes del primer intento de reintento (1 de forma predeterminada). `IntervalSeconds` tiene un valor máximo de 43 200 segundos (12 horas).
+ `BackoffRate` (opcional): el multiplicador según el cual aumenta el intervalo de reintentos durante cada intento (el valor predeterminado es 2,0).
+ `MaxAttempts` (opcional): un entero positivo que representa el número máximo de reintentos (el valor predeterminado es 5). Si el error se repite más veces de las especificadas en `MaxAttempts`, se interrumpen los reintentos y se reanuda el control normal de errores. Un valor de 0 especifica que los errores no se reintentarán nunca. `MaxAttempts` tiene un valor máximo de 20.
+ `ExpireAfterMin` (opcional): un entero positivo que representa el período máximo de reintentos. Si el error se repite una vez transcurridos los minutos de `ExpireAfterMin` desde la ejecución del paso, los reintentos cesan y se reanuda el control normal de errores. Un valor de 0 especifica que los errores no se reintentarán nunca. `ExpireAfterMin ` tiene un valor máximo de 14 400 minutos (10 días).
**nota**  
Solo se puede especificar `MaxAttempts` o `ExpireAfterMin`, pero no ambos; si *no* se especifica ninguno, `MaxAttempts` se convierte en la opción predeterminada. Si ambas propiedades se identifican dentro de una política, la política de reintentos genera un error de validación.

# Configuración de una política de reintentos
<a name="pipelines-configuring-retry-policy"></a>

Si bien SageMaker las canalizaciones ofrecen una forma sólida y automatizada de organizar los flujos de trabajo de aprendizaje automático, es posible que se produzcan errores al ejecutarlos. Para gestionar estos escenarios sin problemas y mejorar la fiabilidad de sus canalizaciones, puede configurar políticas de reintentos que definan cómo y cuándo reintentar automáticamente pasos específicos tras producirse una excepción. La política de reintentos le permite especificar los tipos de excepciones que se van a reintentar, el número máximo de reintentos, el intervalo entre reintentos y la tasa de regresión para aumentar los intervalos de reintentos. En la siguiente sección, se proporcionan ejemplos de cómo configurar una política de reintentos para un paso de entrenamiento de tu proceso, tanto en JSON como con el SDK de SageMaker Python.

A continuación se muestra un ejemplo de un paso de entrenamiento con una política de reintentos.

```
{
    "Steps": [
        {
            "Name": "MyTrainingStep",
            "Type": "Training",
            "RetryPolicies": [
                {
                    "ExceptionType": [
                        "SageMaker.JOB_INTERNAL_ERROR",
                        "SageMaker.CAPACITY_ERROR"
                    ],
                    "IntervalSeconds": 1,
                    "BackoffRate": 2,
                    "MaxAttempts": 5
                }
            ]
        }
    ]
}
```



A continuación, se muestra un ejemplo de cómo crear un `TrainingStep` en el SDK para Python (Boto3) con una política de reintentos.

```
from sagemaker.workflow.retry import (
    StepRetryPolicy, 
    StepExceptionTypeEnum,
    SageMakerJobExceptionTypeEnum,
    SageMakerJobStepRetryPolicy
)

step_train = TrainingStep(
    name="MyTrainingStep",
    xxx,
    retry_policies=[
        // override the default 
        StepRetryPolicy(
            exception_types=[
                StepExceptionTypeEnum.SERVICE_FAULT, 
                StepExceptionTypeEnum.THROTTLING
            ],
            expire_after_mins=5,
            interval_seconds=10,
            backoff_rate=2.0 
        ),
        // retry when resource limit quota gets exceeded
        SageMakerJobStepRetryPolicy(
            exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT],
            expire_after_mins=120,
            interval_seconds=60,
            backoff_rate=2.0
        ),
        // retry when job failed due to transient error or EC2 ICE.
        SageMakerJobStepRetryPolicy(
            failure_reason_types=[
                SageMakerJobExceptionTypeEnum.INTERNAL_ERROR,
                SageMakerJobExceptionTypeEnum.CAPACITY_ERROR,
            ],
            max_attempts=10,
            interval_seconds=30,
            backoff_rate=2.0
        )
    ]
)
```

Para obtener más información sobre cómo configurar el comportamiento de reintento para determinados tipos de pasos, consulte *[Amazon SageMaker Pipelines: Política de reintentos en la documentación](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)* del SDK de Amazon SageMaker Python.

# Ejecución selectiva de los pasos de la canalización
<a name="pipelines-selective-ex"></a>

A medida que utilice Canalizaciones para crear flujos de trabajo y orquestar sus pasos de entrenamiento de ML, es posible que necesite realizar varias fases de experimentación. En lugar de ejecutar el proceso completo a la vez, es posible que solo desee repetir ciertos pasos. Con Canalizaciones, puede ejecutar los pasos de la canalización de forma selectiva. Esto ayuda a optimizar su entrenamiento de ML. La ejecución selectiva es útil en los siguientes escenarios: 
+ Desea reiniciar un paso específico con el tipo de instancia, los hiperparámetros u otras variables actualizados y, al mismo tiempo, mantener los parámetros de los pasos anteriores.
+ La canalización no supera un paso intermedio. Es caro volver a ejecutar los pasos anteriores de la ejecución, como la preparación de los datos o la extracción de características. Es posible que tenga que introducir una solución y volver a ejecutar algunos pasos manualmente para completar la canalización. 

Al utilizar la ejecución selectiva, puede elegir ejecutar cualquier subconjunto de pasos siempre que estén conectados en el gráfico acíclico dirigido (DAG) de su canalización. El siguiente DAG muestra un ejemplo de flujo de trabajo de canalización:

![\[Un gráfico acíclico dirigido (DAG) de una canalización de ejemplo.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-full.png)


Puede seleccionar los pasos `AbaloneTrain` y `AbaloneEval` en una ejecución selectiva, pero no puede seleccionar solo los pasos `AbaloneTrain` y `AbaloneMSECond`, porque estos pasos no están conectados en el DAG. En el caso de los pasos no seleccionados del flujo de trabajo, la ejecución selectiva reutiliza las salidas de una ejecución de canalización de referencia en lugar de volver a ejecutar los pasos. Además, en una ejecución selectiva, los pasos no seleccionados posteriores a los pasos seleccionados no se ejecutan. 

Si decide ejecutar un subconjunto de pasos intermedios en su canalización, es posible que los pasos dependan de los pasos anteriores. SageMaker La IA necesita una ejecución de canalización de referencia a partir de la cual poder dotar de recursos a estas dependencias. Por ejemplo, si decide ejecutar los pasos `AbaloneTrain` y `AbaloneEval`, necesita la salida del paso `AbaloneProcess`. Puedes proporcionar un ARN de ejecución de referencia o indicar a la SageMaker IA que utilice la última ejecución de la canalización, que es el comportamiento predeterminado. Si tiene una ejecución de referencia, también puede crear parámetros de tiempo de ejecución a partir de la ejecución de referencia y proporcionarlos a la ejecución selectiva con anulaciones. Para obtener más información, consulte [Reutilización de los valores de los parámetros de tiempo de ejecución de una ejecución de referencia](#pipelines-selective-ex-reuse).

En concreto, proporciona una configuración para la ejecución de la canalización de ejecución selectiva mediante `SelectiveExecutionConfig`. Si incluyes un ARN para la ejecución de una canalización de referencia (con el `source_pipeline_execution_arn` argumento), la SageMaker IA utilizará las dependencias del paso anterior de la ejecución de canalización que proporcionaste. Si no incluye un ARN y existe una ejecución de canalización más reciente, SageMaker AI la utiliza como referencia de forma predeterminada. Si no incluye un ARN y no quiere que la SageMaker IA utilice la última ejecución de su canalización, `reference_latest_execution` configúrelo en. `False` La ejecución de la canalización que la SageMaker IA utilice en última instancia como referencia, ya sea la más reciente o la especificada por el usuario, debe estar en `Success` o `Failed` estado.

En la siguiente tabla se resume cómo la SageMaker IA elige una ejecución de referencia.


| El valor del argumento `source_pipeline_execution_arn` | El valor del argumento `reference_latest_execution` | La ejecución de referencia utilizada | 
| --- | --- | --- | 
| Un ARN de canalización | `True` o sin especificar | El ARN de la canalización especificada | 
| Un ARN de canalización | `False` | El ARN de la canalización especificada | 
| null o sin especificar | `True` o sin especificar | La ejecución más reciente de la canalización | 
| null o sin especificar | `False` | Ninguna: en este caso, seleccione los pasos sin dependencias anteriores | 

Para obtener más información sobre los requisitos de configuración de la ejecución selectiva, consulte [sagemaker.workflow.selective\$1execution\$1config. SelectiveExecutionConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#selective-execution-config)documentación.

En el siguiente análisis se incluyen ejemplos de los casos en los que desea especificar una ejecución de canalización de referencia, utilizar la ejecución de canalización más reciente como referencia o ejecutar una ejecución selectiva sin una ejecución de canalización de referencia.

## Ejecución selectiva con una referencia de canalización especificada por el usuario
<a name="pipelines-selective-ex-arn"></a>

En el siguiente ejemplo, se muestra una ejecución selectiva para volver de los pasos `AbaloneTrain` y `AbaloneEval` utilizando como referencia la ejecución de una canalización.

```
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig

selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", 
    selected_steps=["AbaloneTrain", "AbaloneEval"]
)

selective_execution = pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Ejecución selectiva con la ejecución de canalización más reciente como referencia
<a name="pipelines-selective-ex-latest"></a>

En el siguiente ejemplo, se muestra una ejecución selectiva de los pasos `AbaloneTrain` y `AbaloneEval` utilizando como referencia la última ejecución de la canalización. Dado que la SageMaker IA utiliza la última ejecución de la canalización de forma predeterminada, puedes establecer el `reference_latest_execution` argumento en`True`.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneTrain", "AbaloneEval"],
    # optional
    reference_latest_execution=True
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Ejecución selectiva sin una canalización de referencia
<a name="pipelines-selective-ex-none"></a>

El siguiente ejemplo muestra una ejecución selectiva de los pasos `AbaloneProcess` `AbaloneTrain` sin proporcionar un ARN de referencia y desactivando la opción de usar la última ejecución de canalización como referencia. SageMaker La IA permite esta configuración, ya que este subconjunto de pasos no depende de los pasos anteriores.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneProcess", "AbaloneTrain"],
    reference_latest_execution=False
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Reutilización de los valores de los parámetros de tiempo de ejecución de una ejecución de referencia
<a name="pipelines-selective-ex-reuse"></a>

Puede crear los parámetros a partir de la ejecución de su canalización de referencia mediante `build_parameters_from_execution` y suministrar el resultado a su canalización de ejecución selectiva. Puede utilizar los parámetros originales de la ejecución de referencia o aplicar cualquier modificación mediante el argumento `parameter_value_overrides`.

En el siguiente ejemplo, se muestra cómo crear parámetros a partir de una ejecución de referencia y cómo aplicar una modificación al parámetro `MseThreshold`.

```
# Prepare a new selective execution.
selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"],
)
# Define a new parameters list to test.
new_parameters_mse={
    "MseThreshold": 5,
}

# Build parameters from reference execution and override with new parameters to test.
new_parameters = pipeline.build_parameters_from_execution(
    pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    parameter_value_overrides=new_parameters_mse
)

# Start pipeline execution with new parameters.
execution = pipeline.start(
    selective_execution_config=selective_execution_config,
    parameters=new_parameters
)
```

# Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Pipelines ClarifyCheck y QualityCheck pasos
<a name="pipelines-quality-clarify-baseline-lifecycle"></a>

En el siguiente tema se analiza cómo evolucionan las líneas base y las versiones de los modelos en Amazon SageMaker Pipelines cuando se utilizan los [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check) pasos y. [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)

Para el paso `ClarifyCheck`, una referencia es un archivo único que reside en las propiedades del paso con el sufijo `constraints`. Para el paso `QualityCheck`, una referencia es una combinación de dos archivos que residen en las propiedades del paso: uno con el sufijo `statistics` y otro con el sufijo `constraints`. En los siguientes temas, analizamos estas propiedades con un prefijo que describe cómo se utilizan, lo que afecta al comportamiento de la referencia y al ciclo de vida en estos dos pasos de la canalización. Por ejemplo, el paso `ClarifyCheck` siempre calcula y asigna las nuevas líneas de base en la propiedad `CalculatedBaselineConstraints` y el paso `QualityCheck` hace lo mismo en las propiedades `CalculatedBaselineConstraints` y `CalculatedBaselineStatistics`.

## Cálculo base, registro y pasos ClarifyCheck QualityCheck
<a name="pipelines-quality-clarify-baseline-calculations"></a>

Tanto el paso `ClarifyCheck` como el `QualityCheck` calculan las nuevas referencias en función de las entradas del paso durante la ejecución del trabajo de procesamiento subyacente. Se accede a estas líneas de base recién calculadas a través de las propiedades con el prefijo `CalculatedBaseline`. Puede registrar estas propiedades como las `ModelMetrics` de su paquete de modelos en el [Paso de modelo](build-and-manage-steps-types.md#step-type-model). Este paquete de modelos se puede registrar con 5 líneas de base diferentes. Puede registrarlo con una para cada tipo de comprobación: sesgo de los datos, sesgo del modelo y explicabilidad del modelo al ejecutar el paso `ClarifyCheck` y la calidad del modelo, y la calidad de los datos al ejecutar el paso `QualityCheck`. El parámetro `register_new_baseline` indica el valor establecido en las propiedades con el prefijo `BaselineUsedForDriftCheck` después de ejecutar un paso.

La siguiente tabla de posibles casos de uso muestra los diferentes comportamientos que se derivan de los parámetros del paso que se pueden configurar para los pasos `ClarifyCheck` y `QualityCheck`:


| Posible caso de uso que puede considerar para seleccionar esta configuración  | `skip_check` / `register_new_baseline` | ¿Step comprueba la desviación? | Valor de la propiedad del paso `CalculatedBaseline` | Valor de la propiedad del paso `BaselineUsedForDriftCheck` | 
| --- | --- | --- | --- | --- | 
| Realiza un reentrenamiento periódico con las comprobaciones habilitadas para obtener una nueva versión del modelo, pero *desea conservar las líneas de base anteriores* como las `DriftCheckBaselines` en el registro de modelos para su nueva versión del modelo. | False/ False | La comprobación de la desviación se realiza con respecto a las líneas de base existentes. | Las nuevas líneas de base se calculan ejecutando el paso. | Referencia del modelo más reciente aprobado en el registro de modelos o referencia proporcionada como parámetro del paso. | 
| Realiza un reentrenamiento periódico con las comprobaciones habilitadas para obtener una nueva versión del modelo, pero *desea actualizar las `DriftCheckBaselines` en el registro de modelos con las nuevas líneas de base calculadas* para su nueva versión del modelo. | False/ True | La comprobación de la desviación se realiza con respecto a las líneas de base existentes. | Las nuevas líneas de base se calculan ejecutando el paso. | Referencia recién calculada al ejecutar el paso (valor de la propiedad CalculatedBaseline). | 
| Está iniciando la canalización para volver a entrenar una nueva versión del modelo porque Amazon SageMaker Model Monitor ha detectado una infracción en un punto final para un tipo de verificación en particular, y desea *omitir este tipo de verificación con respecto a la línea base anterior, pero transferir la línea base anterior tal como aparece `DriftCheckBaselines` en el registro del modelo* para su nueva versión de modelo. | True/ False | Sin comprobación de desviación | Las nuevas líneas de base se calculan al ejecutar el paso. | Referencia del modelo más reciente aprobado en el registro de modelos o referencia proporcionada como parámetro del paso. | 
| Esto sucede en los siguientes casos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html)  | True/ True | Sin comprobación de desviación | Las nuevas líneas de base se calculan ejecutando el paso. | Referencia recién calculada al ejecutar el paso (valor de la propiedad CalculatedBaseline). | 

**nota**  
Si utiliza la notación científica en la restricción, tendrá que convertirla en flotante. Para ver un ejemplo de script de preprocesamiento sobre cómo hacer esto, consulte [Creación de una referencia de calidad del modelo](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-baseline.html).

Al registrar un modelo en [Paso de modelo](build-and-manage-steps-types.md#step-type-model), puede registrar la propiedad `BaselineUsedForDriftCheck` como `DriftCheckBaselines`. Luego, el monitor de modelos puede utilizar estos archivos de referencia para comprobar la calidad de los modelos y los datos. Además, estas líneas base también se pueden utilizar en el `QualityCheck` paso ClarifyCheckStep y para comparar los modelos recién entrenados con los modelos existentes que están registrados en el registro de modelos para futuras ejecuciones en canalización.

## Detección de desviaciones con respecto a referencias anteriores en Canalizaciones
<a name="pipelines-quality-clarify-baseline-drift-detection"></a>

En el caso del paso `QualityCheck`, al iniciar la canalización para el reentrenamiento periódico para obtener una nueva versión del modelo, es posible que no desee ejecutar el paso de entrenamiento si la calidad de los datos y el sesgo de los datos tienen [Esquema para infracciones (archivo constraint\$1violations.json)](model-monitor-interpreting-violations.md) en las líneas de base de la versión anterior del modelo aprobada. Es posible que tampoco desee registrar la versión del modelo recién entrenada si la calidad, el sesgo o la explicabilidad del modelo infringen la referencia registrada de la versión anterior del modelo aprobada al ejecutar el paso `ClarifyCheck`. En estos casos, puede habilitar las comprobaciones que desee al configurar la propiedad `skip_check` del paso de comprobación correspondiente en `False`, lo que provocará un error en el paso `ClarifyCheck` y `QualityCheck` si se detecta una infracción con respecto a las líneas de base anteriores. Entonces, el proceso de canalización no continúa, por lo que el modelo que se ha desviado de la referencia no queda registrado. Los pasos `ClarifyCheck` y `QualityCheck` pueden obtener las `DriftCheckBaselines` de la versión más reciente del modelo aprobada de un grupo de paquetes de modelos determinado con la que comparar. Las líneas de base anteriores también se pueden proporcionar directamente a través de `supplied_baseline_constraints` (además de `supplied_baseline_statistics` si se trata de un paso `QualityCheck`) y siempre se les da prioridad sobre las líneas de base extraídas del grupo de paquetes de modelos. 

## Evolución y ciclo de vida de las versiones de referencia y modelo con Canalizaciones
<a name="pipelines-quality-clarify-baseline-evolution"></a>

Al establecer la `register_new_baseline` de su paso `ClarifyCheck` y `QualityCheck` en `False`, podrá acceder a su referencia anterior mediante el prefijo `BaselineUsedForDriftCheck` de propiedad del paso. A continuación, puede registrar estas líneas de base como las `DriftCheckBaselines` de la nueva versión del modelo cuando registra un modelo con [Paso de modelo](build-and-manage-steps-types.md#step-type-model). Una vez que apruebe esta nueva versión del modelo en el registro de modelos, la `DriftCheckBaseline` de esta versión del modelo estará disponible para los pasos `ClarifyCheck` y `QualityCheck` en el siguiente proceso de canalización. Si desea actualizar la referencia de un tipo de verificación determinado para futuras versiones del modelo, puede configurar la `register_new_baseline` en `True` para que las propiedades con el prefijo `BaselineUsedForDriftCheck` se conviertan en la referencia recién calculada. De esta forma, puede conservar sus líneas de base preferidas para un modelo entrenado en el futuro, o actualizar las líneas de base para comprobar las desviaciones cuando sea necesario, administrando la evolución y el ciclo de vida de las líneas de base a lo largo de las iteraciones de entrenamiento del modelo. 

El siguiente diagrama ilustra una model-version-centric vista de la evolución de la línea base y del ciclo de vida.

![\[Una model-version-centric vista de la evolución y el ciclo de vida de referencia.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipelines/Baseline-Lifecycle.png)


# Programación de ejecuciones de canalizaciones
<a name="pipeline-eventbridge"></a>

Puedes programar tus ejecuciones de Amazon SageMaker Pipelines con [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). [Amazon admite Amazon SageMaker Pipelines como destino. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) Esto le permite iniciar la ejecución de su canalización de creación de modelos en función de cualquier evento del bus de eventos. Con él EventBridge, puede automatizar las ejecuciones de sus canalizaciones y responder automáticamente a eventos como los cambios en el estado de los puntos finales, tareas o tareas de formación. Los eventos incluyen la carga de un nuevo archivo en su bucket de Amazon S3, un cambio en el estado de su punto de conexión de Amazon SageMaker AI debido a una desviación y temas relacionados con *Amazon Simple Notification Service* (SNS).

Las siguientes acciones de Canalizaciones se pueden iniciar automáticamente:  
+  `StartPipelineExecution` 

Para obtener más información sobre la programación de trabajos de SageMaker IA, consulta [Automatizar la SageMaker IA con Amazon EventBridge](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). 

**Topics**
+ [Programa una canalización con Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Programa una canalización con el SDK de SageMaker Python](#build-and-manage-scheduling)

## Programa una canalización con Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Para iniciar la ejecución de una canalización con Amazon CloudWatch Events, debe crear una EventBridge [regla](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html). Al crear una regla para los eventos, se especifica la acción objetivo que se debe realizar cuando se EventBridge recibe un evento que coincide con la regla. Cuando un evento coincide con la regla, EventBridge envía el evento al destino especificado e inicia la acción definida en la regla. 

 Los siguientes tutoriales muestran cómo programar la ejecución de una canalización EventBridge mediante la EventBridge consola o el AWS CLI.  

### Requisitos previos
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Un rol que EventBridge se puede asumir con el `SageMaker::StartPipelineExecution` permiso. Este rol se puede crear automáticamente si crea una regla desde la EventBridge consola; de lo contrario, tendrá que crear este rol usted mismo. Para obtener información sobre la creación de un rol de SageMaker IA, consulta [SageMaker Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Un Amazon SageMaker AI Pipeline para programar. Para crear una canalización de Amazon SageMaker AI, consulte [Definir una canalización](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Cree una EventBridge regla mediante la EventBridge consola
<a name="pipeline-eventbridge-schedule-console"></a>

 El siguiente procedimiento muestra cómo crear una EventBridge regla mediante la EventBridge consola.  

1. Vaya a la [consola de EventBridge ](https://console.aws.amazon.com/events). 

1. Seleccione **Reglas** en la parte izquierda. 

1.  Seleccione `Create Rule`. 

1. Escriba un nombre y la descripción de la regla.

1.  Seleccione cómo desea iniciar esta regla. Para la regla, tiene las siguientes opciones: 
   + **Patrón de eventos**: la regla se inicia cuando se produce un evento que coincide con el patrón. Puede elegir un patrón predefinido que coincida con un determinado tipo de evento o puede crear un patrón personalizado. Si selecciona un patrón predefinido, puede editarlo para personalizarlo. Para obtener más información sobre los patrones de eventos, consulte [Patrones de CloudWatch eventos en eventos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Programación**: la regla se inicia periódicamente según una programación específica. Puede utilizar una programación de tasa fija que se inicie de forma periódica durante un número específico de minutos, horas o semanas. También puede usar una [expresión cron](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) para crear una programación más detallada, como “el primer lunes de cada mes a las 8 de la mañana”. No se admite la programación en un bus de eventos personalizado o de socio. 

1. Seleccione el bus de eventos que desee. 

1. Seleccione los objetivos que desee invocar cuando un evento coincida con su patrón de eventos o cuando se inicie la programación. Puede agregar hasta 5 objetivos por regla. Seleccione `SageMaker Pipeline` en la lista desplegable de objetivos. 

1. Seleccione la canalización que desea iniciar en la lista desplegable de canalizaciones. 

1. Agregue parámetros para pasarlos a la ejecución de la canalización mediante un par de nombre y valor. Los valores de parámetros pueden ser estáticos o dinámicos. Para obtener más información sobre los parámetros de Amazon SageMaker AI Pipeline, consulte [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + Los valores estáticos se transfieren a la ejecución de la canalización cada vez que se inicia la canalización. Por ejemplo, si `{"Name": "Instance_type", "Value": "ml.4xlarge"}` se especifica en la lista de parámetros, se pasa como parámetro `StartPipelineExecutionRequest` cada vez que EventBridge se inicia la canalización. 
   + Los valores dinámicos se especifican mediante una ruta JSON. EventBridge analiza el valor de la carga útil de un evento y, a continuación, lo pasa a la ejecución de la canalización. Por ejemplo: *`$.detail.param.value`* 

1. Seleccione el rol que se va a usar para esta regla. Puede crear un nuevo rol o utilizar uno existente. 

1. De forma opcional, puede agregar una etiqueta. 

1. Seleccione `Create` para finalizar la regla. 

 La regla ya está en vigor y lista para iniciar las ejecuciones de la canalización. 

### Cree una EventBridge regla mediante el [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 En el siguiente procedimiento se muestra cómo crear una EventBridge regla mediante AWS CLI. 

1. Cree una regla para que se inicie. Al crear una EventBridge regla mediante el AWS CLI, tiene dos opciones para iniciar la regla: el patrón de eventos y la programación.
   +  **Patrón de eventos**: la regla se inicia cuando se produce un evento que coincide con el patrón. Puede elegir un patrón predefinido que coincida con un determinado tipo de evento o puede crear un patrón personalizado. Si selecciona un patrón predefinido, puede editarlo para personalizarlo.  Puede crear una regla con un patrón de eventos mediante el siguiente comando: 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Programación**: la regla se inicia periódicamente según una programación específica. Puede utilizar una programación de tasa fija que se inicie de forma periódica durante un número específico de minutos, horas o semanas. También puede usar una expresión cron para crear una programación más detallada, como “el primer lunes de cada mes a las 8 de la mañana”. No se admite la programación en un bus de eventos personalizado o de socio. Puede crear una regla con una programación mediante el siguiente comando: 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Agregue los objetivos que desee invocar cuando un evento coincida con su patrón de eventos o cuando se inicie la programación. Puede agregar hasta 5 objetivos por regla.  Para cada objetivo, debe especificar lo siguiente:  
   +  ARN: el ARN del recurso de la canalización. 
   +  Rol ARN: El ARN del rol EventBridge debe asumir para ejecutar la canalización. 
   +  Parámetros: parámetros de la canalización de Amazon SageMaker AI que se van a aprobar. 

1. Ejecuta el siguiente comando para pasar una canalización de Amazon SageMaker AI como objetivo a tu regla mediante [put-targets](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html): 

   ```
   aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 
   ```

## Programa una canalización con el SDK de SageMaker Python
<a name="build-and-manage-scheduling"></a>

En las siguientes secciones, se muestra cómo configurar los permisos para acceder a EventBridge los recursos y crear el cronograma de canalización mediante el SDK de SageMaker Python. 

### Permisos necesarios
<a name="build-and-manage-scheduling-permissions"></a>

Debe tener los permisos necesarios para utilizar el programador de canalizaciones. Realice los siguientes pasos para configurar sus permisos:

1. Adjunta la siguiente política de privilegios mínimos a la función de IAM utilizada para crear los desencadenadores de la canalización o utiliza la política AWS `AmazonEventBridgeSchedulerFullAccess` gestionada.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Action":
               [
                   "scheduler:ListSchedules",
                   "scheduler:GetSchedule",
                   "scheduler:CreateSchedule",
                   "scheduler:UpdateSchedule",
                   "scheduler:DeleteSchedule"
               ],
               "Effect": "Allow",
               "Resource":
               [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*", 
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "scheduler.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Establezca una relación de confianza EventBridge añadiendo el director del servicio `scheduler.amazonaws.com` a la política de confianza de este rol. Asegúrese de adjuntar la siguiente política de confianza a la función de ejecución si lanza el bloc de notas en SageMaker Studio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "scheduler.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

### Creación de una programación de canalización
<a name="build-and-manage-scheduling-create"></a>

Con el constructor `PipelineSchedule`, puede programar una canalización para que se ejecute una vez o en un intervalo predeterminado. La programación de canalización debe ser del tipo `at`, `rate` o `cron`. Este conjunto de tipos de programación es una extensión de las [opciones de EventBridge programación](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html). Para obtener más información sobre cómo usar la `PipelineSchedule` clase, consulte [sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). En el siguiente ejemplo, se muestra cómo crear cada tipo de programación con `PipelineSchedule`.

```
from sagemaker.workflow.triggers import PipelineSchedule

# schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC
my_datetime_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(2023, 12, 13, 10, 15, 20)
)

# schedules a pipeline run every 5 minutes
my_rate_schedule = PipelineSchedule(
    name="<schedule-name>", 
    rate=(5, "minutes")
)

# schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023
my_cron_schedule = PipelineSchedule(
    name="<schedule-name>", 
    cron="15 10 ? * 6L 2022-2023"
)
```

**nota**  
Si crea una programación única y necesita acceder a la hora actual, utilice `datetime.utcnow()` en lugar de `datetime.now()`. Esto último no almacena el contexto de la zona actual y hace que se transfiera una hora incorrecta a EventBridge.

### Asociación del disparador a la canalización
<a name="build-and-manage-scheduling-attach"></a>

Para asociar su `PipelineSchedule` a su canalización, invoque la llamada a `put_triggers` en el objeto de canalización que haya creado con una lista de disparadores. Si recibes un ARN de respuesta, habrás creado correctamente el cronograma en tu cuenta y EventBridge comenzarás a invocar la canalización objetivo a la hora o al ritmo especificados. Debe especificar un rol con los permisos correctos para asociar los disparadores a una canalización principal. Si no lo proporciona, Canalizaciones busca el rol predeterminado que se usa para crear la canalización desde el [archivo de configuración](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html).

En el siguiente ejemplo, se muestra cómo asociar una programación a una canalización.

```
scheduled_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[...],
    sagemaker_session=<sagemaker-session>,
)
custom_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30)
)
scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)
```

### Descripción de los disparadores actuales
<a name="build-and-manage-scheduling-describe"></a>

Para recuperar información sobre los disparadores de canalización que ha creado, puede invocar la API `describe_trigger()` con el nombre del disparador. Este comando devuelve detalles sobre la expresión de programación creada, como la hora de inicio, el estado de activación y otra información útil. En el siguiente fragmento de código, se muestra un ejemplo de invocación:

```
scheduled_pipeline.describe_trigger(name="<schedule-name>")
```

### Limpieza de recursos de disparadores
<a name="build-and-manage-scheduling-clean"></a>

Antes de eliminar su canalización, limpie los disparadores existentes para evitar que se pierdan recursos en su cuenta. Debe eliminar los disparadores antes de destruir la canalización principal. Puede eliminar los disparadores pasando una lista de nombres de disparadores a la API `delete_triggers`. En el siguiente fragmento, se muestra cómo eliminar los disparadores.

```
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
```

**nota**  
Tenga en cuenta las siguientes limitaciones al eliminar los disparadores:  
La opción de eliminar los activadores especificando los nombres de los activadores solo está disponible en el SDK de SageMaker Python. Al eliminar la canalización en la CLI o en una llamada a la API `DeletePipeline`, no se eliminan los disparadores. Como resultado, los activadores quedan huérfanos y la SageMaker IA intenta iniciar una ejecución para una canalización inexistente.
Además, si está utilizando otra sesión de bloc de notas o ya ha eliminado el objetivo de la canalización, limpie las programaciones huérfanas mediante la [CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html) o EventBridge la consola del programador.

# Integración de Amazon SageMaker Experiments
<a name="pipelines-experiments"></a>

Amazon SageMaker Pipelines está estrechamente integrado con Amazon SageMaker Experiments. De forma predeterminada, cuando Pipelines crea y ejecuta una canalización, se crean las siguientes entidades de SageMaker Experiments si no existen:
+ Un experimento para la canalización
+ Un grupo de ejecución para cada ejecución de la canalización
+ Una ejecución que se añade al grupo de ejecuciones por cada trabajo de SageMaker IA creado en un paso de ejecución de la canalización

Puedes comparar métricas, como la precisión del entrenamiento del modelo, entre varias ejecuciones en proceso, del mismo modo que puedes comparar dichas métricas entre varios grupos de ejecuciones de un experimento de entrenamiento con un modelo de SageMaker IA.

En el siguiente ejemplo, se muestran los parámetros relevantes de la clase [Pipeline](https://github.com/aws/sagemaker-python-sdk/blob/v2.41.0/src/sagemaker/workflow/pipeline.py) del [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

```
Pipeline(
    name="MyPipeline",
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[...]
)
```

Si no quiere que se cree un experimento y grupo de ejecuciones para la canalización, configure `pipeline_experiment_config` en `None`.

**nota**  
La integración de los experimentos se introdujo en la versión 2.41.0 del SDK de Amazon SageMaker Python.

Las siguientes reglas de nomenclatura se aplican en función de lo que especifique para los parámetros `ExperimentName` y `TrialName` de `pipeline_experiment_config`:
+ Si no especifica un `ExperimentName`, se usará el `name` de la canalización como nombre del experimento.

  Si especifica un `ExperimentName`, se usará como nombre del experimento. Si existe un experimento con ese nombre, los grupos de ejecuciones creados por la canalización se agregan al experimento existente. Si no existe un experimento con ese nombre, se crea uno nuevo.
+ Si no especifica un `TrialName`, se utiliza el ID de ejecución de la canalización como nombre del grupo de ejecuciones.

  Si especifica un `TrialName`, se usará como nombre del grupo de ejecuciones. Si existe un grupo de ejecuciones con ese nombre, las ejecuciones creados por la canalización se agregan al grupo de ejecuciones existente. Si no existe un grupo de ejecuciones con ese nombre, se crea uno nuevo.

**nota**  
Las entidades del experimento no se eliminan cuando se elimina la canalización que las creó. Puede usar la API de SageMaker experimentos para eliminar las entidades.

Para obtener información sobre cómo ver las entidades de los experimentos de SageMaker IA asociadas a una canalización, consulte[Acceso a los datos del experimento desde una canalización](pipelines-studio-experiments.md). Para obtener más información sobre SageMaker los experimentos, consulte[Amazon SageMaker Experiments en Studio Classic](experiments.md).

En las siguientes secciones se muestran ejemplos de las reglas anteriores y de cómo se representan en el archivo de definición de la canalización. Para obtener más información sobre los archivos de definición de las canalizaciones, consulte [Información general de canalizaciones](pipelines-overview.md).

**Topics**
+ [Comportamiento predeterminado](pipelines-experiments-default.md)
+ [Deshabilitar la integración de experimentos](pipelines-experiments-none.md)
+ [Especificar un nombre de experimento personalizado](pipelines-experiments-custom-experiment.md)
+ [Especifique un nombre personalizado del grupo de ejecuciones](pipelines-experiments-custom-trial.md)

# Comportamiento predeterminado
<a name="pipelines-experiments-default"></a>

**Cree una canalización**

El comportamiento predeterminado al crear una canalización de SageMaker IA es integrarla automáticamente con SageMaker los experimentos. Si no especificas ninguna configuración personalizada, la SageMaker IA crea un experimento con el mismo nombre que la canalización, un grupo de ejecución para cada ejecución de la canalización con el nombre del ID de ejecución de la canalización y ejecuciones individuales dentro de cada grupo de ejecución por cada trabajo de SageMaker IA que se lance como parte de los pasos de la canalización. Puede realizar un seguimiento y comparar sin problemas las métricas de las distintas ejecuciones de la canalización, de forma similar a como analizaría un experimento de entrenamiento del modelo. En la siguiente sección, se muestra este comportamiento predeterminado al definir una canalización sin configurar de forma explícita la integración del experimento.

Se omite `pipeline_experiment_config`. El valor predeterminado `ExperimentName` es el `name` de la canalización. El valor predeterminado de `TrialName` es el ID de ejecución.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    steps=[step_train]
)
```

**Archivo de definición de la canalización**

```
{
  "Version": "2020-12-01",
  "Parameters": [
    {
      "Name": "InputDataSource"
    },
    {
      "Name": "InstanceCount",
      "Type": "Integer",
      "DefaultValue": 1
    }
  ],
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Deshabilitar la integración de experimentos
<a name="pipelines-experiments-none"></a>

**Cree una canalización**

Puedes inhabilitar la integración de tu canalización con SageMaker Experiments configurando el `pipeline_experiment_config` parámetro en el `None` momento en que definas tu canalización. De esta forma, la SageMaker IA no creará automáticamente un experimento, ni ejecutará grupos ni ejecuciones individuales de forma automática para hacer un seguimiento de las métricas y los artefactos asociados a las ejecuciones de tu canalización. En el siguiente ejemplo, se define el parámetro de configuración de canalización en `None`.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=None,
    steps=[step_train]
)
```

**Archivo de definición de la canalización**

Es igual que en el ejemplo de valores predeterminados anterior, sin la `PipelineExperimentConfig`.

# Especificar un nombre de experimento personalizado
<a name="pipelines-experiments-custom-experiment"></a>

Aunque el comportamiento predeterminado es usar el nombre de la canalización como nombre del experimento en SageMaker Experimentos, puedes anularlo y especificar un nombre de experimento personalizado en su lugar. Esto puede resultar útil si quiere agrupar varias ejecuciones de canalización en el mismo experimento para facilitar el análisis y la comparación. El nombre del grupo de ejecución seguirá siendo el ID de ejecución predeterminado de la canalización, a menos que también establezca explícitamente un nombre personalizado para ese nombre. En la siguiente sección, se muestra cómo crear una canalización con un nombre de experimento personalizado y dejar el nombre del grupo de ejecución como el ID de ejecución predeterminado.

**Cree una canalización**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      "CustomExperimentName",
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[step_train]
)
```

**Archivo de definición de la canalización**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": "CustomExperimentName",
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Especifique un nombre personalizado del grupo de ejecuciones
<a name="pipelines-experiments-custom-trial"></a>

Además de establecer un nombre de experimento personalizado, también puedes especificar un nombre personalizado para los grupos de ejecuciones creados por SageMaker Experiments durante las ejecuciones de la canalización. Este nombre se añade al ID de ejecución de la canalización para garantizar la exclusividad. Puede especificar un nombre de grupo de ejecuciones personalizado para identificar y analizar las ejecuciones de la canalización relacionadas dentro del mismo experimento. En la siguiente sección, se muestra cómo definir una canalización con un nombre de grupo de ejecución personalizado y, al mismo tiempo, usar el nombre de canalización predeterminado para el nombre del experimento.

**Cree una canalización**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID])
    ),
    steps=[step_train]
)
```

**Archivo de definición de la canalización**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {
      "On": "-",
      "Values": [
         "CustomTrialName",
         {"Get": "Execution.PipelineExecutionId"}
       ]
    }
  },
  "Steps": [...]
}
```

# Ejecución de canalizaciones en modo local
<a name="pipelines-local-mode"></a>

SageMaker El modo local de Pipelines es una forma sencilla de probar tus scripts de entrenamiento, procesamiento e inferencia, así como la compatibilidad de los [parámetros de la canalización](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) en tiempo de ejecución antes de ejecutar la canalización en el servicio de SageMaker IA gestionado. Al utilizar el modo local, puedes probar tu canalización de SageMaker IA de forma local con un conjunto de datos más pequeño. Esto permite depurar de forma rápida y sencilla los errores en los scripts del usuario y en la propia definición de la canalización sin incurrir en los costos que conlleva el uso del servicio administrado. En el siguiente tema, se muestra cómo definir y ejecutar canalizaciones de forma local.

El modo local de Pipelines aprovecha el [modo local de los trabajos de SageMaker IA de](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) forma interna. Se trata de una función del SDK de SageMaker Python que permite ejecutar imágenes personalizadas o integradas de SageMaker IA de forma local mediante contenedores de Docker. El modo local de Pipelines se basa en el modo local de trabajos de SageMaker IA. Por lo tanto, puede esperar ver los mismos resultados que si ejecutara esos trabajos por separado. Por ejemplo, el modo local utiliza Amazon S3 para cargar artefactos del modelo y procesar las salidas. Si desea que los datos generados por los trabajos locales residan en el disco local, puede utilizar la configuración mencionada en [Modo local](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

El modo local de la canalización admite actualmente los siguientes tipos de pasos:
+ [Paso de entrenamiento](build-and-manage-steps-types.md#step-type-training)
+ [Paso de procesamiento](build-and-manage-steps-types.md#step-type-processing)
+ [Paso de transformación](build-and-manage-steps-types.md#step-type-transform)
+ [Paso de modelo](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (solo con los argumentos de creación de modelo)
+ [Paso de condición](build-and-manage-steps-types.md#step-type-condition)
+ [Paso Error](build-and-manage-steps-types.md#step-type-fail)

A diferencia del servicio administrado de las canalizaciones, que permite ejecutar varios pasos en paralelo mediante la [configuración del paralelismo](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration), el ejecutor de canalización local ejecuta los pasos en orden secuencial. Por lo tanto, el rendimiento general de ejecución de una canalización local puede ser inferior al de una canalización que se ejecuta en la nube; depende principalmente del tamaño del conjunto de datos, del algoritmo y de la potencia del equipo local. [Ten en cuenta también que los Pipelines que se ejecutan en modo local no se registran en SageMaker los experimentos.](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html)

**nota**  
El modo local de Pipelines no es compatible con algoritmos de SageMaker IA como. XGBoost Si quiere utilizar estos algoritmos, debe utilizarlos en [modo script](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html).

Para ejecutar una canalización de forma local, los campos de `sagemaker_session` asociados a los pasos de la canalización y a la propia canalización deben ser del tipo `LocalPipelineSession`. El siguiente ejemplo muestra cómo se puede definir una canalización de SageMaker IA para que se ejecute localmente.

```
from sagemaker.workflow.pipeline_context import LocalPipelineSession
from sagemaker.pytorch import PyTorch
from sagemaker.workflow.steps import TrainingStep
from sagemaker.workflow.pipeline import Pipeline

local_pipeline_session = LocalPipelineSession()

pytorch_estimator = PyTorch(
    sagemaker_session=local_pipeline_session,
    role=sagemaker.get_execution_role(),
    instance_type="ml.c5.xlarge",
    instance_count=1,
    framework_version="1.8.0",
    py_version="py36",
    entry_point="./entry_point.py",
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_estimator.fit(
        inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"),
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=sagemaker.get_execution_role(), 
    description="local pipeline example"
)

// pipeline will execute locally
execution = pipeline.start()

steps = execution.list_steps()

training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

step_outputs = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

Cuando estés preparado para ejecutar la canalización en el servicio de SageMaker Pipelines gestionado, puedes hacerlo sustituyendo `LocalPipelineSession` el fragmento de código anterior por `PipelineSession` (como se muestra en el siguiente ejemplo de código) y volviendo a ejecutar el código.

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```

# Solución de problemas de Amazon SageMaker Pipelines
<a name="pipelines-troubleshooting"></a>

Al usar Amazon SageMaker Pipelines, es posible que tengas problemas por varios motivos. En este tema se proporciona información sobre errores habituales y cómo resolverlos. 

 **Problemas con la definición de la canalización** 

Es posible que la definición de la canalización no tenga el formato correcto. Esto puede provocar que la ejecución produzca un error o que el trabajo no sea preciso. Estos errores se pueden detectar cuando se crea la canalización o cuando tiene lugar una ejecución. Si la definición no se valida, Canalizaciones devuelve un mensaje de error que identifica el carácter en el que el archivo JSON está mal formado. Para solucionar este problema, revisa los pasos creados con el SDK de Python para SageMaker IA para comprobar su precisión. 

Solo puede incluir los pasos en una definición de canalización una vez. Por este motivo, los pasos no pueden existir como parte de un paso de condición *y* de una canalización en la misma canalización. 

 **Examinar los registros de las canalizaciones** 

Puede ver el estado de los pasos con el comando siguiente: 

```
execution.list_steps()
```

Cada paso incluye la siguiente información:
+ El ARN de la entidad lanzada por la canalización, como el ARN del trabajo de SageMaker IA, el ARN del modelo o el ARN del paquete del modelo. 
+ El motivo del error incluye una breve explicación del error del paso.
+ Si el paso es un paso de condición, incluye si la condición se evalúa como verdadera o falsa.  
+ Si la ejecución vuelve a utilizar una ejecución de un trabajo anterior, `CacheHit` muestra la ejecución de origen.  

También puede ver los mensajes de error y los registros en la interfaz de Amazon SageMaker Studio. Para obtener información sobre cómo ver los registros en Studio, consulte [Visualización de los detalles de la ejecución de una canalización](pipelines-studio-view-execution.md).

 **Permisos ausentes** 

Se requieren los permisos correctos para el rol que crea la ejecución de la canalización y los pasos que crean cada uno de los trabajos de la ejecución de la canalización. Sin estos permisos, es posible que no pueda enviar la ejecución de su canalización o ejecutar sus trabajos de SageMaker IA según lo esperado. Para asegurarse de que los permisos estén configurados correctamente, consulte [Administración de acceso de IAM](build-and-manage-access.md). 

 **Errores de ejecución del trabajo** 

Es posible que tengas problemas al ejecutar tus pasos debido a problemas en los scripts que definen la funcionalidad de tus trabajos de SageMaker IA. Cada trabajo tiene un conjunto de CloudWatch registros. Para ver estos registros desde Studio, consulte[Visualización de los detalles de la ejecución de una canalización](pipelines-studio-view-execution.md). Para obtener información sobre el uso de CloudWatch registros con SageMaker IA, consulte[CloudWatch Registros para Amazon SageMaker AI](logging-cloudwatch.md). 

 **Errores en el archivo de propiedades** 

Es posible que tenga problemas si implementa archivos de propiedades de forma incorrecta en la canalización. Para asegurarse de que la implementación de los archivos de propiedades funcione según lo previsto, consulte [Transferencia de datos entre pasos](build-and-manage-propertyfile.md). 

 **Problemas al copiar el script al contenedor en el Dockerfile** 

Puede copiar el script al contenedor o pasarlo mediante el argumento `entry_point` (de la entidad estimadora) o el argumento `code` (de la entidad procesadora), como se muestra en el siguiente ejemplo de código.

```
step_process = ProcessingStep(
    name="PreprocessAbaloneData",
    processor=sklearn_processor,
    inputs = [
        ProcessingInput(
            input_name='dataset',
            source=...,
            destination="/opt/ml/processing/code",
        )
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path),
    ],
    code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument
    cache_config = cache_config,
    job_arguments = ['--input', 'arg1']
)

sklearn_estimator = SKLearn(
    entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point
    framework_version="0.23-1",
    instance_type=training_instance_type,
    role=role,
    output_path=model_path, # New
    sagemaker_session=sagemaker_session, # New
    instance_count=1, # New
    base_job_name=f"{base_job_prefix}/pilot-train",
    metric_definitions=[
        {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'},
        {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'}
    ],
)
```

# Acciones de canalizaciones
<a name="pipelines-build"></a>

Puede utilizar el SDK de Python de Amazon SageMaker Pipelines o el diseñador drag-and-drop visual de Amazon SageMaker Studio para crear, ver, editar, ejecutar y supervisar sus flujos de trabajo de aprendizaje automático.

La siguiente captura de pantalla muestra el diseñador visual que puedes usar para crear y administrar tus Amazon SageMaker Pipelines.

![\[Captura de pantalla de la drag-and-drop interfaz visual de Pipelines en Studio.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Una vez desplegada la canalización, podrá ver el gráfico acíclico dirigido (DAG) de la canalización y gestionar las ejecuciones con Amazon SageMaker Studio. Con SageMaker Studio, puede obtener información sobre sus procesos actuales e históricos, comparar las ejecuciones, consultar el DAG para ver sus ejecuciones, obtener información de metadatos y mucho más. Para obtener más información sobre cómo ver canalizaciones desde Studio, consulte [Visualización de los detalles de una canalización](pipelines-studio-list.md). 

**Topics**
+ [Definición de una canalización](define-pipeline.md)
+ [Editar una canalización](edit-pipeline-before-execution.md)
+ [Ejecución de una canalización](run-pipeline.md)
+ [Detención de una canalización](pipelines-studio-stop.md)
+ [Visualización de los detalles de una canalización](pipelines-studio-list.md)
+ [Visualización de los detalles de la ejecución de una canalización](pipelines-studio-view-execution.md)
+ [Descarga de un archivo de definición de canalización](pipelines-studio-download.md)
+ [Acceso a los datos del experimento desde una canalización](pipelines-studio-experiments.md)
+ [Seguimiento del linaje de una canalización](pipelines-lineage-tracking.md)

# Definición de una canalización
<a name="define-pipeline"></a>

Para organizar sus flujos de trabajo con Amazon SageMaker Pipelines, debe generar un gráfico acíclico dirigido (DAG) en forma de definición de canalización en JSON. El DAG especifica los pasos diferentes del proceso de ML, como el preprocesamiento de datos, el entrenamiento del modelo, la evaluación del modelo y la implementación del modelo, así como las dependencias y el flujo de datos entre estos pasos. En el siguiente tema, se muestra cómo generar una definición de canalización.

Puede generar su definición de canalización de JSON mediante el SDK de SageMaker Python o la función visual drag-and-drop Pipeline Designer de Amazon SageMaker Studio. La siguiente imagen es una representación del DAG de la canalización que ha creado en este tutorial:

![\[Captura de pantalla de la drag-and-drop interfaz visual de Pipelines en Studio.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


La canalización que se define en las secciones siguientes resuelve un problema de regresión para determinar la edad de un abulón en función de sus medidas físicas. Para ver un cuaderno de Jupyter ejecutable que incluya el contenido de este tutorial, consulte Cómo organizar [tareas con Amazon SageMaker Model Building](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) Pipelines.

**nota**  
[Puedes hacer referencia a la ubicación del modelo como una propiedad del paso de entrenamiento, como se muestra en el ejemplo de la canalización en Github. end-to-end CustomerChurn ](https://github.com/aws-samples/customer-churn-sagemaker-pipelines-sample/blob/main/pipelines/customerchurn/pipeline.py)

**Topics**

## Definición de una canalización (Diseñador de canalizaciones)
<a name="create-pipeline-designer"></a>

El siguiente tutorial te guía por los pasos para crear una canalización básica con el Diseñador de drag-and-drop canalizaciones. Si necesita pausar o finalizar su sesión de edición de la canalización en el diseñador visual en cualquier momento, haga clic en la opción **Exportar**. Esto le permite descargar la definición actual de su canalización a su entorno local. Más tarde, cuando quiera reanudar el proceso de edición de la canalización, puede importar el mismo archivo de definición de JSON al diseñador visual.

### Creación de un paso de procesamiento
<a name="create-processing-step"></a>

Para crear un paso de trabajo de procesamiento de datos, haga lo siguiente:

1. Abra la consola de Studio siguiendo las instrucciones de [Lanza Amazon SageMaker Studio](studio-updated-launch.md).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. Seleccione **Crear**.

1. Seleccione **En blanco**.

1. En la barra lateral izquierda, elija **Procesar datos** y arrástrelos al lienzo.

1. En el lienzo, elija el paso **Procesar datos** que ha añadido.

1. Para añadir un conjunto de datos de entrada, seleccione **Agregar** en **Datos (entrada)** en la barra lateral derecha y seleccione un conjunto de datos.

1. Para añadir una ubicación para guardar los conjuntos de datos de salida, seleccione **Agregar** en **Datos (salida)** en la barra lateral derecha y vaya hasta el destino.

1. Complete el resto de los campos en la barra lateral derecha. [Para obtener información sobre los campos de estas pestañas, consulte sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

### Creación de un paso de entrenamiento
<a name="create-training-step"></a>

Para configurar un paso de entrenamiento del modelo, haga lo siguiente:

1. En la barra lateral izquierda, seleccione **Entrenar modelo** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Entrenar modelo** que ha añadido.

1. Para añadir un conjunto de datos de entrada, seleccione **Agregar** en **Datos (entrada)** en la barra lateral derecha y seleccione un conjunto de datos.

1. Para elegir una ubicación para guardar los artefactos del modelo, introduzca un URI de Amazon S3 en el campo **Ubicación (URI de S3)** o elija **Examinar S3** para ir a la ubicación de destino.

1. Complete el resto de los campos en la barra lateral derecha. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Haga clic y arrastre el cursor desde el paso **Procesar datos** que añadió en la sección anterior hasta el paso **Entrenar modelo** para crear un borde que conecte los dos pasos.

### Creación de un paquete de modelos con un paso Registrar modelo
<a name="create-register-model-step"></a>

Para crear un paquete de modelos con un paso de registro de modelo, haga lo siguiente:

1. En la barra lateral izquierda, seleccione **Registrar modelo** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Registrar modelo** que ha añadido.

1. Para seleccionar un modelo al que anular el registro, elija **Agregar** en **Modelo (entrada)**.

1. Seleccione **Crear un grupo de modelos** para añadir el modelo a un nuevo grupo de modelos.

1. Complete el resto de los campos en la barra lateral derecha. Para obtener información sobre los campos de estas pestañas, consulte [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Haga clic y arrastre el cursor desde el paso **Entrenar modelo** que añadió en la sección anterior al paso **Registrar modelo** para crear un borde que conecte los dos pasos.

### Implementación del modelo en un punto de conexión con un paso Implementar modelo (punto de conexión)
<a name="create-deploy-endpoint-step"></a>

Para implementar el modelo mediante un paso de implementación del modelo, haga lo siguiente:

1. En la barra lateral izquierda, seleccione **Implementar modelo (punto de conexión)** y arrástrelo al lienzo.

1. En el lienzo, elija el paso **Implementar modelo (punto de conexión)** que ha añadido.

1. Para elegir un modelo para implementar, elija **Agregar** en **Modelo (entrada)**.

1. Pulse el botón de opción **Crear punto de conexión** para crear un nuevo punto de conexión.

1. Escriba un **Nombre** y **Descripción** para el punto de conexión.

1. Haga clic y arrastre el cursor desde el paso **Registrar modelo** que añadió en la sección anterior al paso **Implementar modelo (punto de conexión)** para crear un borde que conecte los dos pasos.

1. Complete el resto de los campos en la barra lateral derecha.

### Definición de los parámetros de canalizaciones
<a name="define-pipeline-parameters"></a>

Puede configurar un conjunto de parámetros de canalizaciones cuyos valores se pueden actualizar para cada ejecución. Para definir los parámetros de canalizaciones y establecer los valores predeterminados, haga clic en el icono de engranaje situado en la parte inferior del diseñador visual.

### Guardado de la canalización
<a name="save-pipeline"></a>

Una vez que haya introducido toda la información necesaria para crear su canalización, haga clic en **Guardar** en la parte inferior del diseñador visual. Esto valida su canalización para detectar posibles errores en tiempo de ejecución y se lo notifica. La operación **Guardar** no se realizará correctamente hasta que solucione todos los errores señalados por las comprobaciones de validación automatizadas. Si quiere reanudar la edición más adelante, puede guardar la canalización en curso como una definición JSON en su entorno local. Puede exportar su canalización como un archivo de definición JSON haciendo clic en el botón **Exportar** situado en la parte inferior del diseñador visual. Más adelante, para reanudar la actualización de su canalización, cargue ese archivo de definición JSON haciendo clic en el botón **Importar**.

## Definir una canalización (SDK de SageMaker Python)
<a name="create-pipeline-wrap"></a>

### Requisitos previos
<a name="define-pipeline-prereq"></a>

 Para ejecutar el siguiente tutorial, haga lo siguiente: 
+ Configure la instancia del cuaderno tal y como se describe en [Create a notebook instance](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html). Esto le da a su rol permisos para leer y escribir en Amazon S3 y crear trabajos de formación, transformación por lotes y procesamiento en SageMaker IA. 
+ Conceda permisos a su cuaderno para obtener y transferir su propio rol, tal y como se muestra en [Modificación de una política de permisos de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy). Agregue el siguiente fragmento de JSON para asociar esta política a su rol. Sustituya `<your-role-arn>` por el ARN utilizado para crear la instancia del cuaderno. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/role-name"
          }
      ]
  }
  ```

------
+  Confíe en el director del servicio de SageMaker IA siguiendo los pasos que se indican en [Modificación de la política de confianza de un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli). Agregue el siguiente fragmento de declaración a la relación de confianza de su rol: 

  ```
  {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
  ```

#### Configure su entorno
<a name="define-pipeline-prereq-setup"></a>

Cree una nueva sesión de SageMaker IA mediante el siguiente bloque de código. Esto devuelve el ARN del rol de la sesión. El ARN de este rol debe ser el ARN del rol de ejecución que haya configurado como requisito previo. 

```
import boto3
import sagemaker
import sagemaker.session
from sagemaker.workflow.pipeline_context import PipelineSession

region = boto3.Session().region_name
sagemaker_session = sagemaker.session.Session()
role = sagemaker.get_execution_role()
default_bucket = sagemaker_session.default_bucket()

pipeline_session = PipelineSession()

model_package_group_name = f"AbaloneModelPackageGroupName"
```

### Creación de una canalización
<a name="define-pipeline-create"></a>

**importante**  
Las políticas de IAM personalizadas que permiten a Amazon SageMaker Studio o Amazon SageMaker Studio Classic crear SageMaker recursos de Amazon también deben conceder permisos para añadir etiquetas a esos recursos. El permiso para añadir etiquetas a los recursos es necesario porque Studio y Studio Classic etiquetan automáticamente todos los recursos que crean. Si una política de IAM permite a Studio y Studio Classic crear recursos, pero no permite el etiquetado, se pueden producir errores de tipo AccessDenied «» al intentar crear recursos. Para obtener más información, consulte [Proporcione permisos para etiquetar los recursos de SageMaker IA](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS políticas gestionadas para Amazon SageMaker AI](security-iam-awsmanpol.md)que otorgan permisos para crear SageMaker recursos ya incluyen permisos para añadir etiquetas al crear esos recursos.

Ejecuta los siguientes pasos desde tu instancia de bloc de notas de SageMaker IA para crear una canalización que incluya los siguientes pasos:
+ procesamiento previo
+ entrenamiento
+ evaluación
+ evaluación condicional
+ registro del modelo

**nota**  
Puedes usar [ExecutionVariables](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables)la función [Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables) para especificar tu ubicación de salida. `ExecutionVariables`se resuelve en tiempo de ejecución. Por ejemplo, `ExecutionVariables.PIPELINE_EXECUTION_ID` se resuelve con el ID de la ejecución actual, que se puede utilizar como identificador único en diferentes ejecuciones.

#### Paso 1: descarga del conjunto de datos
<a name="define-pipeline-data-download"></a>

Este cuaderno utiliza el conjunto de datos de abulón de UCI Machine Learning. El conjunto de datos contiene las siguientes características: 
+ `length`: la medida más larga de la concha del abulón.
+ `diameter`: el diámetro del abulón perpendicular a su longitud.
+ `height`: La talla del abulón con carne en la concha.
+ `whole_weight`: el peso de todo el abulón.
+ `shucked_weight`: el peso de la carne extraída del abulón.
+ `viscera_weight`: el peso de las vísceras del abulón tras el sangrado.
+ `shell_weight`: el peso de la concha de abulón tras retirar la carne y secarla.
+ `sex`: el sexo del abulón. Puede ser “M”, “F” o “I”, don “I” es un abulón cría.
+ `rings`: el número de anillos de la concha del abulón.

El número de anillos de la concha del abulón es una buena indicación de su edad según la fórmula `age=rings + 1.5`. Sin embargo, la obtención de este número es una tarea que lleva mucho tiempo. Debe cortar la concha a través del cono, teñir la sección y contar el número de anillos con un microscopio. Las demás medidas físicas son más fáciles de determinar. Este cuaderno utiliza el conjunto de datos para crear un modelo predictivo de los anillos variables a partir de las demás medidas físicas.

**Para descargar los conjuntos de datos**

1. Descargue el conjunto de datos en el bucket de Amazon S3 predeterminado de su cuenta.

   ```
   !mkdir -p data
   local_path = "data/abalone-dataset.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset.csv",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   input_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(input_data_uri)
   ```

1. Descargue un segundo conjunto de datos para la transformación por lotes una vez creado el modelo.

   ```
   local_path = "data/abalone-dataset-batch.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset-batch",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   batch_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(batch_data_uri)
   ```

#### Paso 2: definición de los parámetros de la canalización
<a name="define-pipeline-parameters"></a>

 Este bloque de código define los siguientes parámetros para la canalización: 
+  `processing_instance_count`: el recuento de instancias del trabajo de procesamiento. 
+  `input_data`: la ubicación de los datos de entrada en Amazon S3. 
+  `batch_data`: la ubicación de los datos de entrada en Amazon S3 para la transformación por lotes. 
+  `model_approval_status`: el estado de aprobación para registrar el modelo entrenado para la CI/CD. Para obtener más información, consulte [MLOps Automatización con SageMaker proyectos](sagemaker-projects.md).

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
model_approval_status = ParameterString(
    name="ModelApprovalStatus",
    default_value="PendingManualApproval"
)
input_data = ParameterString(
    name="InputData",
    default_value=input_data_uri,
)
batch_data = ParameterString(
    name="BatchData",
    default_value=batch_data_uri,
)
```

#### Paso 3: definición de un paso de procesamiento para la ingeniería de características
<a name="define-pipeline-processing-feature"></a>

En esta sección se muestra cómo crear un paso de procesamiento para preparar los datos del conjunto de datos para el entrenamiento.

**Para crear un paso de procesamiento**

1.  Cree un directorio para el script de procesamiento.

   ```
   !mkdir -p abalone
   ```

1. En el directorio `/abalone`, cree un archivo denominado `preprocessing.py` con el contenido siguiente. Este script de procesamiento previo se transfiere al paso de procesamiento para ejecutarse en los datos de entrada. A continuación, el paso de entrenamiento usa las características y etiquetas de entrenamiento preprocesadas para entrenar un modelo. En el paso de evaluación, se usa el modelo entrenado y las características y etiquetas de prueba preprocesadas para evaluar el modelo. El script usa `scikit-learn` para hacer lo siguiente:
   +  Rellenar los datos categóricos `sex` ausentes y codificarlos para que sean adecuados para el entrenamiento. 
   +  Escalar y normalizar todos los campos numéricos excepto `rings` y `sex`. 
   +  Dividir los datos en conjuntos de entrenamiento, validación y prueba. 

   ```
   %%writefile abalone/preprocessing.py
   import argparse
   import os
   import requests
   import tempfile
   import numpy as np
   import pandas as pd
   
   
   from sklearn.compose import ColumnTransformer
   from sklearn.impute import SimpleImputer
   from sklearn.pipeline import Pipeline
   from sklearn.preprocessing import StandardScaler, OneHotEncoder
   
   
   # Because this is a headerless CSV file, specify the column names here.
   feature_columns_names = [
       "sex",
       "length",
       "diameter",
       "height",
       "whole_weight",
       "shucked_weight",
       "viscera_weight",
       "shell_weight",
   ]
   label_column = "rings"
   
   feature_columns_dtype = {
       "sex": str,
       "length": np.float64,
       "diameter": np.float64,
       "height": np.float64,
       "whole_weight": np.float64,
       "shucked_weight": np.float64,
       "viscera_weight": np.float64,
       "shell_weight": np.float64
   }
   label_column_dtype = {"rings": np.float64}
   
   
   def merge_two_dicts(x, y):
       z = x.copy()
       z.update(y)
       return z
   
   
   if __name__ == "__main__":
       base_dir = "/opt/ml/processing"
   
       df = pd.read_csv(
           f"{base_dir}/input/abalone-dataset.csv",
           header=None, 
           names=feature_columns_names + [label_column],
           dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype)
       )
       numeric_features = list(feature_columns_names)
       numeric_features.remove("sex")
       numeric_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="median")),
               ("scaler", StandardScaler())
           ]
       )
   
       categorical_features = ["sex"]
       categorical_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
               ("onehot", OneHotEncoder(handle_unknown="ignore"))
           ]
       )
   
       preprocess = ColumnTransformer(
           transformers=[
               ("num", numeric_transformer, numeric_features),
               ("cat", categorical_transformer, categorical_features)
           ]
       )
       
       y = df.pop("rings")
       X_pre = preprocess.fit_transform(df)
       y_pre = y.to_numpy().reshape(len(y), 1)
       
       X = np.concatenate((y_pre, X_pre), axis=1)
       
       np.random.shuffle(X)
       train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))])
   
       
       pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False)
       pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False)
       pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
   ```

1.  Cree una instancia de un `SKLearnProcessor` para transferirla al paso de procesamiento. 

   ```
   from sagemaker.sklearn.processing import SKLearnProcessor
   
   
   framework_version = "0.23-1"
   
   sklearn_processor = SKLearnProcessor(
       framework_version=framework_version,
       instance_type="ml.m5.xlarge",
       instance_count=processing_instance_count,
       base_job_name="sklearn-abalone-process",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Cree un paso de procesamiento. Este paso incluye `SKLearnProcessor`, los canales de entrada y salida y el script `preprocessing.py` que ha creado. Es muy similar al `run` método de una instancia de procesador en el SDK de Python para SageMaker IA. El parámetro `input_data` que se pasa a `ProcessingStep` son los datos de entrada del propio paso. La instancia del procesador utiliza estos datos de entrada cuando se ejecuta. 

    Observe los canales denominados `"train`, `"validation` y `"test"` especificados en la configuración de salida para el trabajo de procesamiento. Las `Properties` del paso como estas pueden utilizarse en pasos posteriores y se resuelven a sus valores de tiempo de ejecución en el tiempo de ejecución. 

   ```
   from sagemaker.processing import ProcessingInput, ProcessingOutput
   from sagemaker.workflow.steps import ProcessingStep
      
   
   processor_args = sklearn_processor.run(
       inputs=[
         ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),  
       ],
       outputs=[
           ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
           ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
           ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
       ],
       code="abalone/preprocessing.py",
   ) 
   
   step_process = ProcessingStep(
       name="AbaloneProcess",
       step_args=processor_args
   )
   ```

#### Paso 4: definición de un paso de entrenamiento
<a name="define-pipeline-training"></a>

En esta sección se muestra cómo usar el [XGBoostalgoritmo](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) de SageMaker IA para entrenar un modelo a partir de los datos de entrenamiento generados por los pasos de procesamiento. 

**Para definir un paso de entrenamiento**

1.  Especifique la ruta del modelo en la que desea guardar los modelos del entrenamiento. 

   ```
   model_path = f"s3://{default_bucket}/AbaloneTrain"
   ```

1. Configura un estimador para el XGBoost algoritmo y el conjunto de datos de entrada. El tipo de instancia de entrenamiento se transfiere al estimador. Script de entrenamiento típico:
   + carga datos de los canales de entrada
   + configura el entrenamiento con hiperparámetros
   + entrena un modelo
   + guarda un modelo en `model_dir` poder alojarlo más adelante

   SageMaker La IA carga el modelo a Amazon S3 en forma de a `model.tar.gz` al final del trabajo de formación.

   ```
   from sagemaker.estimator import Estimator
   
   
   image_uri = sagemaker.image_uris.retrieve(
       framework="xgboost",
       region=region,
       version="1.0-1",
       py_version="py3",
       instance_type="ml.m5.xlarge"
   )
   xgb_train = Estimator(
       image_uri=image_uri,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=model_path,
       sagemaker_session=pipeline_session,
       role=role,
   )
   xgb_train.set_hyperparameters(
       objective="reg:linear",
       num_round=50,
       max_depth=5,
       eta=0.2,
       gamma=4,
       min_child_weight=6,
       subsample=0.7,
       silent=0
   )
   ```

1. Cree un `TrainingStep` mediante la instancia del estimador y las propiedades del `ProcessingStep`. Pase el `S3Uri` de los canales de salida `"train"` y `"validation"` al `TrainingStep`.  

   ```
   from sagemaker.inputs import TrainingInput
   from sagemaker.workflow.steps import TrainingStep
   
   
   train_args = xgb_train.fit(
       inputs={
           "train": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "train"
               ].S3Output.S3Uri,
               content_type="text/csv"
           ),
           "validation": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "validation"
               ].S3Output.S3Uri,
               content_type="text/csv"
           )
       },
   )
   
   step_train = TrainingStep(
       name="AbaloneTrain",
       step_args = train_args
   )
   ```

#### Paso 5: definición de un paso de procesamiento para la evaluación del modelo
<a name="define-pipeline-processing-model"></a>

En esta sección se muestra cómo crear un paso de procesamiento para evaluar la precisión del modelo. El resultado de esta evaluación del modelo se utiliza en el paso de condición para determinar qué ruta de ejecución se debe seguir.

**Para definir un paso de procesamiento para la evaluación del modelo**

1. En el directorio `/abalone` cree un archivo denominado `evaluation.py`. Este script se utiliza en un paso de procesamiento para realizar la evaluación del modelo. Toma un modelo entrenado y el conjunto de datos de prueba como entrada y, a continuación, produce un archivo JSON que contiene las métricas de evaluación de la clasificación.

   ```
   %%writefile abalone/evaluation.py
   import json
   import pathlib
   import pickle
   import tarfile
   import joblib
   import numpy as np
   import pandas as pd
   import xgboost
   
   
   from sklearn.metrics import mean_squared_error
   
   
   if __name__ == "__main__":
       model_path = f"/opt/ml/processing/model/model.tar.gz"
       with tarfile.open(model_path) as tar:
           tar.extractall(path=".")
       
       model = pickle.load(open("xgboost-model", "rb"))
   
       test_path = "/opt/ml/processing/test/test.csv"
       df = pd.read_csv(test_path, header=None)
       
       y_test = df.iloc[:, 0].to_numpy()
       df.drop(df.columns[0], axis=1, inplace=True)
       
       X_test = xgboost.DMatrix(df.values)
       
       predictions = model.predict(X_test)
   
       mse = mean_squared_error(y_test, predictions)
       std = np.std(y_test - predictions)
       report_dict = {
           "regression_metrics": {
               "mse": {
                   "value": mse,
                   "standard_deviation": std
               },
           },
       }
   
       output_dir = "/opt/ml/processing/evaluation"
       pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
       
       evaluation_path = f"{output_dir}/evaluation.json"
       with open(evaluation_path, "w") as f:
           f.write(json.dumps(report_dict))
   ```

1.  Cree una instancia de un `ScriptProcessor` que se utilice para crear un`ProcessingStep`. 

   ```
   from sagemaker.processing import ScriptProcessor
   
   
   script_eval = ScriptProcessor(
       image_uri=image_uri,
       command=["python3"],
       instance_type="ml.m5.xlarge",
       instance_count=1,
       base_job_name="script-abalone-eval",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1.  Cree un `ProcessingStep` utilizando la instancia del procesador, los canales de entrada y salida y el script `evaluation.py`. Pase lo siguiente:
   + la propiedad `S3ModelArtifacts` desde el paso de entrenamiento `step_train`
   + el `S3Uri` del canal de salida `"test"` del paso de procesamiento `step_process`

   Es muy similar al `run` método de una instancia de procesador en el SDK de Python para SageMaker IA.  

   ```
   from sagemaker.workflow.properties import PropertyFile
   
   
   evaluation_report = PropertyFile(
       name="EvaluationReport",
       output_name="evaluation",
       path="evaluation.json"
   )
   
   eval_args = script_eval.run(
           inputs=[
           ProcessingInput(
               source=step_train.properties.ModelArtifacts.S3ModelArtifacts,
               destination="/opt/ml/processing/model"
           ),
           ProcessingInput(
               source=step_process.properties.ProcessingOutputConfig.Outputs[
                   "test"
               ].S3Output.S3Uri,
               destination="/opt/ml/processing/test"
           )
       ],
       outputs=[
           ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
       ],
       code="abalone/evaluation.py",
   )
   
   step_eval = ProcessingStep(
       name="AbaloneEval",
       step_args=eval_args,
       property_files=[evaluation_report],
   )
   ```

#### Paso 6: Defina una transformación CreateModelStep por lotes
<a name="define-pipeline-create-model"></a>

**importante**  
Recomendamos usarlo [Paso de modelo](build-and-manage-steps-types.md#step-type-model) para crear modelos a partir de la versión 2.90.0 del SDK de Python SageMaker . `CreateModelStep`seguirá funcionando en las versiones anteriores del SDK de SageMaker Python, pero ya no es compatible activamente.

En esta sección se muestra cómo crear un modelo de SageMaker IA a partir del resultado del paso de entrenamiento. Este modelo se utiliza para la transformación por lotes en un nuevo conjunto de datos. Este paso se transfiere al paso de condición y solo se ejecuta si el paso de condición se evalúa como `true`.

**Para definir una transformación CreateModelStep por lotes**

1.  Cree un modelo de SageMaker IA. Transfiera la propiedad `S3ModelArtifacts` desde el paso de entrenamiento `step_train`.

   ```
   from sagemaker.model import Model
   
   
   model = Model(
       image_uri=image_uri,
       model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Defina la entrada del modelo para su modelo de SageMaker IA.

   ```
   from sagemaker.inputs import CreateModelInput
   
   
   inputs = CreateModelInput(
       instance_type="ml.m5.large",
       accelerator_type="ml.eia1.medium",
   )
   ```

1. Cree la suya `CreateModelStep` con la `CreateModelInput` instancia del modelo de SageMaker IA que definió.

   ```
   from sagemaker.workflow.steps import CreateModelStep
   
   
   step_create_model = CreateModelStep(
       name="AbaloneCreateModel",
       model=model,
       inputs=inputs,
   )
   ```

#### Paso 7: Defina una transformación por lotes TransformStep para realizar
<a name="define-pipeline-transform"></a>

En esta sección se muestra cómo crear un `TransformStep` para realizar la transformación por lotes en un conjunto de datos después de entrenar el modelo. Este paso se transfiere al paso de condición y solo se ejecuta si el paso de condición se evalúa como `true`.

**Para definir una transformación por lotes TransformStep para realizar**

1. Cree una instancia de transformador con el tipo de instancia de cómputo, el recuento de instancias y el URI de bucket de Amazon S3 de salida adecuados. Transfiera la propiedad `ModelName` desde el paso `CreateModel` de `step_create_model`. 

   ```
   from sagemaker.transformer import Transformer
   
   
   transformer = Transformer(
       model_name=step_create_model.properties.ModelName,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=f"s3://{default_bucket}/AbaloneTransform"
   )
   ```

1. Cree un `TransformStep` con la instancia de transformador que definió y el parámetro de canalización `batch_data`.

   ```
   from sagemaker.inputs import TransformInput
   from sagemaker.workflow.steps import TransformStep
   
   
   step_transform = TransformStep(
       name="AbaloneTransform",
       transformer=transformer,
       inputs=TransformInput(data=batch_data)
   )
   ```

#### Paso 8: Defina un RegisterModel paso para crear un paquete modelo
<a name="define-pipeline-register"></a>

**importante**  
Recomendamos usarlo [Paso de modelo](build-and-manage-steps-types.md#step-type-model) para registrar modelos a partir de la versión 2.90.0 del SDK de Python SageMaker . `RegisterModel`seguirá funcionando en las versiones anteriores del SDK de SageMaker Python, pero ya no es compatible activamente.

En esta sección, se muestra cómo crear una instancia de `RegisterModel`. El resultado de la ejecución de `RegisterModel` en una canalización es un paquete de modelos. Un paquete de modelos es una abstracción de artefactos de modelos reutilizable que empaqueta todos los ingredientes necesarios para la inferencia. Consiste en una especificación de inferencia que define la imagen de inferencia que se va a utilizar junto con una ubicación opcional de las ponderaciones del modelo. Un grupo de paquetes de modelos es una colección de paquetes de modelos. Puede utilizar un `ModelPackageGroup` para Canalizaciones para añadir una nueva versión y un paquete de modelos al grupo por cada ejecución de canalización. Para obtener más información acerca del registro de modelos, consulte [Implementación del registro de modelos con el registro de modelos](model-registry.md).

Este paso se transfiere al paso de condición y solo se ejecuta si el paso de condición se evalúa como `true`.

**Para definir un RegisterModel paso para crear un paquete modelo**
+  Construya un paso `RegisterModel` con la instancia del estimador que utilizó para el paso de entrenamiento. Transfiera la propiedad `S3ModelArtifacts` desde el paso de entrenamiento `step_train` y especifique un `ModelPackageGroup`. Canalizaciones crea este `ModelPackageGroup` por usted.

  ```
  from sagemaker.model_metrics import MetricsSource, ModelMetrics 
  from sagemaker.workflow.step_collections import RegisterModel
  
  
  model_metrics = ModelMetrics(
      model_statistics=MetricsSource(
          s3_uri="{}/evaluation.json".format(
              step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
          ),
          content_type="application/json"
      )
  )
  step_register = RegisterModel(
      name="AbaloneRegisterModel",
      estimator=xgb_train,
      model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
      content_types=["text/csv"],
      response_types=["text/csv"],
      inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
      transform_instances=["ml.m5.xlarge"],
      model_package_group_name=model_package_group_name,
      approval_status=model_approval_status,
      model_metrics=model_metrics
  )
  ```

#### Paso 9: definición de un paso de condición para verificar la exactitud del modelo
<a name="define-pipeline-condition"></a>

Un `ConditionStep` permite a Canalizaciones respaldar la ejecución condicional en su DAG de canalización en función del estado de las propiedades de los pasos. En este caso, solo le interesa registrar un paquete de modelos si la exactitud de ese modelo supera el valor requerido. La exactitud del modelo viene determinada por el paso de evaluación del modelo. Si la precisión supera el valor requerido, la canalización también crea un modelo de SageMaker IA y ejecuta la transformación por lotes en un conjunto de datos. En esta sección se muestra cómo definir el paso de condición.

**Para definir un paso de condición para verificar la precisión del modelo**

1.  Defina una condición `ConditionLessThanOrEqualTo` con el valor de precisión que se encuentra en al salida del paso de procesamiento de la evaluación del modelo, `step_eval`. Obtenga este resultado utilizando el archivo de propiedades que indexó en el paso de procesamiento y el valor JSONPath de error cuadrático medio, respectivamente. `"mse"`

   ```
   from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
   from sagemaker.workflow.condition_step import ConditionStep
   from sagemaker.workflow.functions import JsonGet
   
   
   cond_lte = ConditionLessThanOrEqualTo(
       left=JsonGet(
           step_name=step_eval.name,
           property_file=evaluation_report,
           json_path="regression_metrics.mse.value"
       ),
       right=6.0
   )
   ```

1.  Construya un `ConditionStep`. Pase la condición `ConditionEquals` y, a continuación, establezca los pasos de registro del paquete de modelos y transformación por lotes como los siguientes pasos si se cumple la condición. 

   ```
   step_cond = ConditionStep(
       name="AbaloneMSECond",
       conditions=[cond_lte],
       if_steps=[step_register, step_create_model, step_transform],
       else_steps=[], 
   )
   ```

#### Paso 10: Crear una canalización
<a name="define-pipeline-pipeline"></a>

Ahora que ha creado todos los pasos, debe combinarlos en una canalización.

**Creación de una canalización**

1.  Defina lo siguiente para su canalización: `name`, `parameters` y `steps`. Los nombres deben ser únicos en un par `(account, region)`.
**nota**  
Un paso solo puede aparecer una vez en la lista de pasos de la canalización o en las listas de pasos if/else del paso de condición. No puede aparecer en ambas. 

   ```
   from sagemaker.workflow.pipeline import Pipeline
   
   
   pipeline_name = f"AbalonePipeline"
   pipeline = Pipeline(
       name=pipeline_name,
       parameters=[
           processing_instance_count,
           model_approval_status,
           input_data,
           batch_data,
       ],
       steps=[step_process, step_train, step_eval, step_cond],
   )
   ```

1.  De forma opcional, examine la definición de canalización de JSON para asegurarse de que esté bien formada.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

 Esta definición de canalización está lista para enviarse a SageMaker AI. En el siguiente tutorial, debes enviar esta canalización a SageMaker AI e iniciar una ejecución. 

## Definición de una canalización (JSON)
<a name="collapsible-section-1"></a>

También puede usar [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_pipeline) o [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html) para crear una canalización. La creación de una canalización requiere una definición de canalización, que es un objeto JSON que define cada paso de la canalización. El SageMaker SDK ofrece una forma sencilla de crear la definición de canalización, que puedes usar con cualquiera de las opciones mencionadas APIs anteriormente para crear la canalización propiamente dicha. Sin usar el SDK, los usuarios tienen que escribir la definición de JSON sin procesar para crear la canalización sin ninguna de las comprobaciones de errores que proporciona el SDK de SageMaker Python. Para ver el esquema de la definición de JSON de la canalización, consulta el [esquema JSON de SageMaker AI Pipeline Definition](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). En el siguiente ejemplo de código, se muestra un ejemplo de un objeto JSON de definición de canalización de SageMaker IA:

```
{'Version': '2020-12-01',
 'Metadata': {},
 'Parameters': [{'Name': 'ProcessingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1},
  {'Name': 'TrainingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ModelApprovalStatus',
   'Type': 'String',
   'DefaultValue': 'PendingManualApproval'},
  {'Name': 'ProcessedData',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
{'Name': 'InputDataUrl',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},
  'TrialName': {'Get': 'Execution.PipelineExecutionId'}},
 'Steps': [{'Name': 'ReadTrainDataFromFS',
   'Type': 'Processing',
   'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge',
      'InstanceCount': 2,
      'VolumeSizeInGB': 30}},
    'AppSpecification': {'ImageUri': 'IMAGE_URI',
     'ContainerArguments': [....]},
    'RoleArn': 'ROLE',
      'ProcessingInputs': [...],
    'ProcessingOutputConfig': {'Outputs': [.....]},
    'StoppingCondition': {'MaxRuntimeInSeconds': 86400}},
   'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}},
   ...
   ...
   ...
  }
```

 **Siguiente paso:** [Ejecución de una canalización](run-pipeline.md) 

# Editar una canalización
<a name="edit-pipeline-before-execution"></a>

Para realizar cambios en una canalización antes de ejecutarla, haga lo siguiente:

1. Abre SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo de Studio, seleccione **Canalizaciones**.

1. Seleccione un nombre de canalización para ver los detalles de la canalización.

1. Seleccione la pestaña **Ejecuciones**.

1. Seleccione el nombre de la ejecución de una canalización.

1. Seleccione **Editar** para abrir el Diseñador de canalizaciones.

1. Actualice los bordes entre los pasos o la configuración de los pasos según sea necesario y haga clic en **Guardar**. 

   Al guardar una canalización después de editarla, se genera automáticamente un nuevo número de versión.

1. Seleccione **Ejecutar**.

# Ejecución de una canalización
<a name="run-pipeline"></a>

Tras definir los pasos de la canalización como un gráfico acíclico dirigido (DAG), puede ejecutar la canalización, que realiza los pasos definidos en el DAG. En los siguientes tutoriales, se muestra cómo ejecutar una canalización de Amazon SageMaker AI mediante el editor drag-and-drop visual de Amazon SageMaker Studio o el SDK de Amazon SageMaker Python.

## Ejecución de una canalización (diseñador de canalizaciones)
<a name="run-pipeline-designer"></a>

Para iniciar una nueva ejecución de la canalización, haga lo siguiente:

------
#### [ Studio ]

1. Abre SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización para abrir la vista de detalles de la canalización.

1. Seleccione **Editor visual** en la parte superior derecha.

1. Para iniciar una ejecución desde la última versión, seleccione **Ejecuciones**.

1. Para iniciar una ejecución desde una versión específica, siga estos pasos:
   + Seleccione el icono de la versión en la barra de herramientas inferior para abrir el panel de versiones.
   + Elija la versión de canalización que desea ejecutar.
   + Coloque el cursor sobre el elemento de la versión para ver el menú de tres puntos y seleccione **Ejecutar**.
   + (Opcional) Para ver una versión previa de la canalización, seleccione **Vista previa** en el menú de tres puntos del panel de versiones. También puede editar la versión seleccionando **Editar** en la barra de notificaciones.

**nota**  
Si la canalización produce un error, el banner de estado mostrará el estado **Error**. Tras solucionar el error del paso, elija **Reintentar** en el banner de estado para reanudar la ejecución de la canalización a partir de ese paso.

------
#### [ Studio Classic ]

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de Studio Classic, seleccione el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Canalizaciones** en el menú.

1. Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización.

1. En la pestaña **Ejecuciones** o **Gráfico** de la lista de ejecuciones, elija **Crear ejecución**.

1. Ingrese o actualice la siguiente información obligatoria:
   + **Name**: el nombre debe ser único para su cuenta en la región de AWS .
   + **ProcessingInstanceCount**— El número de instancias que se van a utilizar para el procesamiento.
   + **ModelApprovalStatus**— Para su comodidad.
   + **InputDataUrl**— El URI de Amazon S3 de los datos de entrada.

1. Elija **Iniciar**.

Una vez que la canalización esté en ejecución, puede ver los detalles de la ejecución seleccionando **Ver detalles** en el banner de estado.

Para detener la ejecución, elija **Detener** en el banner de estado. Para reanudar la ejecución desde donde se detuvo, elija **Reanudar** en el banner de estado.

**nota**  
Si la canalización produce un error, el banner de estado mostrará el estado **Error**. Tras solucionar el error del paso, elija **Reintentar** en el banner de estado para reanudar la ejecución de la canalización a partir de ese paso.

------

## Ejecutar una canalización (SDK de SageMaker Python)
<a name="run-pipeline-sdk"></a>

Una vez que hayas creado una definición de canalización con el SDK de Python para SageMaker IA, puedes enviarla a SageMaker AI para iniciar la ejecución. El siguiente tutorial muestra cómo enviar una canalización, iniciar una ejecución, examinar los resultados de esa ejecución y eliminar la canalización. 

**Topics**
+ [Requisitos previos](#run-pipeline-prereq)
+ [Paso 1: Iniciar la canalización](#run-pipeline-submit)
+ [Paso 2: Examinar la ejecución de una canalización](#run-pipeline-examine)
+ [Paso 3: Anular los parámetros predeterminados para la ejecución de una canalización](#run-pipeline-parametrized)
+ [Paso 4: Detener y eliminar la ejecución de una canalización](#run-pipeline-delete)

### Requisitos previos
<a name="run-pipeline-prereq"></a>

Este tutorial requiere lo siguiente: 
+  Una instancia de SageMaker bloc de notas.  
+  Una definición de canalización de Canalizaciones. En este tutorial se supone que utilizará la definición de canalización creada al completar el tutorial [Definición de una canalización](define-pipeline.md). 

### Paso 1: Iniciar la canalización
<a name="run-pipeline-submit"></a>

En primer lugar, es preciso iniciar la canalización. 

**Para iniciar la canalización**

1. Examine la definición de canalización de JSON para asegurarse de que esté bien formada.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

1. Envíe la definición de canalización al servicio de Canalizaciones para crear una canalización si no existe, o actualice la canalización si existe. Canalizaciones utiliza el rol que se pasa para crear todos los trabajos definidos en los pasos. 

   ```
   pipeline.upsert(role_arn=role)
   ```

1. Inicie la ejecución de la canalización.

   ```
   execution = pipeline.start()
   ```

### Paso 2: Examinar la ejecución de una canalización
<a name="run-pipeline-examine"></a>

A continuación, debe examinar la ejecución de la canalización. 

**Para examinar la ejecución de una canalización**

1.  Describa el estado de ejecución de la canalización para asegurarse de que se ha creado e iniciado correctamente.

   ```
   execution.describe()
   ```

1. Espere a que finalice la ejecución. 

   ```
   execution.wait()
   ```

1. Enumere los pasos de ejecución y su estado.

   ```
   execution.list_steps()
   ```

   El resultado debería tener el siguiente aspecto:

   ```
   [{'StepName': 'AbaloneTransform',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}},
    {'StepName': 'AbaloneRegisterModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}},
    {'StepName': 'AbaloneCreateModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}},
    {'StepName': 'AbaloneMSECond',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Condition': {'Outcome': 'True'}}},
    {'StepName': 'AbaloneEval',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}},
    {'StepName': 'AbaloneTrain',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}},
    {'StepName': 'AbaloneProcess',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
   ```

1. Una vez finalizada la ejecución de la canalización, descargue el archivo `evaluation.json` resultante de Amazon S3 para examinar el informe. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Paso 3: Anular los parámetros predeterminados para la ejecución de una canalización
<a name="run-pipeline-parametrized"></a>

Puede ejecutar más ejecuciones de la canalización si especifica distintos parámetros de canalización para anular los valores predeterminados.

**Para anular los parámetros predeterminados**

1. Cree la ejecución de la canalización. Esto inicia otra ejecución de la canalización con la anulación del estado de aprobación del modelo establecida en “Aprobado”. Esto significa que la versión del paquete modelo generada por el `RegisterModel` paso está lista automáticamente para su despliegue a través de CI/CD procesos, como en el caso de los SageMaker proyectos. Para obtener más información, consulte [MLOps Automatización con SageMaker proyectos](sagemaker-projects.md).

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. Espere a que finalice la ejecución. 

   ```
   execution.wait()
   ```

1. Enumere los pasos de ejecución y su estado.

   ```
   execution.list_steps()
   ```

1. Una vez finalizada la ejecución de la canalización, descargue el archivo `evaluation.json` resultante de Amazon S3 para examinar el informe. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Paso 4: Detener y eliminar la ejecución de una canalización
<a name="run-pipeline-delete"></a>

Cuando termine con la canalización, puede detener cualquier ejecución en curso y eliminar la canalización.

**Para detener y eliminar la ejecución de una canalización**

1. Detenga la ejecución de la canalización.

   ```
   execution.stop()
   ```

1. Elimine la canalización.

   ```
   pipeline.delete()
   ```

# Detención de una canalización
<a name="pipelines-studio-stop"></a>

Puedes detener la ejecución de una canalización en la consola de Amazon SageMaker Studio.

Para detener la ejecución de una canalización en la consola de Amazon SageMaker Studio, complete los siguientes pasos en función de si utiliza Studio o Studio Classic.

------
#### [ Studio ]

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización.

1. Seleccione la pestaña **Ejecuciones**.

1. Seleccione la ejecución que desee detener.

1. Elija **Detener**. Para reanudar la ejecución desde donde se detuvo, elija **Reanudar**.

------
#### [ Studio Classic ]

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de Studio Classic, seleccione el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Canalizaciones** en el menú.

1. Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Para detener la ejecución de una canalización, seleccione **Ver detalles** en el banner de estado de la canalización y, a continuación, seleccione **Detener**. Para reanudar la ejecución desde donde se detuvo, elija **Reanudar**.

------

# Visualización de los detalles de una canalización
<a name="pipelines-studio-list"></a>

Puedes ver los detalles de una canalización de SageMaker IA para entender sus parámetros y las dependencias de sus pasos, o monitorizar su progreso y estado. Esto puede ayudarle a solucionar problemas u optimizar su flujo de trabajo. Puede acceder a los detalles de una canalización determinada mediante la consola de Amazon SageMaker Studio y explorar su historial de ejecución, definición, parámetros y metadatos.

Como alternativa, si tu canalización está asociada a un proyecto de SageMaker IA, puedes acceder a los detalles de la canalización desde la página de detalles del proyecto. Para obtener más información, consulte [Ver los recursos del proyecto](sagemaker-projects-resources.md).

Para ver los detalles de una canalización de SageMaker IA, completa los siguientes pasos en función de si utilizas Studio o Studio Classic.

**nota**  
El reempaquetado del modelo se produce cuando la canalización necesita incluir un script personalizado en el archivo de modelo comprimido (model.tar.gz) para cargarlo en Amazon S3 y usarlo para implementar un modelo en un punto final de SageMaker IA. Cuando SageMaker AI Pipeline entrena un modelo y lo registra en el registro de modelos, introduce un paso de reempaquetado *si* el resultado del trabajo de entrenamiento del modelo entrenado necesita incluir un script de inferencia personalizado. El paso de reempaquetado descomprime el modelo, agrega un script nuevo y vuelve a comprimir el modelo. Al ejecutar la canalización, se agrega el paso de reempaquetado como un trabajo de entrenamiento.

------
#### [ Studio ]

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización para ver los detalles de la canalización.

1. Elija una de las siguientes pestañas para ver los detalles de la canalización:
   + **Ejecuciones**: detalles sobre las ejecuciones.
   + **Gráfico**: el gráfico de la canalización, que incluye todos los pasos.
   + **Parámetros**: los parámetros de ejecución y las métricas relacionados con la canalización.
   + **Información**: los metadatos asociados a la canalización, como las etiquetas, el nombre de recurso de Amazon (ARN) de la canalización y el ARN del rol. También puede editar la descripción de la canalización desde esta página.

------
#### [ Studio Classic ]

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de Studio Classic, seleccione el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Canalizaciones** en el menú.

1. Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización para ver los detalles de la canalización. Se abre la pestaña de detalles de la canalización y muestra una lista de las ejecuciones de la canalización. Puede iniciar una ejecución o elegir una de las otras pestañas para obtener más información sobre la canalización. Utilice el icono del **Inspector de propiedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/gears.png)) para elegir qué columnas mostrar.

1. En la página de detalles de la canalización, seleccione una de las siguientes pestañas para ver los detalles de la canalización:
   + **Ejecuciones**: detalles sobre las ejecuciones. Puede crear una ejecución desde esta pestaña o desde la pestaña **Gráfico**.
   + **Gráfico**: el DAG de la canalización.
   + **Parámetros**: incluye el estado de aprobación del modelo.
   + **Configuración**: los metadatos asociados a la canalización. Puede descargar el archivo de definición de la canalización y editar el nombre y la descripción de la canalización desde esta pestaña.

------

# Visualización de los detalles de la ejecución de una canalización
<a name="pipelines-studio-view-execution"></a>

Puede revisar los detalles de una determinada ejecución de un proceso de SageMaker IA. Esto le puede ayudar a:
+ Identificar y resolver los problemas que puedan haberse producido durante la ejecución, como errores en los pasos o errores inesperados.
+ Comparar los resultados de las distintas ejecuciones de la canalización para saber cómo afectan los cambios en los datos o parámetros de entrada al flujo de trabajo general.
+ Identificar los cuellos de botella y las oportunidades de optimización.

Para ver los detalles de la ejecución de una canalización, realice los siguientes pasos en función de si utiliza Studio o Studio Classic.

------
#### [ Studio ]

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización para ver los detalles de la canalización.

1. Seleccione la pestaña **Ejecuciones**.

1. Seleccione el nombre de la ejecución de una canalización que desee ver. Aparece el gráfico de canalización de esa ejecución.

1. Elija cualquiera de los pasos de la canalización en el gráfico para ver la configuración de los pasos en la barra lateral derecha.

1. Elija una de las siguientes pestañas para ver más detalles de la canalización:
   + **Definición**: el gráfico de la canalización, que incluye todos los pasos.
   + **Parámetros**: incluye el estado de aprobación del modelo.
   + **Detalles**: los metadatos asociados a la canalización, como las etiquetas, el nombre de recurso de Amazon (ARN) de la canalización y el ARN del rol. También puede editar la descripción de la canalización desde esta página.

------
#### [ Studio Classic ]

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de Studio Classic, seleccione el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Canalizaciones** en el menú.

1. Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización. Se abre la página **Ejecuciones** de la canalización.

1. En la página **Ejecuciones**, seleccione el nombre de una ejecución para ver los detalles de la ejecución. Se abre la pestaña de detalles de la ejecución y muestra un gráfico de pasos de la canalización.

1. Para buscar un paso por nombre, escriba los caracteres correspondientes al nombre de un paso en el campo de búsqueda. Utilice los iconos de cambio de tamaño situados en la parte inferior derecha del gráfico para acercar y alejar el gráfico, ajustarlo a la pantalla y verlo a pantalla completa. Para centrarse en una parte específica del gráfico, puede seleccionar un área en blanco del gráfico y arrastrarlo para centrarlo en esa área.   
![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/yosemite/execution-graph-w-input.png)

1. Elija uno de los pasos de la canalización para ver los detalles del paso. En la captura de pantalla anterior, se elige un paso de entrenamiento y se muestran las siguientes pestañas:
   + **Entrada**: las entradas de entrenamiento. Si un origen de entrada proviene de Amazon Simple Storage Service (Amazon S3), elija el enlace para ver el archivo en la consola de Amazon S3.
   + **Salida**: las salidas del entrenamiento, como las métricas, los gráficos, los archivos y el resultado de la evaluación. Los gráficos se producen con el [Tracker](https://sagemaker-experiments.readthedocs.io/en/latest/tracker.html#smexperiments.tracker.Tracker.log_precision_recall) APIs.
   + **Registros**: los CloudWatch registros de Amazon producidos por el paso.
   + **Información**: los parámetros y metadatos asociados al paso.  
![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/yosemite/execution-graph-info.png)

------

# Descarga de un archivo de definición de canalización
<a name="pipelines-studio-download"></a>

Puedes descargar el archivo de definición de tu canalización de SageMaker IA directamente desde la interfaz de usuario de Amazon SageMaker Studio. Puede utilizar este archivo de definición de canalización para:
+ Realizar copias de seguridad y restaurar: utilice el archivo descargado para crear una copia de seguridad de la configuración de la canalización, que podrá restaurar en caso de que se produzcan fallos en la infraestructura o cambios accidentales.
+ Control de versiones: guarde el archivo de definición de la canalización en un sistema de control del origen para realizar un seguimiento de los cambios en la canalización y volver a las versiones anteriores si es necesario.
+ Interacciones programáticas: utilice el archivo de definición de la canalización como entrada al SageMaker SDK o AWS CLI.
+ Integración con los procesos de automatización: integre la definición de la canalización en sus CI/CD flujos de trabajo u otros procesos de automatización.

Para descargar el archivo de definición de una canalización, realice los siguientes pasos en función de si utiliza Studio o Studio Classic.

------
#### [ Studio ]

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización. Se abre la página **Ejecuciones** y muestra una lista de las ejecuciones de canalizaciones.

1. Permanezca en la página **Ejecuciones** o seleccione la página **Gráficos**, **Información** o **Parámetros** a la izquierda de la tabla de ejecuciones de canalizaciones. Puede descargar la definición de la canalización desde cualquiera de estas páginas.

1. En la parte superior derecha de la página, elija los puntos suspensivos verticales y **Descargar definición de canalización (JSON)**.

------
#### [ Studio Classic ]

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de Studio Classic, seleccione el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Canalizaciones** en el menú.

1. Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. Seleccione un nombre de canalización.

1. Elija la pestaña **Settings**.

1. Seleccione **Descargar archivo de definición de canalización**.

------

# Acceso a los datos del experimento desde una canalización
<a name="pipelines-studio-experiments"></a>

**nota**  
SageMaker Los experimentos son una función que se proporciona únicamente en Studio Classic.

Al crear una canalización y especificar [pipeline\$1experiment\$1config](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.pipeline_experiment_config), Pipelines crea las siguientes entidades de SageMaker Experiments de forma predeterminada si no existen:
+ Un experimento para la canalización
+ Un grupo de ejecución para cada ejecución de la canalización
+ Una ejecución para cada trabajo de SageMaker IA creado en un paso de la canalización

Para obtener más información sobre cómo se integran los experimentos con las canalizaciones, consulte [Integración de Amazon SageMaker Experiments](pipelines-experiments.md). Para obtener más información sobre SageMaker los experimentos, consulte[Amazon SageMaker Experiments en Studio Classic](experiments.md).

Puede acceder a la lista de ejecuciones asociadas a una canalización desde la lista de ejecuciones de la canalización o desde la lista de experimentos.

**Para ver la lista de ejecuciones desde la lista de ejecuciones de la canalización**

1. Para ver la lista de ejecuciones de la canalización, siga los cinco primeros pasos en la pestaña *Studio Classic* de [Visualización de los detalles de una canalización](pipelines-studio-list.md).

1. En la parte superior derecha de la pantalla, elija el icono del **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)).

1. Seleccione **Experimento**. Si la integración del experimento no estaba desactivada cuando se creó la canalización, se muestra el nombre del experimento en la lista de ejecuciones. 
**nota**  
La integración de los experimentos se introdujo en la versión 2.41.0 del SDK de Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable). Las canalizaciones creadas con una versión anterior del SDK no se integran con los experimentos de forma predeterminada.

1. Seleccione el experimento que prefiera para ver los grupos de ejecuciones y las ejecuciones relacionadas con ese experimento.

**Para ver la lista de ejecuciones de la lista de experimentos**

1. En la barra lateral de la izquierda de Studio Classic, elija el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleccione **Experimentos** en el menú.

1. Utilice la barra de búsqueda o el icono del **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)) para filtrar la lista de experimentos creados por una canalización.

1. Abra el nombre de un experimento y consulte una lista de las ejecuciones creadas por la canalización.

# Seguimiento del linaje de una canalización
<a name="pipelines-lineage-tracking"></a>

En este tutorial, utilizará Amazon SageMaker Studio para realizar un seguimiento del linaje de una canalización de aprendizaje automático de Amazon SageMaker AI.

La canalización se creó con el cuaderno [Orchestrating Jobs with Amazon SageMaker Model Building Pipelines](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) en el repositorio de [ SageMaker ejemplos GitHub de Amazon](https://github.com/awslabs/amazon-sagemaker-examples). Para obtener información detallada sobre cómo se creó la canalización, consulte [Definición de una canalización](define-pipeline.md).

El seguimiento del linaje de Studio se centra en torno a un gráfico acíclico dirigido (DAG). El DAG representa los pasos de la canalización. Desde el DAG, es posible realizar un seguimiento del linaje desde cualquier paso hasta cualquier otro paso. En el siguiente diagrama se muestran los pasos de la canalización. Estos pasos aparecen como un DAG en Studio.

![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-steps.png)


Para realizar un seguimiento del linaje de una canalización en la consola de Amazon SageMaker Studio, complete los siguientes pasos en función de si utiliza Studio o Studio Classic.

------
#### [ Studio ]

**Para hacer el seguimiento del linaje de una canalización**

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, seleccione **Canalizaciones**.

1. (Opcional) Para filtrar la lista de canalizaciones por nombre, escriba un nombre de canalización total o parcial en el campo de búsqueda.

1. En la columna **Nombre**, seleccione un nombre de canalización para ver los detalles de la canalización.

1. Seleccione la pestaña **Ejecuciones**.

1. En la columna **Nombre** de la tabla **Ejecuciones**, seleccione el nombre de la ejecución de una canalización que desee ver.

1. En la parte superior derecha de la página **Ejecuciones**, seleccione los puntos suspensivos verticales y **Descargar definición de canalización (JSON)**. Puede ver el archivo para ver cómo se definió el gráfico de la canalización. 

1. Seleccione **Editar** para abrir el Diseñador de canalizaciones.

1. Utilice los controles de cambio de tamaño y zoom de la esquina superior derecha del lienzo para acercar y alejar el gráfico, ajustarlo a la pantalla o verlo a pantalla completa.

1. Para ver los conjuntos de datos de entrenamiento, validación y prueba, siga estos pasos:

   1. Elija el paso de procesamiento en el gráfico de la canalización.

   1. En la barra lateral derecha, seleccione la pestaña **Información general**.

   1. En la sección **Archivos**, busque las rutas de Amazon S3 a los conjuntos de datos de entrenamiento, validación y prueba.

1. Para ver los artefactos del modelo, siga estos pasos:

   1. Elija el paso de entrenamiento en el gráfico de la canalización.

   1. En la barra lateral derecha, seleccione la pestaña **Información general**.

   1. En la sección **Archivos**, busque las rutas de Amazon S3 al artefacto del modelo.

1. Para encontrar el ARN del paquete del modelo, siga los pasos que se indican a continuación:

   1. Elija el paso Registrar modelo.

   1. En la barra lateral derecha, seleccione la pestaña **Información general**.

   1. En la sección **Archivos**, busque el ARN del paquete del modelo.

------
#### [ Studio Classic ]

**Para hacer el seguimiento del linaje de una canalización**

1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte [Lanzamiento de Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. En la barra lateral de la izquierda de Studio, elija el icono de **Inicio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/house.png)).

1. En el menú, seleccione **Canalizaciones**.

1. Puede utilizar el cuadro **Búsqueda** para filtrar la lista de canalizaciones.

1. Elija la canalización `AbalonePipeline` para ver la lista de ejecuciones y otros detalles sobre la canalización.

1. Elija el icono del **Inspector de propiedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/gears.png)) en la barra lateral derecha para abrir el panel **PROPIEDADES DE LA TABLA**, donde puede elegir qué propiedades desea ver.

1. Elija la pestaña **Configuración** y, a continuación, elija **Descargar el archivo de definición de la canalización**. Puede ver el archivo para ver cómo se definió el gráfico de la canalización.

1. En la pestaña **Ejecución**, seleccione la primera fila de la lista de ejecuciones para ver su gráfico de ejecución y otros detalles sobre la ejecución. Tenga en cuenta que el gráfico coincide con el diagrama que se muestra al principio del tutorial.

   Utilice los iconos de cambio de tamaño situados en la parte inferior derecha del gráfico para acercar y alejar el gráfico, ajustarlo a la pantalla o verlo a pantalla completa. Para centrarse en una parte específica del gráfico, puede seleccionar un área en blanco del gráfico y arrastrarlo para centrarlo en esa área. El recuadro de la parte inferior derecha del gráfico muestra el lugar donde se encuentra en el gráfico.  
![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-execution-graph.png)

1. En la pestaña **Gráfico**, elija el paso `AbaloneProcess` para ver los detalles del paso.

1. Busque las rutas de Amazon S3 a los conjuntos de datos de entrenamiento, validación y prueba en la pestaña **Salida**, en **Archivos**.
**nota**  
Para obtener las rutas completas, haga clic con el botón derecho en la ruta y, a continuación, elija **Copiar el contenido de la celda**.

   ```
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/train
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/validation
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/test
   ```

1. Elija el paso `AbaloneTrain`.

1. Busque la ruta de Amazon S3 al artefacto del modelo en la pestaña **Salida**, en **Archivos**:

   ```
   s3://sagemaker-eu-west-1-acct-id/AbaloneTrain/pipelines-6locnsqz4bfu-AbaloneTrain-NtfEpI0Ahu/output/model.tar.gz
   ```

1. Elija el paso `AbaloneRegisterModel`.

1. Busque el ARN del paquete de modelos en la pestaña **Salida**, en **Archivos**:

   ```
   arn:aws:sagemaker:eu-west-1:acct-id:model-package/abalonemodelpackagegroupname/2
   ```

------

# Orquestación de Kubernetes
<a name="kubernetes-workflows"></a>

Puede organizar sus trabajos de SageMaker formación e inferencia con operadores de IA para Kubernetes y componentes de SageMaker IA para Kubeflow Pipelines. SageMaker SageMaker Los operadores de IA para Kubernetes facilitan a los desarrolladores y científicos de datos el uso de Kubernetes para entrenar, ajustar e implementar modelos de aprendizaje automático (ML) en IA. SageMaker SageMaker Los componentes de IA para Kubeflow Pipelines te permiten trasladar tus tareas de procesamiento de datos y formación del clúster de Kubernetes al servicio gestionado optimizado para el aprendizaje automático de IA. SageMaker 

**Topics**
+ [SageMaker Operadores de IA para Kubernetes](kubernetes-sagemaker-operators.md)
+ [SageMaker Componentes de IA para tuberías de Kubeflow](kubernetes-sagemaker-components-for-kubeflow-pipelines.md)

# SageMaker Operadores de IA para Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker Los operadores de IA para Kubernetes facilitan a los desarrolladores y científicos de datos que utilizan Kubernetes la formación, el ajuste y la implementación de modelos de aprendizaje automático (ML) en la IA. SageMaker Puede instalar estos operadores de SageMaker IA en su clúster de Kubernetes en Amazon Elastic Kubernetes Service (Amazon EKS SageMaker ) para crear trabajos de IA de forma nativa mediante la API de Kubernetes y las herramientas de Kubernetes de línea de comandos, como. `kubectl` Esta guía muestra cómo configurar y usar los operadores para ejecutar el entrenamiento de modelos, el ajuste de hiperparámetros o la inferencia (en tiempo real y por lotes) sobre la IA desde un clúster de Kubernetes. SageMaker Los procedimientos y directrices de este capítulo dan por sentado que está familiarizado con Kubernetes y sus comandos básicos.

**importante**  
[Vamos a detener el desarrollo y el soporte técnico de la versión original de Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)  
Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)  
Para obtener información sobre los pasos de migración, consulte [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md).  
Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**nota**  
El uso de estos operadores no supone ningún cargo adicional. Se le cobrará por cualquier recurso de SageMaker IA que utilice a través de estos operadores.

## ¿Qué es un operador?
<a name="kubernetes-sagemaker-operators-overview"></a>

Un operador de Kubernetes es un controlador de aplicaciones que administra las aplicaciones en nombre de un usuario de Kubernetes. Los controladores del plano de control incluyen varios bucles de control que escuchan a un administrador de estado central (ETCD) para regular el estado de la aplicación que controlan. Algunos ejemplos de estas aplicaciones incluyen la [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) y`[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)`. Los operadores suelen proporcionar una abstracción de mayor nivel que la API de Kubernetes sin procesar, lo que facilita a los usuarios la implementación y la administración de las aplicaciones. Para agregar nuevas capacidades a Kubernetes, los desarrolladores pueden ampliar la API de Kubernetes mediante la creación de un recurso **personalizado** que contenga la lógica y los componentes específicos de la aplicación o del dominio. Los operadores de Kubernetes permiten a los usuarios invocar estos recursos personalizados de forma nativa y automatizar los flujos de trabajo asociados.

### ¿Cómo funciona AWS Controllers for Kubernetes (ACK)?
<a name="kubernetes-sagemaker-operators-explained"></a>

Los operadores de SageMaker IA para Kubernetes le permiten gestionar los trabajos en SageMaker IA desde su clúster de Kubernetes. La última versión de SageMaker AI Operators for Kubernetes se basa en Controllers for Kubernetes (ACK). AWS ACK incluye un controlador de tiempo de ejecución común, un generador de código y un conjunto de controladores AWS específicos para cada servicio, uno de los cuales es el controlador AI. SageMaker 

El siguiente diagrama ilustra cómo funciona ACK.

![\[Explicación del operador de SageMaker IA basado en ACK para Kubernetes.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


En este diagrama, un usuario de Kubernetes quiere realizar un entrenamiento modelo sobre SageMaker IA desde el clúster de Kubernetes mediante la API de Kubernetes. El usuario hace una llamada a y le envía un archivo que describe un `kubectl apply` recurso personalizado de Kubernetes que describe el trabajo de formación. SageMaker `kubectl apply`*pasa este archivo, denominado manifiesto, al servidor de la API de Kubernetes que se ejecuta en el nodo del controlador de Kubernetes (paso 1 del diagrama de flujo de trabajo).* *El servidor de la API de Kubernetes recibe el manifiesto con la especificación del trabajo de SageMaker formación y determina si el usuario tiene permisos para crear un tipo de recurso personalizado y si el recurso personalizado tiene el `sageMaker.services.k8s.aws/TrainingJob` formato correcto (paso 2).* Si el usuario está autorizado y el recurso personalizado es válido, el servidor de API de Kubernetes escribe (paso *3*) el recurso personalizado en su almacén de datos etcd y, a continuación, responde (paso *4*) al usuario diciéndole que se ha creado el recurso personalizado. El controlador de SageMaker IA, que se ejecuta en un nodo de trabajo de Kubernetes en el contexto de un pod de Kubernetes normal, recibe una notificación (paso *5*) de que se ha creado un nuevo recurso personalizado de este tipo. `sageMaker.services.k8s.aws/TrainingJob` A continuación, el controlador de SageMaker IA se comunica (paso *6*) con la SageMaker API y llama a la API de SageMaker IA para crear el trabajo de `CreateTrainingJob` formación. AWS Tras comunicarse con la SageMaker API, el controlador de SageMaker IA llama al servidor de la API de Kubernetes para actualizar (paso *7*) el estado del recurso personalizado con la información que ha recibido de la IA. SageMaker Por lo tanto, el controlador de SageMaker IA proporciona a los desarrolladores la misma información que la que habrían recibido con el SDK. AWS 

### Información general de los permisos
<a name="kubernetes-sagemaker-operators-authentication"></a>

Los operadores acceden a los recursos de SageMaker IA en tu nombre. La función de IAM que asume el operador para interactuar con AWS los recursos difiere de las credenciales que se utilizan para acceder al clúster de Kubernetes. La función también difiere de la que se AWS asume al ejecutar las tareas de aprendizaje automático. 

La siguiente imagen explica las distintas capas de autenticación.

![\[SageMaker AI Operator para Kubernetes: varios niveles de autenticación.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)


# Los últimos operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-ack"></a>

Esta sección se basa en la última versión de SageMaker AI Operators for Kubernetes que utilizan Controllers for Kubernetes (ACK). AWS 

**importante**  
Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)  
Para obtener información sobre los pasos de migración, consulte [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md).  
Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

La última versión de [SageMaker AI Operators for Kubernetes se basa en AWS Controllers for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) [(ACK), un marco para crear controladores personalizados de Kubernetes](https://aws-controllers-k8s.github.io/community/ ) en los que cada controlador se comunica con una API de servicio. AWS Estos controladores permiten a los usuarios de Kubernetes aprovisionar recursos de AWS , como bases de datos o colas de mensajes, mediante la API de Kubernetes.

Siga los siguientes pasos para instalar y usar ACK para entrenar, ajustar e implementar modelos de aprendizaje automático con Amazon SageMaker AI.

**Topics**
+ [Instale operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-ack-install)
+ [Usa operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-ack-use)
+ [Referencia](#kubernetes-sagemaker-operators-ack-reference)

## Instale operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-ack-install"></a>

Para configurar la última versión disponible de SageMaker AI Operators for Kubernetes, consulta la sección *Configuración* de [Machine Learning with the ACK SageMaker ](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) AI Controller.

## Usa operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-ack-use"></a>

Para ver un tutorial sobre cómo entrenar un modelo de aprendizaje automático con el controlador de servicio ACK para Amazon SageMaker AI mediante Amazon EKS, consulte [Machine Learning with the ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

Para ver un ejemplo de escalado automático, consulte [Escalar cargas de trabajo de SageMaker IA con Application](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) Auto Scaling

## Referencia
<a name="kubernetes-sagemaker-operators-ack-reference"></a>

Consulte también el [ GitHub repositorio del controlador de servicio ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) o lea la documentación de [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/). 

# Antiguos operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Esta sección se basa en la versión original de [SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) para Kubernetes.

**importante**  
Vamos a detener el desarrollo y el soporte técnico de la versión original de [ SageMaker Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) for Kubernetes.  
Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)  
Para obtener información sobre los pasos de migración, consulte [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md).  
Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Instale operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Utilice Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md)
+ [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Instale operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Siga los siguientes pasos para instalar y usar SageMaker AI Operators for Kubernetes para entrenar, ajustar e implementar modelos de aprendizaje automático con Amazon AI. SageMaker 

**Topics**
+ [Configuración basada en roles de IAM e implementación de operadores](#iam-role-based-setup-and-operator-deployment)
+ [Eliminar recursos](#cleanup-operator-resources)
+ [Eliminación de operadores](#delete-operators)
+ [Resolución de problemas](#troubleshooting)
+ [Imágenes y SMlogs en cada región](#images-and-smlogs-in-each-region)

### Configuración basada en roles de IAM e implementación de operadores
<a name="iam-role-based-setup-and-operator-deployment"></a>

En las siguientes secciones se describen los pasos para configurar e implementar la versión original del operador.

**aviso**  
**Recordatorio:** Los siguientes pasos no permiten instalar la versión más reciente de SageMaker AI Operators for Kubernetes. Para instalar los nuevos operadores de SageMaker IA basados en ACK para Kubernetes, consulte. [Los últimos operadores de SageMaker IA para Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Requisitos previos
<a name="prerequisites"></a>

En esta guía se supone que se han completado los siguientes requisitos previos: 
+ Ha instalado las siguientes herramientas en el equipo cliente utilizado para acceder al clúster de Kubernetes: 
  + Versión 1.13 o posterior de [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html). Use una versión de `kubectl` con una diferencia de versión de menos de un número que el plano de control del clúster de Amazon EKS. Por ejemplo, un cliente de `kubectl` 1.13 debe funcionar con los clústeres 1.13 y 1.14 de Kubernetes. Las versiones anteriores a la 1.13 no son compatibles con OpenID Connect (OIDC). 
  + Versión 0.7.0 o posterior de [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl). 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) versión 1.16.232 o posterior 
  + Versión 3.0 o posterior de [Helm](https://helm.sh/docs/intro/install/) (opcional). 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Tiene permisos para crear un rol de IAM y asociar políticas a los roles.
+ Ha creado un clúster de Kubernetes en el que ejecutar los operadores. Debe ser la versión 1.13 o 1.14 de Kubernetes. Para la creación automática de clústeres mediante `eksctl`, consulte [Introducción a eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). La provisión del clúster puede tardar de 20 a 30 minutos. 

#### Implementación basada en clústeres
<a name="cluster-scoped-deployment"></a>

Antes de poder implementar su operador mediante un rol de IAM, asocie un proveedor de identidades (IdP) de OpenID Connect (OIDC) a su rol para autenticarse en el servicio de IAM.

##### Creación de un proveedor de OIDC para su clúster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Las siguientes instrucciones muestran cómo crear y asociar un proveedor de OIDC a su clúster de Amazon EKS.

1. Establezca las variables local, `CLUSTER_NAME`, y de entorno, `AWS_REGION`, de la siguiente manera:

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilice el siguiente comando para asociar el proveedor de OIDC con el clúster. Para obtener más información, consulte [Enabling IAM Roles for Service Accounts on your Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ahora que el clúster tiene un proveedor de identidades OIDC, puedes crear un rol y dar permiso a ServiceAccount Kubernetes para que lo asuma.

##### Obtención del ID de OIDC
<a name="get-the-oidc-id"></a>

Para configurarlo ServiceAccount, obtén la URL del emisor del OIDC mediante el siguiente comando:

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

El comando devuelve una URL similar a la siguiente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

En esta URL, el valor `D48675832CA65BD10A532F597OIDCID` es el ID de OIDC. El ID de OIDC del clúster es diferente. Necesita este valor de ID de OIDC para crear un rol. 

 Si la salida es `None`, significa que la versión de su cliente es antigua. Para solucionar este problema, ejecute el siguiente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

La URL de OIDC se devuelve de la siguiente manera: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creación de un rol de IAM
<a name="create-an-iam-role"></a>

1. Cree un archivo con un nombre `trust.json` e inserte en él el siguiente bloque de códigos de relación de confianza. Asegúrese de reemplazar todos los marcadores de posición `<OIDC ID>`, `<AWS account number>` y `<EKS Cluster region>` por los valores correspondientes a su clúster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Ejecute el siguiente comando para crear un rol con la relación de confianza definida en `trust.json`. Este rol permite que el clúster de Amazon EKS obtenga y actualice las credenciales de IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Tome nota de `ROLE ARN`; pasará este valor a su operador. 

##### Adjunte la AmazonSageMakerFullAccess política al rol
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Para dar acceso al rol a la SageMaker IA, adjunta la [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Si desea limitar los permisos al operador, puede crear su propia política personalizada y asociarla. 

 Para asociar `AmazonSageMakerFullAccess`, ejecute el siguiente comando: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Los Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deben tener permisos. `AmazonSageMakerFullAccess` Confirme esto cuando instale el operador. 

##### Implementación del operador
<a name="deploy-the-operator"></a>

Al implementar el operador, puede usar un archivo YAML o gráficos de Helm. 

##### Implementación del operador mediante YAML
<a name="deploy-the-operator-using-yaml"></a>

Es la forma más sencilla de implementar los operadores. El proceso es el siguiente: 

1. Descargue el script del instalador mediante el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Edite el archivo `installer.yaml` para reemplazar `eks.amazonaws.com/role-arn`. Reemplace el ARN por el nombre de recurso de Amazon (ARN) para el rol basado en OIDC que ha creado. 

1. Utilice el siguiente comando para implementar el clúster: 

   ```
   kubectl apply -f installer.yaml
   ```

##### Implementación del operador mediante gráficos de Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Utilice el gráfico de Helm suministrado para instalar el operador. 

1. Clone el directorio del instalador de Helm mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Edite el archivo `rolebased/values.yaml`, que incluye parámetros de alto nivel para el gráfico. Reemplace el ARN del rol por el nombre de recurso de Amazon (ARN) para el rol basado en OIDC que ha creado. 

1. Instale el gráfico de Helm mediante el siguiente comando: 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Si decide instalar el operador en un espacio de nombres distinto del especificado, tendrá que ajustar el espacio de nombres definido en el archivo `trust.json` de rol de IAM para que coincida. 

1. Transcurrido un momento, el gráfico se instala con un nombre generado aleatoriamente. Ejecute el siguiente comando para comprobar que se ha instalado correctamente: 

   ```
   helm ls
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificación de la implementación del operador
<a name="verify-the-operator-deployment"></a>

1. Deberías poder ver las definiciones de recursos personalizadas de SageMaker IA (CRDs) de cada operador implementado en tu clúster ejecutando el siguiente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Asegúrese de que el pod del operador se esté ejecutando correctamente. Utilice el siguiente comando para enumerar todos los pods. 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Debería ver un pod denominado `sagemaker-k8s-operator-controller-manager-*****` en el espacio de nombres `sagemaker-k8s-operator-system`, como sigue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Implementación en el ámbito del espacio de nombres
<a name="namespace-scoped-deployment"></a>

Tiene la opción de instalar el operador dentro del ámbito de un espacio de nombres de Kubernetes individual. En este modo, el controlador solo monitorea y reconcilia los recursos con la SageMaker IA si los recursos se crean dentro de ese espacio de nombres. Esto permite un control más preciso sobre qué controlador administra qué recursos. Esto resulta útil para realizar despliegues en varias AWS cuentas o para controlar qué usuarios tienen acceso a determinadas tareas. 

Esta guía describe cómo instalar un operador en un espacio de nombres específico y predefinido. Para implementar un controlador en un segundo espacio de nombres, siga la guía de principio a fin y cambie el espacio de nombres en cada paso. 

##### Creación de un proveedor de OIDC para su clúster de Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Las siguientes instrucciones muestran cómo crear y asociar un proveedor de OIDC a su clúster de Amazon EKS. 

1. Establezca las variables local, `CLUSTER_NAME`, y de entorno, `AWS_REGION`, de la siguiente manera: 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilice el siguiente comando para asociar el proveedor de OIDC con el clúster. Para obtener más información, consulte [Enabling IAM Roles for Service Accounts on your Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ahora que el clúster tiene un proveedor de identidad OIDC, cree un rol y dé ServiceAccount permiso a Kubernetes para que lo asuma. 

##### Obtención del ID de OIDC
<a name="get-your-oidc-id"></a>

Para configurarlo ServiceAccount, primero obtenga la URL del emisor de OpenID Connect mediante el siguiente comando: 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

El comando devuelve una URL similar a la siguiente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

En esta URL, el valor D48675832 A532F597OIDCID CA65 BD10 es el ID del OIDC. El ID de OIDC del clúster es diferente. Necesita este valor de ID de OIDC para crear un rol. 

 Si la salida es `None`, significa que la versión de su cliente es antigua. Para solucionar este problema, ejecute el siguiente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

La URL de OIDC se devuelve de la siguiente manera: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creación de su rol de IAM
<a name="create-your-iam-role"></a>

1. Cree un archivo con un nombre `trust.json` e inserte en él el siguiente bloque de códigos de relación de confianza. Asegúrese de reemplazar todos los marcadores de posición `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` y `<Namespace>` por los valores correspondientes a su clúster. A los efectos de esta guía, se utiliza `my-namespace` para el valor `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Ejecute el siguiente comando para crear un rol con la relación de confianza definida en `trust.json`. Este rol permite que el clúster de Amazon EKS obtenga y actualice las credenciales de IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Tome nota del `ROLE ARN`. Pasará este valor a su operador. 

##### AmazonSageMakerFullAccess Adjunta la política a tu función
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Para dar acceso al rol a la SageMaker IA, adjunta la [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Si desea limitar los permisos al operador, puede crear su propia política personalizada y asociarla. 

 Para asociar `AmazonSageMakerFullAccess`, ejecute el siguiente comando: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Los Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deben tener permisos. `AmazonSageMakerFullAccess` Confirme esto cuando instale el operador. 

##### Implementación del operador en su espacio de nombres
<a name="deploy-the-operator-to-your-namespace"></a>

Al implementar el operador, puede usar un archivo YAML o gráficos de Helm. 

##### Implementación del operador en su espacio de nombres mediante YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

La implementación de un operador dentro del ámbito de un espacio de nombres consta de dos partes. El primero es el conjunto de los CRDs que están instalados a nivel de clúster. Estas definiciones de recursos solo se deben instalar una vez por clúster de Kubernetes. La segunda parte son los permisos del operador y la implementación en sí. 

 Si aún no lo ha instalado CRDs en el clúster, aplique el instalador de CRD YAML mediante el siguiente comando: 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Para instalar el operador en el clúster: 

1. Descargue el YAML del instalador del operador mediante el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Actualice el YAML del instalador para colocar los recursos en el espacio de nombres especificado mediante el siguiente comando: 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
   ```

1. Edite el archivo `operator.yaml` para colocar los recursos en su `eks.amazonaws.com/role-arn`. Reemplace el ARN por el nombre de recurso de Amazon (ARN) para el rol basado en OIDC que ha creado. 

1. Utilice el siguiente comando para implementar el clúster: 

   ```
   kubectl apply -f operator.yaml
   ```

##### Implementación del operador en su espacio de nombres mediante gráficos de Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

La implementación de un operador dentro del ámbito de un espacio de nombres se compone de dos partes. El primero es el conjunto de los CRDs que están instalados a nivel de clúster. Estas definiciones de recursos solo se deben instalar una vez por clúster de Kubernetes. La segunda parte son los permisos del operador y la implementación en sí. Si usa gráficos de Helm, primero debe crear el espacio de nombres con `kubectl`. 

1. Clone el directorio del instalador de Helm mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Edite el archivo `rolebased/values.yaml`, que incluye parámetros de alto nivel para el gráfico. Reemplace el ARN del rol por el nombre de recurso de Amazon (ARN) para el rol basado en OIDC que ha creado. 

1. Instale el gráfico de Helm mediante el siguiente comando: 

   ```
   helm install crds crd_chart/
   ```

1. Cree el espacio de nombres necesario e instale el operador mediante el siguiente comando: 

   ```
   kubectl create namespace <namespace>
   helm install --n <namespace> op operator_chart/
   ```

1. Después de un momento, el gráfico se instala con el nombre `sagemaker-operator`. Ejecute el siguiente comando para comprobar que se ha instalado correctamente: 

   ```
   helm ls
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificación de la implementación del operador en su espacio de nombres
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Debería poder ver las definiciones de recursos personalizadas de SageMaker IA (CRDs) de cada operador implementado en su clúster ejecutando el siguiente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Asegúrese de que el pod del operador se esté ejecutando correctamente. Utilice el siguiente comando para enumerar todos los pods. 

   ```
   kubectl -n my-namespace get pods
   ```

   Debería ver un pod denominado `sagemaker-k8s-operator-controller-manager-*****` en el espacio de nombres `my-namespace`, como sigue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Instala el `kubectl` complemento SageMaker AI logs
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 [Como parte de los operadores de SageMaker IA para Kubernetes, puedes usar el `smlogs` complemento para.](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Esto permite transmitir CloudWatch los registros de SageMaker IA. `kubectl` `kubectl`debe estar instalado en su [PATH](http://www.linfo.org/path_env_var.html). Los siguientes comandos colocan el binario en el directorio `sagemaker-k8s-bin` de su directorio principal y agregan ese directorio a su `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Use el siguiente comando para comprobar que el complemento `kubectl` esté correctamente instalado: 

```
kubectl smlogs
```

Si el complemento `kubectl` está instalado correctamente, la salida debería tener el siguiente aspecto: 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### Eliminar recursos
<a name="cleanup-operator-resources"></a>

Para desinstalar el operador del clúster, primero debe asegurarse de eliminar todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará. Ejecute el siguiente comando para detener todos los trabajos: 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Debería ver una salida similar a esta: 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Después de eliminar todos los trabajos de SageMaker IA, [Eliminación de operadores](#delete-operators) asegúrate de eliminar el operador de tu clúster.

### Eliminación de operadores
<a name="delete-operators"></a>

#### Eliminación de operadores basados en clústeres
<a name="delete-cluster-based-operators"></a>

##### Operadores instalados mediante YAML
<a name="operators-installed-using-yaml"></a>

Para desinstalar el operador del clúster, asegúrese de que se hayan eliminado todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará.

**nota**  
Antes de eliminar el clúster, asegúrate de eliminar todos los recursos de SageMaker IA del clúster. Para obtener más información, consulte [Eliminar recursos](#cleanup-operator-resources).

Una vez que hayas eliminado todos los trabajos de SageMaker IA, úsalo `kubectl` para eliminar el operador del clúster:

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Debería ver una salida similar a esta: 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Operadores instalados mediante gráficos de Helm
<a name="operators-installed-using-helm-charts"></a>

Para eliminar el operador CRDs, borre primero todos los trabajos en ejecución. A continuación, elimine el gráfico de Helm que se utilizó para implementar los operadores mediante los siguientes comandos: 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete <chart_name>
```

#### Eliminación de operadores basados en espacio de nombres
<a name="delete-namespace-based-operators"></a>

##### Operadores instalados con YAML
<a name="operators-installed-with-yaml"></a>

Para desinstalar el operador del clúster, primero asegúrese de que se hayan eliminado todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará.

**nota**  
Antes de eliminar el clúster, asegúrate de eliminar todos los recursos de SageMaker IA del clúster. Para obtener más información, consulte [Eliminar recursos](#cleanup-operator-resources).

Después de eliminar todos los trabajos de SageMaker IA, `kubectl` primero borra el operador del espacio de nombres y, después, el CRDs del clúster. Ejecute los siguientes comandos para eliminar el operador del clúster: 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace <namespace>
```

##### Operadores instalados con gráficos de Helm
<a name="operators-installed-with-helm-charts"></a>

Para eliminar el operador CRDs, borra primero todos los trabajos en ejecución. A continuación, elimine el gráfico de Helm que se utilizó para implementar los operadores mediante los siguientes comandos: 

```
# Delete the operator
helm delete <chart_name>
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace <namespace>
```

### Resolución de problemas
<a name="troubleshooting"></a>

#### Depuración de un trabajo con errores
<a name="debugging-a-failed-job"></a>

Siga estos pasos para depurar un trabajo con errores.
+ Para comprobar el estado del trabajo, ejecute lo siguiente: 

  ```
  kubectl get <CRD Type> <job name>
  ```
+ Si el trabajo se creó en SageMaker IA, puede usar el siguiente comando para ver el `STATUS` y el`SageMaker Job Name`: 

  ```
  kubectl get <crd type> <job name>
  ```
+ Puede utilizar `smlogs` para encontrar la causa del problema mediante el siguiente comando: 

  ```
  kubectl smlogs <crd type> <job name>
  ```
+  También puede utilizar el comando `describe` para obtener más detalles sobre el trabajo mediante el siguiente comando. La salida tiene un campo `additional` que contiene más información sobre el estado del trabajo. 

  ```
  kubectl describe <crd type> <job name>
  ```
+ Si el trabajo no se creó en la SageMaker IA, utilice los registros del módulo del operador para encontrar la causa del problema de la siguiente manera: 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system
  ```

#### Eliminación del CRD del operador
<a name="deleting-an-operator-crd"></a>

Si la eliminación de un trabajo no funciona, compruebe si el operador está en ejecución. Si el operador no se está ejecutando, debe eliminar el finalizador conforme a los siguientes pasos: 

1. En una nueva terminal, abra el trabajo en un editor con `kubectl edit` siguiente manera: 

   ```
   kubectl edit <crd type> <job name>
   ```

1. Edite el trabajo para eliminar el finalizador eliminando las dos líneas siguientes del archivo. Guarde el archivo y se eliminará el trabajo. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Imágenes y SMlogs en cada región
<a name="images-and-smlogs-in-each-region"></a>

La siguiente tabla muestra las imágenes de los operadores disponibles SMLogs en cada región. 


|  Region  |  Imagen del controlador  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 

# Utilice Amazon SageMaker AI Jobs
<a name="kubernetes-sagemaker-jobs"></a>

Esta sección se basa en la versión original de [SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) for Kubernetes.

**importante**  
Vamos a detener el desarrollo y el soporte técnico de la versión original de [ SageMaker Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) for Kubernetes.  
Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)  
Para obtener información sobre los pasos de migración, consulte [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md).  
Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Para ejecutar un trabajo de Amazon SageMaker AI con Operators for Kubernetes, puedes aplicar un archivo YAML o usar los Helm Charts proporcionados. 

Todos los ejemplos de trabajos de operador de los siguientes tutoriales utilizan datos de muestra tomados de un conjunto de datos MNIST público. Para ejecutar estas muestras, descargue el conjunto de datos en su bucket de Amazon S3. Encontrará el conjunto de datos en [Download the MNIST Dataset](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html). 

**Topics**
+ [El operador TrainingJob](#trainingjob-operator)
+ [¿El HyperParameterTuningJob operador](#hyperparametertuningjobs-operator)
+ [¿El BatchTransformJob operador](#batchtransformjobs-operator)
+ [¿El HostingDeployment operador](#hosting-deployment-operator)
+ [¿El operador ProcessingJob](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy Operador (HAP)](#kubernetes-hap-operator)

## El operador TrainingJob
<a name="trainingjob-operator"></a>

Los operadores de puestos de formación concilian las especificaciones de su puesto de formación especificadas con la SageMaker IA y las lanzan automáticamente en SageMaker IA. Puedes obtener más información sobre los trabajos de SageMaker formación en la documentación de la [CreateTrainingJob API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) de SageMaker IA. 

**Topics**
+ [Crea una TrainingJob con un archivo YAML](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Cree un diagrama TrainingJob utilizando un Helm](#create-a-trainingjob-using-a-helm-chart)
+ [Lista TrainingJobs](#list-training-jobs)
+ [Describe un TrainingJob](#describe-a-training-job)
+ [Ver registros de TrainingJobs](#view-logs-from-training-jobs)
+ [Eliminar TrainingJobs](#delete-training-jobs)

### Crea una TrainingJob con un archivo YAML
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. Descargue el archivo YAML de muestra para el entrenamiento con el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. Edite el `xgboost-mnist-trainingjob.yaml` archivo para sustituir el `roleArn` parámetro por su `<sagemaker-execution-role>` bucket de Amazon S3 y `outputPath` por el suyo al que la función de ejecución de SageMaker IA tiene acceso de escritura. `roleArn`Deben tener permisos para que la SageMaker IA pueda acceder a Amazon S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de una SageMaker IA ExecutionRole, consulte [Funciones de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). Aplique el archivo YAML mediante el siguiente comando: 

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Cree un diagrama TrainingJob utilizando un Helm
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Puedes usar Helm Charts para correr TrainingJobs. 

1. Clona el GitHub repositorio para obtener la fuente mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` y edite el archivo `values.yaml` para reemplazar valores como `rolearn` y `outputpath` por valores que correspondan a su cuenta. El RoLearn debe tener permisos para que la SageMaker IA pueda acceder a Amazon S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de una SageMaker IA ExecutionRole, consulte [Funciones de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). 

#### Cree el TrainingJob
<a name="create-the-training-job"></a>

Con los roles y los buckets de Amazon S3 reemplazados por los valores correspondientes en `values.yaml`, puede crear un trabajo de entrenamiento con el siguiente comando: 

```
helm install . --generate-name
```

El resultado debería tener el siguiente aspecto: 

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### Verificación del entrenamiento con gráficos de Helm
<a name="verify-your-training-helm-chart"></a>

Para comprobar que el gráfico de Helm se creó correctamente, ejecute: 

```
helm ls
```

El resultado debería tener el siguiente aspecto: 

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crea un recurso `TrainingJob` de Kubernetes. El operador lanza el trabajo de formación propiamente dicho en SageMaker IA y actualiza el recurso de `TrainingJob` Kubernetes para reflejar el estado del trabajo en IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga. 

**Nota**: La SageMaker IA no te permite actualizar un trabajo de entrenamiento para correr. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Cambie el nombre de los metadatos o elimine el trabajo existente y cree uno nuevo. Al igual que ocurre con los operadores de tareas de formación existentes, como TFJob en Kubeflow, no `update` es compatible. 

### Lista TrainingJobs
<a name="list-training-jobs"></a>

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes: 

```
kubectl get TrainingJob
```

La salida que enumera todos los trabajos debe tener el siguiente aspecto: 

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

Un trabajo de entrenamiento aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un trabajo `TrainingJob` de la lista con los pasos [Eliminar TrainingJobs](#delete-training-jobs). Los trabajos que se hayan completado o interrumpido no conllevan ningún cargo por los recursos de SageMaker IA. 

#### TrainingJob valores de estado
<a name="training-job-status-values"></a>

El campo `STATUS` puede tener uno de los siguientes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Estos estados provienen directamente de la [documentación oficial de la API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus) de SageMaker IA. 

Además del estado oficial de SageMaker IA, es posible que lo `STATUS` sea. `SynchronizingK8sJobWithSageMaker` Esto significa que el operador aún no ha procesado el trabajo. 

#### Valores de estado secundarios
<a name="secondary-status-values"></a>

Los estados secundarios provienen directamente de la [documentación oficial de la API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus) de la SageMaker IA. Contienen información más detallada sobre el estado del trabajo. 

### Describe un TrainingJob
<a name="describe-a-training-job"></a>

Puede obtener más detalles sobre el trabajo de entrenamiento mediante el comando `kubectl` `describe`. Por lo general, se utiliza para solucionar un problema o comprobar los parámetros de un trabajo de entrenamiento. Para obtener información sobre el trabajo de entrenamiento, utilice el siguiente comando: 

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

La salida del trabajo de entrenamiento debería tener el siguiente aspecto: 

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### Ver registros de TrainingJobs
<a name="view-logs-from-training-jobs"></a>

Utilice el siguiente comando para ver los registros del trabajo de entrenamiento `kmeans-mnist`: 

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

El resultado debería tener un aspecto similar al siguiente. Los registros de las instancias se ordenan cronológicamente. 

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### Eliminar TrainingJobs
<a name="delete-training-jobs"></a>

Usa el siguiente comando para detener un trabajo de formación en Amazon SageMaker AI: 

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

Este comando elimina el trabajo de SageMaker formación de Kubernetes. Este comando devuelve la siguiente salida: 

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

Si el trabajo sigue en curso en la SageMaker IA, se detiene. No se le cobrará ningún cargo por los recursos de SageMaker IA una vez que su trabajo se detenga o finalice. 

**Nota**: SageMaker La IA no elimina los trabajos de formación. Los trabajos interrumpidos siguen apareciendo en la consola de SageMaker IA. El `delete` comando tarda unos 2 minutos en limpiar los recursos de la SageMaker IA. 

## ¿El HyperParameterTuningJob operador
<a name="hyperparametertuningjobs-operator"></a>

Los operadores de tareas de ajuste de hiperparámetros concilian la especificación de la tarea de ajuste de hiperparámetros especificada con la SageMaker IA lanzándola en IA. SageMaker [Puedes obtener más información sobre los trabajos de ajuste de hiperparámetros de SageMaker IA en la documentación de la API de IA. SageMaker CreateHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html) 

**Topics**
+ [Crea una HyperparameterTuningJob usando un archivo YAML](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Crea una HyperparameterTuningJob usando un gráfico de Helm](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [Lista HyperparameterTuningJobs](#list-hyperparameter-tuning-jobs)
+ [Describe un HyperparameterTuningJob](#describe-a-hyperparameter-tuning-job)
+ [Vea los registros de HyperparameterTuningJobs](#view-logs-from-hyperparametertuning-jobs)
+ [Eliminar un HyperparameterTuningJob](#delete-hyperparametertuning-jobs)

### Crea una HyperparameterTuningJob usando un archivo YAML
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. Descargue el archivo YAML de muestra para el trabajo de ajuste de hiperparámetros mediante el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. Edite el archivo `xgboost-mnist-hpo.yaml` para reemplazar el parámetro `roleArn` por su `sagemaker-execution-role`. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valores `s3InputPath` y `s3OutputPath` por los que correspondan a su cuenta. Aplique las actualizaciones del archivo YAML mediante el siguiente comando: 

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Crea una HyperparameterTuningJob usando un gráfico de Helm
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

Puede usar gráficos de Helm para ejecutar trabajos de ajuste de hiperparámetros. 

1. Clone el GitHub repositorio para obtener la fuente mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/`. 

1. Edite el archivo `values.yaml` para reemplazar el parámetro `roleArn` por su `sagemaker-execution-role`. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valores `s3InputPath` y `s3OutputPath` por los que correspondan a su cuenta. 

#### Cree el HyperparameterTuningJob
<a name="create-the-hpo-job"></a>

Con los roles y las rutas de Amazon S3 reemplazados por los valores correspondientes en `values.yaml`, puede crear un trabajo de ajuste de hiperparámetros con el siguiente comando: 

```
helm install . --generate-name
```

El resultado debería tener un aspecto similar al siguiente: 

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### Verificación de la instalación del gráfico
<a name="verify-chart-installation"></a>

Para comprobar que el gráfico de Helm se creó correctamente, ejecute el siguiente comando: 

```
helm ls
```

El resultado debería tener el siguiente aspecto: 

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crea un recurso `HyperParameterTuningJob` de Kubernetes. El operador inicia el trabajo real de optimización de hiperparámetros en la SageMaker IA y actualiza el recurso de `HyperParameterTuningJob` Kubernetes para reflejar el estado del trabajo en la IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga. 

**Nota**: La SageMaker IA no permite actualizar un trabajo de ajuste de hiperparámetros en ejecución. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Debe cambiar el nombre de los metadatos o eliminar el trabajo existente y crear uno nuevo. Al igual que ocurre con los operadores de trabajos de entrenamiento existentes, como `TFJob` en Kubeflow, `update` no se admite. 

### Lista HyperparameterTuningJobs
<a name="list-hyperparameter-tuning-jobs"></a>

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes: 

```
kubectl get hyperparametertuningjob
```

El resultado debería tener el siguiente aspecto: 

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

Un trabajo de ajuste de hiperparámetros aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un `hyperparametertuningjob` de la lista con los siguientes pasos en [Eliminar un HyperparameterTuningJob](#delete-hyperparametertuning-jobs). Los trabajos que se hayan completado o interrumpido no conllevan ningún cargo por los recursos de SageMaker IA.

#### Valores de estado del trabajo de ajuste de hiperparámetros
<a name="hyperparameter-tuning-job-status-values"></a>

El campo `STATUS` puede tener uno de los siguientes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Estos estados provienen directamente de la documentación oficial de la [API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) de SageMaker IA. 

Además del estado oficial de SageMaker IA, es posible que lo `STATUS` sea. `SynchronizingK8sJobWithSageMaker` Esto significa que el operador aún no ha procesado el trabajo. 

#### Contadores de estado
<a name="status-counters"></a>

La salida tiene varios contadores, como `COMPLETED` y `INPROGRESS`. Representan el número de trabajos de entrenamiento que se han completado y están en curso, respectivamente. Para obtener más información sobre cómo se determinan, consulta [TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)la documentación de la SageMaker API. 

#### Lo mejor TrainingJob
<a name="best-training-job"></a>

Esta columna contiene el nombre del `TrainingJob` que mejor optimizó la métrica seleccionada. 

Para ver un resumen de los hiperparámetros ajustados, ejecute: 

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Para ver información detallada acerca del `TrainingJob`, ejecute: 

```
kubectl describe trainingjobs <job name>
```

#### Engendrado TrainingJobs
<a name="spawned-training-jobs"></a>

También puede hacer un seguimiento de los 10 trabajos de entrenamiento en Kubernetes lanzados por `HyperparameterTuningJob` si ejecuta el siguiente comando: 

```
kubectl get trainingjobs
```

### Describe un HyperparameterTuningJob
<a name="describe-a-hyperparameter-tuning-job"></a>

Puede obtener los detalles de la depuración mediante el comando `describe` `kubectl`.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Además de la información sobre el trabajo de ajuste, el operador de SageMaker IA para Kubernetes también muestra en el resultado cuál es el [mejor trabajo de entrenamiento encontrado por el trabajo](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job) de ajuste de hiperparámetros, de la siguiente manera: `describe` 

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### Vea los registros de HyperparameterTuningJobs
<a name="view-logs-from-hyperparametertuning-jobs"></a>

Los trabajos de ajuste de hiperparámetros no tienen registros, pero todos los trabajos de entrenamiento lanzados por ellos sí los tienen. Puede acceder a estos registros como si se tratara de un trabajo de entrenamiento normal. Para obtener más información, consulte [Ver registros de TrainingJobs](#view-logs-from-training-jobs).

### Eliminar un HyperparameterTuningJob
<a name="delete-hyperparametertuning-jobs"></a>

Utilice el siguiente comando para detener un trabajo de hiperparámetros en la SageMaker IA. 

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

Este comando elimina el trabajo de ajuste de hiperparámetros y los trabajos de entrenamiento asociados del clúster de Kubernetes y los detiene en la IA. SageMaker Los trabajos que se hayan interrumpido o completado no conllevan ningún cargo por los recursos de IA. SageMaker SageMaker La IA no elimina los trabajos de ajuste de hiperparámetros. Los trabajos interrumpidos siguen apareciendo en la consola de SageMaker IA. 

El resultado debería tener el siguiente aspecto: 

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**Nota**: El comando delete tarda unos 2 minutos en limpiar los recursos de la SageMaker IA. 

## ¿El BatchTransformJob operador
<a name="batchtransformjobs-operator"></a>

Los operadores de trabajos de transformación por lotes concilian la especificación de su trabajo de transformación por lotes especificada con la SageMaker IA lanzándola en SageMaker IA. Puedes obtener más información sobre el trabajo de transformación por lotes de SageMaker IA en la documentación de la [CreateTransformJob API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) de SageMaker IA. 

**Topics**
+ [Crea un BatchTransformJob archivo YAML](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Cree un gráfico BatchTransformJob con Helm Chart](#create-a-batchtransformjob-using-a-helm-chart)
+ [Lista BatchTransformJobs](#list-batch-transform-jobs)
+ [Describe un BatchTransformJob](#describe-a-batch-transform-job)
+ [Ver registros de BatchTransformJobs](#view-logs-from-batch-transform-jobs)
+ [Eliminar un BatchTransformJob](#delete-a-batch-transform-job)

### Crea un BatchTransformJob archivo YAML
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. Descargue el archivo YAML de muestra para el trabajo de transformación por lotes con el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. Edite el archivo `xgboost-mnist-batchtransform.yaml` para cambiar los parámetros necesarios y sustituirlos por sus datos de entrada y `s3OutputPath` por los buckets de Amazon S3 a los que la función de ejecución de SageMaker IA tiene acceso de escritura. `inputdataconfig` 

1. Aplique el archivo YAML mediante el siguiente comando: 

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Cree un gráfico BatchTransformJob con Helm Chart
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Puede usar gráficos de Helm para ejecutar trabajos de transformación por lotes. 

#### Obtención del directorio de instaladores de Helm
<a name="get-the-helm-installer-directory"></a>

Clone el GitHub repositorio para obtener la fuente mediante el siguiente comando: 

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Configuración del gráfico de Helm
<a name="configure-the-helm-chart"></a>

Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/`. 

Edite el `values.yaml` archivo para sustituirlo por sus datos de entrada y OutputPath por sus buckets de S3 a los que la función de ejecución de la SageMaker IA tenga acceso de escritura. `inputdataconfig` 

#### Crea un BatchTransformJob
<a name="create-a-batch-transform-job"></a>

1. Utilice el siguiente comando para crear un trabajo de transformación por lotes: 

   ```
   helm install . --generate-name
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Para comprobar que el gráfico de Helm se creó correctamente, ejecute el siguiente comando: 

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   Este comando crea un recurso de `BatchTransformJob` Kubernetes. El operador lanza el trabajo de transformación propiamente dicho en la SageMaker IA y actualiza el recurso de `BatchTransformJob` Kubernetes para reflejar el estado del trabajo en la IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga. 

**Nota**: La SageMaker IA no permite actualizar un trabajo de transformación por lotes en ejecución. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Debe cambiar el nombre de los metadatos o eliminar el trabajo existente y crear uno nuevo. Al igual que ocurre con los operadores de trabajos de entrenamiento existentes, como `TFJob` en Kubeflow, `update` no se admite. 

### Lista BatchTransformJobs
<a name="list-batch-transform-jobs"></a>

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes: 

```
kubectl get batchtransformjob
```

El resultado debería tener el siguiente aspecto: 

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

Un trabajo de transformación por lotes aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un `hyperparametertuningjob` de la lista con los siguientes pasos en [Eliminar un BatchTransformJob](#delete-a-batch-transform-job). Los trabajos que se hayan completado o interrumpido no conllevan ningún cargo por los recursos de SageMaker IA. 

#### Valores de estado de transformación por lotes
<a name="batch-transform-status-values"></a>

El campo `STATUS` puede tener uno de los siguientes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Estos estados provienen directamente de la documentación oficial de la [API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) de SageMaker IA. 

Además del estado oficial de SageMaker IA, es posible que lo `STATUS` sea. `SynchronizingK8sJobWithSageMaker` Esto significa que el operador aún no ha procesado el trabajo.

### Describe un BatchTransformJob
<a name="describe-a-batch-transform-job"></a>

Puede obtener los detalles de la depuración mediante el comando `describe` `kubectl`.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

El resultado debería tener el siguiente aspecto: 

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### Ver registros de BatchTransformJobs
<a name="view-logs-from-batch-transform-jobs"></a>

Utilice el siguiente comando para ver los registros del trabajo de transformación por lotes `xgboost-mnist`: 

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### Eliminar un BatchTransformJob
<a name="delete-a-batch-transform-job"></a>

Utilice el siguiente comando para detener un trabajo de transformación por lotes en SageMaker IA. 

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

El resultado debería tener el siguiente aspecto: 

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

Este comando elimina el trabajo de transformación por lotes del clúster de Kubernetes y lo detiene en la IA. SageMaker Los trabajos que se hayan interrumpido o completado no conllevan ningún cargo por los recursos de IA. SageMaker Eliminar tarda unos 2 minutos en limpiar los recursos de la SageMaker IA. 

**Nota**: SageMaker La IA no elimina los trabajos de transformación por lotes. Los trabajos interrumpidos siguen mostrándose en la consola de SageMaker IA. 

## ¿El HostingDeployment operador
<a name="hosting-deployment-operator"></a>

HostingDeployment Los operadores admiten la creación y eliminación de un punto final, así como la actualización de un punto final existente, para realizar inferencias en tiempo real. El operador de despliegue de alojamiento concilia las especificaciones de trabajo de despliegue de alojamiento especificadas con la SageMaker IA mediante la creación de modelos, configuraciones de puntos finales y puntos de enlace en la IA. SageMaker [Puedes obtener más información sobre la inferencia de IA en la documentación de la API de SageMaker IA. SageMaker CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) 

**Topics**
+ [Configura un recurso HostingDeployment](#configure-a-hostingdeployment-resource)
+ [Cree un HostingDeployment](#create-a-hostingdeployment)
+ [Lista HostingDeployments](#list-hostingdeployments)
+ [Describa un HostingDeployment](#describe-a-hostingdeployment)
+ [Invocación del punto de conexión](#invoking-the-endpoint)
+ [¡Actualiza HostingDeployment](#update-hostingdeployment)
+ [Elimine el HostingDeployment](#delete-the-hostingdeployment)

### Configura un recurso HostingDeployment
<a name="configure-a-hostingdeployment-resource"></a>

Descargue el archivo YAML de muestra para el trabajo de implementación de alojamiento con el siguiente comando: 

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

El archivo `xgboost-mnist-hostingdeployment.yaml` tiene los siguientes componentes que se pueden editar según sea necesario: 
+ *ProductionVariants*. Una variante de producción es un conjunto de instancias que sirven a un único modelo. SageMaker La IA equilibra la carga entre todas las variantes de producción según los pesos establecidos. 
+ *Models*. Un modelo son los contenedores y el ARN del rol de ejecución necesarios para atender a un modelo. Requiere al menos un contenedor. 
+ *Containers*. Un contenedor especifica el conjunto de datos y la imagen de servicio. Si utiliza su propio algoritmo personalizado en lugar de un algoritmo proporcionado por la SageMaker IA, el código de inferencia debe cumplir SageMaker los requisitos de la IA. Para obtener más información, consulte [Uso de sus propios algoritmos con SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html). 

### Cree un HostingDeployment
<a name="create-a-hostingdeployment"></a>

Para crear un HostingDeployment, utilice `kubectl` para aplicar el archivo `hosting.yaml` con el siguiente comando: 

```
kubectl apply -f hosting.yaml
```

SageMaker La IA crea un punto final con la configuración especificada. Se le cobrará por los recursos de SageMaker IA utilizados durante la vida útil de su terminal. No incurrirá en ningún cargo una vez que se elimine su punto de conexión. 

El proceso de creación debería tardar aproximadamente 10 minutos. 

### Lista HostingDeployments
<a name="list-hostingdeployments"></a>

Para comprobar que HostingDeployment se ha creado, utilice el siguiente comando: 

```
kubectl get hostingdeployments
```

El resultado debería tener el siguiente aspecto: 

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment valores de estado
<a name="hostingdeployment-status-values"></a>

El campo de estado puede tener uno de los siguientes valores: 
+ `SynchronizingK8sJobWithSageMaker`: el operador se está preparando para crear el punto de conexión. 
+ `ReconcilingEndpoint`: el operador está creando, actualizando o eliminando los recursos del punto de conexión. Si HostingDeployment permanece en este estado, utilícelo `kubectl describe` para ver el motivo en el `Additional` campo. 
+ `OutOfService`: el punto de conexión no está disponible para recibir solicitudes entrantes. 
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)se está ejecutando. 
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)o [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)se está ejecutando. 
+ `SystemUpdating`: el punto de conexión se encuentra en fase de mantenimiento y no se puede actualizar, eliminar ni reescalar hasta que se haya completado. Esta operación de mantenimiento no cambia ningún valor especificado por el cliente, como la configuración de la VPC, el AWS KMS cifrado, el modelo, el tipo de instancia o el recuento de instancias. 
+ `RollingBack`: el punto de conexión no puede escalar verticalmente ni reducir verticalmente ni cambiar el peso de sus variantes y está en proceso de volver a su configuración anterior. Una vez finalizada la reversión, el punto de conexión vuelve a un estado `InService`. Este estado de transición solo se aplica a un punto final que tenga activado el escalado automático y que esté experimentando cambios en el peso o la capacidad de las variantes como parte de una [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)llamada o cuando la [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)operación se convoque de forma explícita. 
+ `InService`: el punto de conexión está disponible para procesar solicitudes entrantes. 
+ `Deleting`: [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)está en ejecución. 
+ `Failed`: no se pudo crear, actualizar ni reescalar el punto de conexión. Utilice [DescribeEndpoint: FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) para obtener información sobre la falla. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)es la única operación que se puede realizar en un punto final defectuoso. 

### Describa un HostingDeployment
<a name="describe-a-hostingdeployment"></a>

Puede obtener los detalles de la depuración mediante el comando `describe` `kubectl`.

```
kubectl describe hostingdeployment
```

El resultado debería tener el siguiente aspecto: 

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

El campo de estado proporciona más información mediante los siguientes campos: 
+ `Additional`: información adicional sobre el estado de la implementación de alojamiento. Este campo es opcional y solo se rellena en caso de error. 
+ `Creation Time`: Cuando se creó el punto final en la SageMaker IA. 
+ `Endpoint ARN`: El ARN del punto final de la SageMaker IA. 
+ `Endpoint Config Name`: el nombre de SageMaker IA de la configuración del punto final. 
+ `Endpoint Name`: el nombre de SageMaker IA del punto final. 
+ `Endpoint Status`: el estado del punto de conexión. 
+ `Endpoint URL`: La URL de HTTPS que se puede utilizar para acceder al punto de conexión. Para obtener más información, consulte [Implementación de un modelo en los servicios de alojamiento de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 
+ `FailureReason`: si un comando de creación, actualización o eliminación produce un error, la causa se muestra aquí. 
+ `Last Check Time`: la última vez que el operador comprobó el estado del punto de conexión. 
+ `Last Modified Time`: la última vez que se modificó el punto de conexión. 
+ `Model Names`: Un par de nombres de modelos con valores clave y nombres de HostingDeployment modelos de SageMaker IA. 

### Invocación del punto de conexión
<a name="invoking-the-endpoint"></a>

Una vez que el estado del punto final es`InService`, puede invocarlo de dos maneras: mediante la AWS CLI, que realiza la autenticación y firma las solicitudes de URL, o mediante un cliente HTTP como cURL. Si utilizas tu propio cliente, tendrás que realizar tú mismo la firma y autenticación de las URL de la AWS versión 4. 

Para invocar el punto final mediante la AWS CLI, ejecute el siguiente comando. Asegúrese de reemplazar la región y el nombre del punto final por el nombre de la región y el nombre del punto final de la SageMaker IA del punto final. Esta información se puede obtener de la salida de `kubectl describe`. 

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

Por ejemplo, si su región es `us-east-2` y el nombre de la configuración de su punto de conexión es `host-xgboost-f56b6b280d7511ea824b129926example`, el siguiente comando invocará el punto de conexión: 

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

Aquí, `4.95847082138` es la predicción del modelo para los datos simulados. 

### ¡Actualiza HostingDeployment
<a name="update-hostingdeployment"></a>

1. Una vez HostingDeployment que tiene un estado de`InService`, se puede actualizar. Su puesta en servicio puede tardar unos 10 minutos. HostingDeployment Para verificar que el estado sea `InService`, utilice el siguiente comando: 

   ```
   kubectl get hostingdeployments
   ```

1. Se HostingDeployment puede actualizar antes de que aparezca el estado`InService`. El operador espera a que llegue el punto final de la SageMaker IA `InService` antes de aplicar la actualización. 

   Para aplicar una actualización, modifique el archivo `hosting.yaml`. Por ejemplo, cambie el campo `initialInstanceCount` de 1 a 2 de la siguiente manera: 

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. Guarda el archivo y use `kubectl` para aplicar la actualización de la siguiente manera. Debería ver el cambio de estado de `InService` a `ReconcilingEndpoint` y, a continuación, a `Updating`. 

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker La IA implementa un nuevo conjunto de instancias con sus modelos, cambia el tráfico para usar las nuevas instancias y agota las instancias antiguas. En cuanto comience este proceso, el estado pasará a ser `Updating`. Una vez completada la actualización, su punto de conexión pasa a ser `InService`. Este proceso puede tardar aproximadamente 10 minutos. 

### Elimine el HostingDeployment
<a name="delete-the-hostingdeployment"></a>

1. Se utiliza `kubectl` para eliminar un HostingDeployment con el siguiente comando: 

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. Para comprobar que se haya eliminado la implementación de alojamiento, utilice el siguiente comando: 

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

Los puntos finales que se hayan eliminado no incurrirán en ningún cargo por los recursos de SageMaker IA. 

## ¿El operador ProcessingJob
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob los operadores se utilizan para lanzar los trabajos SageMaker de procesamiento de Amazon. Para obtener más información sobre los trabajos de SageMaker procesamiento, consulte [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html). 

**Topics**
+ [Cree un ProcessingJob archivo YAML](#kubernetes-processing-job-yaml)
+ [Lista ProcessingJobs](#kubernetes-processing-job-list)
+ [Describa un ProcessingJob](#kubernetes-processing-job-description)
+ [Eliminar un ProcessingJob](#kubernetes-processing-job-delete)

### Cree un ProcessingJob archivo YAML
<a name="kubernetes-processing-job-yaml"></a>

Sigue estos pasos para crear un trabajo de SageMaker procesamiento de Amazon mediante un archivo YAML:

1. Descargue el script de preprocesamiento `kmeans_preprocessing.py`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. En uno de sus buckets de Amazon Simple Storage Service (Amazon S3), cree una carpeta `mnist_kmeans_example/processing_code` y cargue el script en la carpeta.

1. Descargue el archivo `kmeans-mnist-processingjob.yaml`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. Edite el archivo YAML para especificar su `sagemaker-execution-role` y reemplace todas las instancias de `amzn-s3-demo-bucket` por su bucket de S3.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   `sagemaker-execution-role`Deben tener permisos para que la SageMaker IA pueda acceder a su bucket de S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de un rol de ejecución, consulte [Funciones de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms).

1. Aplique el archivo YAML mediante uno de los siguientes comandos:

   Para una instalación basada en el clúster:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   Para una instalación basada en el espacio de nombres:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### Lista ProcessingJobs
<a name="kubernetes-processing-job-list"></a>

Utilice uno de los siguientes comandos para enumerar todos los trabajos creados con el ProcessingJob operador. `SAGEMAKER-JOB-NAME `proviene de la `metadata` sección del archivo YAML.

Para una instalación basada en el clúster:

```
kubectl get ProcessingJob kmeans-mnist-processing
```

Para una instalación basada en el espacio de nombres:

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

El resultado debería tener un aspecto similar al siguiente:

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

La salida muestra todos los trabajos, independientemente de su estado. Para eliminar un trabajo de la lista, consulte [Delete a Processing Job](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete).

**ProcessingJob Estado**
+ `SynchronizingK8sJobWithSageMaker`: el trabajo se envía primero al clúster. El operador ha recibido la solicitud y se está preparando para crear el trabajo de procesamiento.
+ `Reconciling`: el operador está inicializando o recuperándose de errores transitorios, entre otros. Si el trabajo de procesamiento permanece en este estado, utilice el comando `kubectl` `describe` para ver el motivo en el campo `Additional`.
+ `InProgress | Completed | Failed | Stopping | Stopped`— Estado del trabajo SageMaker de procesamiento. Para obtener más información, consulte [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus).
+ `Error`: el operador no puede recuperarse mediante la conciliación.

Los trabajos que se completen, se detengan o fallen no incurren en cargos adicionales por los recursos de SageMaker IA.

### Describa un ProcessingJob
<a name="kubernetes-processing-job-description"></a>

Utilice uno de los siguientes comandos para obtener más detalles sobre un trabajo de procesamiento. Estos comandos se utilizan normalmente para depurar un problema o comprobar los parámetros de un trabajo de procesamiento.

Para una instalación basada en el clúster:

```
kubectl describe processingjob kmeans-mnist-processing
```

Para una instalación basada en el espacio de nombres:

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

La salida del trabajo de procesamiento debería tener un aspecto similar al siguiente.

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### Eliminar un ProcessingJob
<a name="kubernetes-processing-job-delete"></a>

Cuando eliminas un trabajo de procesamiento, el trabajo de SageMaker procesamiento se elimina de Kubernetes, pero no de AI. SageMaker Si el estado del trabajo en SageMaker IA es, `InProgress` el trabajo se detiene. Los trabajos de procesamiento que están parados no incurre en ningún cargo por los recursos de SageMaker IA. Utilice uno de los siguientes comandos para eliminar un trabajo de procesamiento. 

Para una instalación basada en el clúster:

```
kubectl delete processingjob kmeans-mnist-processing
```

Para una instalación basada en el espacio de nombres:

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

La salida del trabajo de procesamiento debería tener un aspecto similar al siguiente.

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**nota**  
SageMaker La IA no elimina el trabajo de procesamiento. Los trabajos interrumpidos siguen mostrándose en la consola de SageMaker IA. El `delete` comando tarda unos minutos en limpiar los recursos de la SageMaker IA.

## HostingAutoscalingPolicy Operador (HAP)
<a name="kubernetes-hap-operator"></a>

El operador HostingAutoscalingPolicy (HAP) toma una lista de recursos IDs como entrada y aplica la misma política a cada uno de ellos. Cada ID de recurso es una combinación de un nombre de punto de conexión y un nombre de variante. El operador HAP realiza dos pasos: registra el recurso IDs y, a continuación, aplica la política de escalado a cada ID de recurso. `Delete`deshace ambas acciones. [Puede aplicar el HAP a un punto final de SageMaker IA existente o puede crear un nuevo punto final de SageMaker IA con el HostingDeployment operador.](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment) Puedes obtener más información sobre el escalado automático de la SageMaker IA en la documentación de la política de [escalado automático de aplicaciones](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

**nota**  
En sus comandos `kubectl`, puede utilizar la forma abreviada,`hap`, en lugar de `hostingautoscalingpolicy`.

**Topics**
+ [Cree un archivo HostingAutoscalingPolicy con un archivo YAML](#kubernetes-hap-job-yaml)
+ [Lista HostingAutoscalingPolicies](#kubernetes-hap-list)
+ [Describa un HostingAutoscalingPolicy](#kubernetes-hap-describe)
+ [Actualice un HostingAutoscalingPolicy](#kubernetes-hap-update)
+ [Elimine un HostingAutoscalingPolicy](#kubernetes-hap-delete)
+ [Actualice o elimine un punto final con un HostingAutoscalingPolicy](#kubernetes-hap-update-delete-endpoint)

### Cree un archivo HostingAutoscalingPolicy con un archivo YAML
<a name="kubernetes-hap-job-yaml"></a>

Usa un archivo YAML para crear un HostingAutoscalingPolicy (HAP) que aplique una métrica predefinida o personalizada a uno o varios SageMaker puntos finales de IA.

Amazon SageMaker AI requiere valores específicos para aplicar el escalado automático a tu variante. Si estos valores no se indican en la especificación de YAML, el operador HAP aplica los siguientes valores predeterminados.

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

Utilice los siguientes ejemplos para crear una HAP que aplique una métrica predefinida o personalizada a uno o varios puntos de conexión.

#### Ejemplo 1: Aplicar una métrica predefinida a una única variante del punto de conexión
<a name="kubernetes-hap-predefined-metric"></a>

1. Descargue el archivo YAML de muestra para la métrica predefinida con el siguiente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Edite el archivo YAML para especificar su `endpointName`, `variantName` y `Region`.

1. Use uno de los siguientes comandos para aplicar una métrica predefinida a un único ID de recurso (combinación de nombre de punto de conexión y nombre de variante).

   Para una instalación basada en el clúster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Para una instalación basada en el espacio de nombres:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Ejemplo 2: Aplicar una métrica personalizada a una única variante del punto de conexión
<a name="kubernetes-hap-custom-metric"></a>

1. Descargue el archivo YAML de muestra para la métrica personalizada con el siguiente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. Edite el archivo YAML para especificar su `endpointName`, `variantName` y `Region`.

1. Use uno de los siguientes comandos para aplicar una métrica personalizada a un único ID de recurso (combinación de nombre de punto de conexión y nombre de variante) en lugar de la `SageMakerVariantInvocationsPerInstance` recomendada.
**nota**  
Amazon SageMaker AI no comprueba la validez de las especificaciones de YAML.

   Para una instalación basada en el clúster:

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   Para una instalación basada en el espacio de nombres:

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### Ejemplo 3: Aplicar una política de escalado a varios puntos de conexión y variantes
<a name="kubernetes-hap-scaling-policy"></a>

Puede utilizar el operador HAP para aplicar la misma política de escalado a varios recursos. IDs Se crea una solicitud de `scaling_policy` independiente para cada ID de recurso (combinación de nombre de punto de conexión y nombre de variante).

1. Descargue el archivo YAML de muestra para la métrica predefinida con el siguiente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Edita el archivo YAML para especificar su `Region` y varios valores de `endpointName` y `variantName`.

1. Utilice uno de los siguientes comandos para aplicar una métrica predefinida a varios recursos IDs (combinaciones de nombre de terminal y nombre de variante).

   Para una instalación basada en el clúster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Para una instalación basada en el espacio de nombres:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Consideraciones HostingAutoscalingPolicies para varios puntos finales y variantes
<a name="kubernetes-hap-scaling-considerations"></a>

Cuando se utilizan varios recursos IDs, se tienen en cuenta las siguientes consideraciones:
+ Si aplica una sola política en varios recursos IDs, se crea una PolicyArn por ID de recurso. Cinco puntos finales tienen cinco políticas. ARNs Al ejecutar el comando `describe` en la política, las respuestas se muestran como un solo trabajo e incluyen un solo estado de trabajo.
+ Si aplica una métrica personalizada a varios recursos IDs, se utiliza la misma dimensión o valor para todos los valores del identificador del recurso (variante). Por ejemplo, si aplica una métrica de cliente a las instancias 1 a 5 y la dimensión de la variante de punto de conexión se asigna a la variante 1, cuando la variante 1 supera las métricas, todos los puntos de conexión se escalan verticalmente o reducen verticalmente.
+ El operador HAP admite la actualización de la lista de recursos IDs. Si modifica, agrega o elimina un recurso IDs de la especificación, la política de escalado automático se elimina de la lista anterior de variantes y se aplica a las combinaciones de identificadores de recursos recién especificadas. Utilice el [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe)comando para enumerar el recurso IDs al que se aplica la política actualmente.

### Lista HostingAutoscalingPolicies
<a name="kubernetes-hap-list"></a>

Utilice uno de los siguientes comandos para enumerar todos los HostingAutoscalingPolicies (HAPs) creados con el operador HAP.

Para una instalación basada en el clúster:

```
kubectl get hap
```

Para una instalación basada en el espacio de nombres:

```
kubectl get hap -n <NAMESPACE>
```

El resultado debería tener un aspecto similar al siguiente:

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

Utilice el siguiente comando para comprobar el estado de su HostingAutoscalingPolicy (HAP).

```
kubectl get hap <job-name>
```

Se devuelve uno de los siguientes valores:
+ `Reconciling`: algunos tipos de errores muestran el estado como `Reconciling` en lugar de `Error`. Algunos ejemplos son errores del servidor y puntos de conexión en el estado `Creating` o `Updating`. Para obtener más detalles, consulte el campo `Additional` de los registros de estado o de los registros del operador.
+ `Created`
+ `Error`

**Para ver el punto de conexión de escalado automático al que aplicó la política**

1. Abre la consola Amazon SageMaker AI en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. En el panel lateral izquierdo, amplíe **Inferencia**.

1. Elija **Puntos de conexión**.

1. Seleccione el nombre del punto de conexión de interés.

1. Desplácese hasta la sección **Configuración del tiempo de ejecución del punto de conexión**.

### Describa un HostingAutoscalingPolicy
<a name="kubernetes-hap-describe"></a>

Use el siguiente comando para obtener más detalles sobre un HostingAutoscalingPolicy (HAP). Estos comandos se utilizan normalmente para solucionar un problema o comprobar el recurso IDs (combinaciones de nombre de terminal y nombre de variante) de un HAP.

```
kubectl describe hap <job-name>
```

### Actualice un HostingAutoscalingPolicy
<a name="kubernetes-hap-update"></a>

El operador HostingAutoscalingPolicy (HAP) admite las actualizaciones. Puede editar su especificación de YAML para cambiar los valores y luego volver a aplicar la política. El operador HAP elimina la política existente y aplica la nueva política.

### Elimine un HostingAutoscalingPolicy
<a name="kubernetes-hap-delete"></a>

Utilice uno de los siguientes comandos para eliminar una política HostingAutoscalingPolicy (HAP).

Para una instalación basada en el clúster:

```
kubectl delete hap hap-predefined
```

Para una instalación basada en el espacio de nombres:

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

Este comando elimina la política de escalado y anula el registro del objetivo de escalado en Kubernetes. Este comando devuelve la siguiente salida:

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### Actualice o elimine un punto final con un HostingAutoscalingPolicy
<a name="kubernetes-hap-update-delete-endpoint"></a>

Para actualizar un punto final que tiene un HostingAutoscalingPolicy (HAP), utilice el `kubectl` `delete` comando para eliminar el HAP, actualizar el punto final y, a continuación, volver a aplicar el HAP.

Para eliminar un punto de conexión que tiene una HAP, utilice el comando `kubectl` `delete` para eliminar la HAP antes de eliminar el punto de conexión.

# Migrar recursos a los operadores más recientes
<a name="kubernetes-sagemaker-operators-migrate"></a>

[Vamos a detener el desarrollo y el soporte técnico de la versión original de Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)

Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)

Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Siga los siguientes pasos para migrar sus recursos y utilice ACK para entrenar, ajustar e implementar modelos de aprendizaje automático con Amazon SageMaker AI.

**nota**  
Los operadores de SageMaker IA más recientes para Kubernetes no son compatibles con versiones anteriores.

**Topics**
+ [Requisitos previos](#migrate-resources-to-new-operators-prerequisites)
+ [Adoptar recursos](#migrate-resources-to-new-operators-steps)
+ [Borrar los recursos antiguos](#migrate-resources-to-new-operators-cleanup)
+ [Usa los nuevos operadores de SageMaker IA para Kubernetes](#migrate-resources-to-new-operators-tutorials)

## Requisitos previos
<a name="migrate-resources-to-new-operators-prerequisites"></a>

Para migrar correctamente los recursos a los operadores de SageMaker IA más recientes para Kubernetes, debes hacer lo siguiente:

1. Instale los operadores de SageMaker IA más recientes para Kubernetes. Consulte [Configuración](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) en *Machine Learning con el controlador ACK SageMaker AI* para step-by-step obtener instrucciones.

1. Si utiliza [HostingAutoscalingPolicy recursos](#migrate-resources-to-new-operators-hap), instale el nuevo operador de escalado automático de aplicaciones. Consulte [Configuración](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup) en *Scale SageMaker AI Workloads with Application Auto Scaling* para obtener step-by-step instrucciones. Este paso es opcional si no está utilizando HostingAutoScalingPolicy recursos.

Si los permisos están configurados correctamente, el controlador de servicio ACK SageMaker AI puede determinar la especificación y el estado del AWS recurso y conciliar el recurso como si el controlador ACK lo hubiera creado originalmente.

## Adoptar recursos
<a name="migrate-resources-to-new-operators-steps"></a>

Los nuevos operadores de SageMaker IA para Kubernetes permiten adoptar recursos que no fueron creados originalmente por el controlador de servicios ACK. Para obtener más información, consulte [Adoptar los AWS recursos existentes](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) en la documentación de ACK.

Los siguientes pasos muestran cómo los nuevos operadores de SageMaker IA para Kubernetes pueden adoptar un punto final de IA existente SageMaker . Guarde el siguiente ejemplo como un archivo llamado `adopt-endpoint-sample.yaml`. 

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

Envíe el recurso personalizado (CR) mediante `kubectl apply`:

```
kubectl apply -f adopt-endpoint-sample.yaml
```

Use `kubectl describe` para comprobar las condiciones de estado del recurso adoptado.

```
kubectl describe adoptedresource adopt-endpoint-sample
```

Compruebe que la condición `ACK.Adopted` sea `True`. La salida debería tener un aspecto similar al siguiente ejemplo:

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

Compruebe que el recurso existe en el clúster:

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy recursos
<a name="migrate-resources-to-new-operators-hap"></a>

El recurso `HostingAutoscalingPolicy` (HAP) consta de varios recursos de escalado automático de aplicaciones: `ScalableTarget` y `ScalingPolicy`. Al adoptar un recurso HAP con ACK, instale primero el [controlador de escalado automático de aplicaciones](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). Para adoptar los recursos HAP, debe adoptar ambos recursos, `ScalableTarget` y `ScalingPolicy`. Encontrará el identificador de recursos de estos recursos en el estado del recurso `HostingAutoscalingPolicy` (`status.ResourceIDList`).

### HostingDeployment recursos
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

El `HostingDeployment` recurso consta de varios recursos de SageMaker IA: `Endpoint``EndpointConfig`, y cada uno`Model`. Si adoptas un punto final de SageMaker IA en ACK, debes adoptar el `Endpoint``EndpointConfig`, y cada uno `Model` por separado. Los nombres de `Endpoint`, `EndpointConfig` y `Model` se encuentran en el estado del recurso `HostingDeployment` (`status.endpointName`, `status.endpointConfigName` y `status.modelNames`).

Para obtener una lista de todos los recursos de SageMaker IA compatibles, consulta la [referencia de la API de ACK](https://aws-controllers-k8s.github.io/community/reference/).

## Borrar los recursos antiguos
<a name="migrate-resources-to-new-operators-cleanup"></a>

Una vez que los nuevos operadores de SageMaker IA para Kubernetes adopten tus recursos, podrás desinstalar los operadores antiguos y limpiar los recursos antiguos.

### Paso 1: Desinstalar el operador antiguo
<a name="migrate-resources-to-new-operators-uninstall"></a>

Para desinstalar el operador anterior, consulte [Eliminación de operadores](kubernetes-sagemaker-operators-end-of-support.md#delete-operators).

**aviso**  
Desinstale el operador antiguo antes de eliminar cualquier recurso antiguo.

### Paso 2: Eliminar los finalizadores y eliminar los recursos antiguos
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**aviso**  
Antes de eliminar los recursos antiguos, asegúrese de haber desinstalado el operador antiguo.

Tras desinstalar el operador antiguo, debe eliminar de forma explícita los finalizadores para eliminar los recursos del operador antiguo. El siguiente script de ejemplo muestra cómo eliminar todos los trabajos de entrenamiento administrados por el operador antiguo en un espacio de nombres determinado. Puede utilizar un patrón similar para eliminar recursos adicionales una vez que los adopte el nuevo operador.

**nota**  
Debe utilizar los nombres completos de los recursos para obtenerlos. Por ejemplo, utilice `kubectl get trainingjobs.sagemaker.aws.amazon.com` en lugar de `kubectl get trainingjob`.

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## Usa los nuevos operadores de SageMaker IA para Kubernetes
<a name="migrate-resources-to-new-operators-tutorials"></a>

Para obtener guías detalladas sobre el uso de los nuevos operadores de SageMaker IA para Kubernetes, consulte [Usa operadores de SageMaker IA para Kubernetes](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)

# Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes
<a name="kubernetes-sagemaker-operators-eos-announcement"></a>

Esta página anuncia el fin del soporte para la versión original de [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s) y proporciona respuestas a las preguntas más frecuentes, así como información sobre la migración del controlador de [servicios ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller), una nueva generación de operadores de SageMaker IA totalmente compatibles para Kubernetes. Para obtener información general sobre los nuevos operadores de SageMaker IA para Kubernetes, consulte. [Los últimos operadores de SageMaker IA para Kubernetes](kubernetes-sagemaker-operators-ack.md) 

## Preguntas frecuentes sobre la finalización del soporte
<a name="kubernetes-sagemaker-operators-eos-faq"></a>

**Topics**
+ [¿Por qué vamos a dejar de ofrecer soporte a la versión original de SageMaker AI Operators para Kubernetes?](#kubernetes-sagemaker-operators-eos-faq-why)
+ [¿Dónde puedo encontrar más información sobre los nuevos operadores de SageMaker IA para Kubernetes y ACK?](#kubernetes-sagemaker-operators-eos-faq-more)
+ [¿Qué significa la finalización del soporte (EOS)?](#kubernetes-sagemaker-operators-eos-faq-definition)
+ [¿Cómo puedo migrar mi carga de trabajo a los nuevos operadores de SageMaker IA para Kubernetes con fines de formación e inferencia?](#kubernetes-sagemaker-operators-eos-faq-how)
+ [¿A qué versión de ACK debo migrar?](#kubernetes-sagemaker-operators-eos-faq-version)
+ [¿Los operadores de SageMaker IA iniciales para Kubernetes y los nuevos operadores (controlador de servicio ACK para Amazon SageMaker AI) son funcionalmente equivalentes?](#kubernetes-sagemaker-operators-eos-faq-parity)

### ¿Por qué vamos a dejar de ofrecer soporte a la versión original de SageMaker AI Operators para Kubernetes?
<a name="kubernetes-sagemaker-operators-eos-faq-why"></a>

Los usuarios ahora pueden aprovechar el [controlador de servicios ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller). El controlador de servicios ACK es una nueva generación de operadores de SageMaker IA para Kubernetes basados en [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK), un proyecto impulsado por la comunidad y optimizado para la producción, que estandariza la forma de exponer los servicios a través de un operador de Kubernetes. AWS [Por ello, anunciamos el fin del soporte (EOS) para la versión original (no basada en ACK) de AI Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s) El soporte finaliza el **15 de febrero de 2023** junto con [Amazon Elastic Kubernetes Service Kubernetes 1.21](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar). 

Para obtener más información sobre ACK, consulte [ACK history and tenets](https://aws-controllers-k8s.github.io/community/docs/community/background/).

### ¿Dónde puedo encontrar más información sobre los nuevos operadores de SageMaker IA para Kubernetes y ACK?
<a name="kubernetes-sagemaker-operators-eos-faq-more"></a>
+ Para obtener más información sobre los nuevos operadores de SageMaker IA para Kubernetes, consulte el GitHub repositorio de controladores de [servicio ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) o lea la documentación de [AWS Controllers for](https://aws-controllers-k8s.github.io/community/docs/community/overview/) Kubernetes.
+ Para ver un tutorial sobre cómo entrenar un modelo de aprendizaje automático con el controlador de servicio ACK para Amazon SageMaker AI mediante Amazon EKS, consulte este [ejemplo de SageMaker IA](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

  Para ver un ejemplo de escalado automático, consulte [Escalar cargas de trabajo de SageMaker IA con Application Auto Scaling](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/).
+ Para obtener información sobre el controlador de AWS para Kubernetes (ACK), consulte la documentación de los [controladores de AWS para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).
+ Para ver una lista de los recursos de SageMaker IA compatibles, consulta la referencia de la [API de ACK](https://aws-controllers-k8s.github.io/community/reference/).

### ¿Qué significa la finalización del soporte (EOS)?
<a name="kubernetes-sagemaker-operators-eos-faq-definition"></a>

Si bien los usuarios pueden seguir utilizando sus operadores actuales, ya no estamos desarrollando nuevas funciones para los operadores ni publicaremos parches o actualizaciones de seguridad para solucionar los problemas detectados. `v1.2.2`es la última versión de [SageMaker AI Operators para Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master). Los usuarios deben migrar sus cargas de trabajo para usar el [controlador de servicios ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller).

### ¿Cómo puedo migrar mi carga de trabajo a los nuevos operadores de SageMaker IA para Kubernetes con fines de formación e inferencia?
<a name="kubernetes-sagemaker-operators-eos-faq-how"></a>

Para obtener información sobre la migración de recursos de los antiguos operadores de SageMaker IA a los nuevos para Kubernetes, sigue este enlace. [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md)

### ¿A qué versión de ACK debo migrar?
<a name="kubernetes-sagemaker-operators-eos-faq-version"></a>

Los usuarios deben migrar a la versión publicada más reciente del [controlador de servicio ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller/tags).

### ¿Los operadores de SageMaker IA iniciales para Kubernetes y los nuevos operadores (controlador de servicio ACK para Amazon SageMaker AI) son funcionalmente equivalentes?
<a name="kubernetes-sagemaker-operators-eos-faq-parity"></a>

Sí, tienen paridad de características.

Algunas de las principales diferencias notables entre las dos versiones incluyen las siguientes:
+ Las definiciones de recursos personalizadas (CRD) utilizadas por los operadores de SageMaker IA basados en ACK para Kubernetes siguen la definición de la AWS API, por lo que son incompatibles con las especificaciones de recursos personalizados de los operadores de IA para Kubernetes en su versión original. SageMaker Consulte la información del [CRDs](https://github.com/aws-controllers-k8s/sagemaker-controller/tree/main/helm/crds)nuevo controlador o utilice la guía de migración para adoptar los recursos y utilizar el nuevo controlador. 
+ La `Hosting Autoscaling` política ya no forma parte de los nuevos operadores de SageMaker IA para Kubernetes y se ha migrado al controlador ACK de escalado [automático de aplicaciones](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). [Para aprender a usar el controlador de escalado automático de la aplicación para configurar el escalado automático en los puntos finales de SageMaker IA, sigue este ejemplo de escalado automático.](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) 
+ El recurso `HostingDeployment` se utilizó para crear modelos, configuraciones de puntos de conexión y puntos de conexión en una CRD. Los nuevos operadores de SageMaker IA para Kubernetes tienen un CRD independiente para cada uno de estos recursos. 

# SageMaker Componentes de IA para tuberías de Kubeflow
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Con los componentes de SageMaker IA para Kubeflow Pipelines, puedes crear y supervisar trabajos nativos de entrenamiento, ajuste, implementación de terminales y transformación por lotes de SageMaker IA desde tus canalizaciones de Kubeflow. Al ejecutar las tareas de Kubeflow Pipeline con SageMaker IA, puedes trasladar las tareas de procesamiento y formación de datos del clúster de Kubernetes al servicio gestionado optimizado para el aprendizaje automático de la IA. SageMaker En este documento se presupone tener conocimientos previos de Kubernetes y Kubeflow. 

**Topics**
+ [¿Qué son las canalizaciones de Kubeflow?](#what-is-kubeflow-pipelines)
+ [¿Qué son los componentes de una canalización de Kubeflow?](#kubeflow-pipeline-components)
+ [¿Por qué usar componentes de SageMaker IA para las canalizaciones de Kubeflow?](#why-use-sagemaker-components)
+ [SageMaker Componentes de IA para las versiones de Kubeflow Pipelines](#sagemaker-components-versions)
+ [Lista de componentes de SageMaker IA para las canalizaciones de Kubeflow](#sagemaker-components-list)
+ [Permisos de IAM](#iam-permissions)
+ [Conversión de canalizaciones para usar IA SageMaker](#converting-pipelines-to-use-amazon-sagemaker)
+ [Instalar canalizaciones de Kubeflow](kubernetes-sagemaker-components-install.md)
+ [Usa componentes de IA SageMaker](kubernetes-sagemaker-components-tutorials.md)

## ¿Qué son las canalizaciones de Kubeflow?
<a name="what-is-kubeflow-pipelines"></a>

Las canalizaciones de Kubeflow (KFP) son una plataforma para crear e implementar flujos de trabajo de machine learning (ML) portátiles y escalables basados en contenedores de Docker. La plataforma de canalizaciones de Kubeflow consta de lo siguiente:
+ Una interfaz de usuario (UI) para administrar y rastrear experimentos, trabajos y ejecuciones. 
+ Un motor (Argo) para programar flujos de trabajo de ML de varios pasos.
+ Un SDK para definir y manipular canalizaciones y componentes.
+ Cuadernos para interactuar con el sistema mediante el SDK.

Una canalización es una descripción de un flujo de trabajo de ML que se expresa como un [gráfico acíclico dirigido](https://www.kubeflow.org/docs/pipelines/concepts/graph/). [Cada paso del flujo de trabajo se expresa como un componente de Kubeflow Pipeline, que es un módulo.](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/) AWS SDK para Python (Boto3) 

Para obtener más información sobre las canalizaciones de Kubeflow, consulte la [documentación de las canalizaciones de Kubeflow](https://www.kubeflow.org/docs/pipelines/). 

## ¿Qué son los componentes de una canalización de Kubeflow?
<a name="kubeflow-pipeline-components"></a>

Un componente de canalización de Kubeflow es un conjunto de códigos que se utiliza para ejecutar un paso de una canalización de Kubeflow. Los componentes se representan mediante un módulo de Python integrado en una imagen de Docker. Cuando se ejecuta la canalización, se crea una instancia del contenedor del componente en uno de los nodos de trabajo del clúster de Kubernetes que ejecuta Kubeflow, y se ejecuta su lógica. Los componentes de la canalización pueden leer las salidas de los componentes anteriores y crear salidas que el siguiente componente de la canalización puede consumir. Estos componentes facilitan y agilizan la creación de canalizaciones para entornos de experimentación y producción sin tener que interactuar con la infraestructura subyacente de Kubernetes.

Puedes usar componentes de SageMaker IA en tu canalización de Kubeflow. En lugar de encapsular la lógica en un contenedor personalizado, basta con cargar los componentes y describir la canalización mediante el SDK de las canalizaciones de Kubeflow. Cuando la canalización se ejecuta, tus instrucciones se traducen en una tarea o implementación de SageMaker IA. A continuación, la carga de trabajo se ejecuta en la infraestructura totalmente gestionada de la SageMaker IA. 

## ¿Por qué usar componentes de SageMaker IA para las canalizaciones de Kubeflow?
<a name="why-use-sagemaker-components"></a>

SageMaker Los componentes de IA para Kubeflow Pipelines ofrecen una alternativa a las tareas que requieren un uso intensivo de cómputo a partir de la IA. SageMaker Los componentes integran la SageMaker IA con la portabilidad y la organización de Kubeflow Pipelines. Con los componentes de SageMaker IA para Kubeflow Pipelines, puedes crear y supervisar tus recursos de SageMaker IA como parte de un flujo de trabajo de Kubeflow Pipelines. Cada uno de los trabajos en proceso se ejecuta con SageMaker IA y no con el clúster local de Kubernetes, lo que te permite aprovechar las principales funciones de la SageMaker IA, como el etiquetado de datos, el ajuste de hiperparámetros a gran escala y los trabajos de formación distribuidos, o el despliegue de modelos escalables y seguros con un solo clic. Los parámetros del trabajo, el estado, los registros y los resultados de la SageMaker IA siguen siendo accesibles desde la interfaz de usuario de Kubeflow Pipelines. 

Los componentes de SageMaker IA integran las principales funciones de la SageMaker IA en sus flujos de trabajo de aprendizaje automático, desde la preparación de datos hasta la creación, el entrenamiento y la implementación de modelos de aprendizaje automático. Puede crear una canalización de Kubeflow creada íntegramente con estos componentes o integrar componentes individuales en su flujo de trabajo según sea necesario. Los componentes están disponibles en una o dos versiones. Cada versión de un componente utiliza un backend diferente. Para obtener más información acerca de las versiones, consulte [SageMaker Componentes de IA para las versiones de Kubeflow Pipelines](#sagemaker-components-versions).

El uso de componentes de SageMaker IA para Kubeflow Pipelines no conlleva ningún cargo adicional. Se le cobrará por cualquier recurso de SageMaker IA que utilice a través de estos componentes.

## SageMaker Componentes de IA para las versiones de Kubeflow Pipelines
<a name="sagemaker-components-versions"></a>

SageMaker Los componentes de IA para Kubeflow Pipelines vienen en dos versiones. Cada versión utiliza un backend diferente para crear y gestionar los recursos de la IA. SageMaker 
+ **[Los componentes de SageMaker IA de la versión 1 de Kubeflow Pipelines (v1.x o inferior) utilizan Boto3 () como backend.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)**AWS SDK para Python (Boto3)
+ [La versión 2 (v2.0.0-alpha2 y versiones posteriores) de AI Components for Kubeflow Pipelines utiliza SageMaker AI Operator for Kubernetes (ACK). SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) 

  AWS [introdujo ACK para facilitar una forma nativa de Kubernetes de gestionar los recursos de la nube.](https://aws-controllers-k8s.github.io/community/) AWS ACK incluye un conjunto de controladores AWS específicos para cada servicio, uno de los cuales es el controlador de IA. SageMaker El controlador de SageMaker IA facilita que los desarrolladores de aprendizaje automático y los científicos de datos utilicen Kubernetes como plano de control para entrenar, ajustar e implementar modelos de aprendizaje automático (ML) en la IA. SageMaker Para obtener más información, consulte Operadores de [SageMaker IA](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) para Kubernetes 

Se admiten ambas versiones de los componentes de SageMaker IA para Kubeflow Pipelines. Sin embargo, la versión 2 ofrece algunas ventajas adicionales. En concreto, ofrece: 

1. Una experiencia coherente para gestionar tus recursos de SageMaker IA desde cualquier aplicación, ya sea que utilices canalizaciones de Kubeflow o la CLI (`kubectl`) de Kubernetes u otras aplicaciones de Kubeflow, como Notebooks. 

1. La flexibilidad necesaria para gestionar y supervisar tus SageMaker recursos de IA fuera del flujo de trabajo de Kubeflow Pipeline. 

1. No tendrás tiempo de configuración para usar los componentes de SageMaker IA si implementaste el [Kubeflow completo en](https://awslabs.github.io/kubeflow-manifests/docs/about/) el momento del AWS lanzamiento, ya que el Operador de SageMaker IA forma parte de su despliegue. 

## Lista de componentes de SageMaker IA para las canalizaciones de Kubeflow
<a name="sagemaker-components-list"></a>

La siguiente es una lista de todos los componentes de SageMaker IA para Kubeflow Pipelines y sus versiones disponibles. También puedes encontrar todos los [componentes de SageMaker IA para Kubeflow](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) Pipelines en. GitHub

**nota**  
Recomendamos a los usuarios que utilicen la versión 2 de un componente de SageMaker IA siempre que esté disponible.

### Componentes Ground Truth
<a name="ground-truth-components"></a>
+ **Ground Truth**

  El componente Ground Truth le permite enviar trabajos de etiquetado de SageMaker AI Ground Truth directamente desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Workteam**

  El componente Workteam te permite crear trabajos de SageMaker IA para equipos de trabajo privados directamente desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de procesamiento de datos
<a name="data-processing-components"></a>
+ **Procesando**

  El componente de procesamiento te permite enviar trabajos de procesamiento a SageMaker AI directamente desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de entrenamiento
<a name="training-components"></a>
+ **Entrenamiento**

  El componente de formación te permite enviar trabajos de SageMaker formación directamente desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Optimización de hiperparámetros**

  El componente de optimización de hiperparámetros te permite enviar trabajos de ajuste de hiperparámetros a SageMaker AI directamente desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de inferencias
<a name="inference-components-kfp"></a>
+ **Implementación de alojamiento**

  Los componentes de alojamiento permiten implementar un modelo mediante servicios de alojamiento de SageMaker IA desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Transformación por lotes**

  El componente Batch Transform te permite ejecutar trabajos de inferencia para un conjunto de datos completo en SageMaker IA desde un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Monitor de modelos**

  Los componentes de Model Monitor le permiten monitorear la calidad de los modelos de aprendizaje automático de SageMaker IA en producción a partir de un flujo de trabajo de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## Permisos de IAM
<a name="iam-permissions"></a>

La implementación de Kubeflow Pipelines con componentes de SageMaker IA requiere los siguientes tres niveles de autenticación: 
+ Un rol de IAM que otorga a su nodo de puerta de enlace (que puede ser su equipo local o una instancia remota) acceso al clúster de Amazon Elastic Kubernetes Service (Amazon EKS).

  El usuario que accede al nodo de puerta de enlace asume este rol para:
  + Crear un clúster de Amazon EKS e instalar KFP.
  + Crear roles de IAM.
  + Crear buckets de Amazon S3 para sus datos de entrada de muestra.

  El rol requiere los siguientes permisos:
  + CloudWatchLogsFullAccess 
  + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFullAcceso
  + Amazon S3 FullAccess
  + Amazon EC2 FullAccess
  + EKSAdminPolítica de Amazon (cree esta política con el esquema de los ejemplos de [políticas basadas en la identidad de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 
+ Una función de ejecución de la IAM de Kubernetes asumida por los módulos de canalización de Kubernetes (**kfp-example-pod-role**) o el operador de IA para el pod de controladores de Kubernetes para acceder a la SageMaker IA. SageMaker Esta función se utiliza para crear y supervisar trabajos de IA desde Kubernetes. SageMaker 

  El rol requiere el siguiente permiso:
  + AmazonSageMakerFullAccess 

  Puede limitar los permisos a los pods de control y KFP creando y asociando su propia política personalizada.
+ Una función de ejecución de IAM de SageMaker IA que asumen los trabajos de SageMaker IA para acceder a AWS recursos como Amazon S3 o Amazon ECR (**kfp-example-sagemaker-execution-role**).

  SageMaker Los trabajos de IA utilizan esta función para:
  + Acceda a los recursos de SageMaker IA
  + Ingresar datos desde Amazon S3.
  + Guardar su modelo de salida en Amazon S3.

  El rol requiere los siguientes permisos:
  + AmazonSageMakerFullAccess 
  + Amazon S3 FullAccess 

## Conversión de canalizaciones para usar IA SageMaker
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

Para convertir una canalización existente para usar SageMaker IA, puedes portar tus contenedores genéricos de [procesamiento de Python y contenedores](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html) [de entrenamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html). Si utilizas la SageMaker IA para realizar inferencias, también debes adjuntar los permisos de IAM a tu clúster y convertir un artefacto en un modelo.

# Instalar canalizaciones de Kubeflow
<a name="kubernetes-sagemaker-components-install"></a>

Las [canalizaciones de Kubeflow (KFP)](https://www.kubeflow.org/docs/components/pipelines/v2/introduction/) son el componente de orquestación de las canalizaciones de Kubeflow.

Puede implementar las canalizaciones de Kubeflow (KFP) en un Amazon Elastic Kubernetes Service (Amazon EKS) existente o crear un nuevo clúster de Amazon EKS. Utilice un nodo de puerta de enlace para interactuar con el clúster. El nodo de puerta de enlace puede ser su equipo local o una instancia de Amazon EC2.

En la siguiente sección, se explican los pasos necesarios para instalar y configurar estos recursos.

**Topics**
+ [Elegir una opción de instalación](#choose-install-option)
+ [Configura los permisos de tu canalización para acceder a la IA SageMaker](#configure-permissions-for-pipeline)
+ [Acceder a la interfaz de usuario de KFP (panel de Kubeflow)](#access-the-kfp-ui)

## Elegir una opción de instalación
<a name="choose-install-option"></a>

Kubeflow Pipelines está disponible como un componente principal de la distribución completa de Kubeflow en una instalación independiente o como una instalación independiente. AWS 

Seleccione la opción que se aplique a su caso de uso:

1. [Kubeflow completo en el momento de la implementación AWS](#full-kubeflow-deployment)

   Para usar otros componentes de Kubeflow además de las canalizaciones de Kubeflow, elija la implementación completa de [distribución de AWS de Kubeflow](https://awslabs.github.io/kubeflow-manifests). 

1. [Implementación independiente de canalizaciones de Kubeflow](#kubeflow-pipelines-standalone)

   Para usar las canalizaciones de Kubeflow sin los demás componentes de Kubeflow, instale las canalizaciones de Kubeflow de forma independiente. 

### Kubeflow completo en el momento de la implementación AWS
<a name="full-kubeflow-deployment"></a>

Para instalar la versión completa de Kubeflow AWS, elige la opción de implementación básica en la [guía de implementación de Kubeflow on AWS](https://awslabs.github.io/kubeflow-manifests/docs/deployment/) o cualquier otra opción de implementación que admita integraciones con varios servicios ( AWS Amazon S3, Amazon RDS, Amazon Cognito).

### Implementación independiente de canalizaciones de Kubeflow
<a name="kubeflow-pipelines-standalone"></a>

En esta sección se supone que el usuario tiene permisos para crear roles y definir políticas para el rol.

#### Configurar un nodo de puerta de enlace
<a name="set-up-a-gateway-node"></a>

Puede utilizar su equipo local o una instancia de Amazon EC2 como nodo de puerta de enlace. Se utiliza un nodo de puerta de enlace para crear un clúster de Amazon EKS y acceder a la interfaz de usuario de las canalizaciones de Kubeflow. 

Realice los siguientes pasos para configurar su nodo. 

1. 

**Cree un nodo de puerta de enlace.**

   Puede utilizar una instancia de Amazon EC2 existente o crear una nueva instancia con la versión más reciente de DLAMI de Ubuntu 18.04 según los pasos que se indican en [Launching and Configuring a DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html).

1. 

**Cree un rol de IAM para permitir que su nodo de puerta de enlace acceda a los recursos. AWS**

   Cree un rol de IAM con permisos para los siguientes recursos: CloudWatch,, IAM CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.

   Adjunte las políticas siguientes al rol de IAM:
   + CloudWatchLogsFullAccess 
   + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess)
   + IAMFullAcceda 
   + Amazon S3 FullAccess 
   + Amazon EC2 FullAccess 
   + EKSAdminPolítica de Amazon (cree esta política con el esquema de los ejemplos de [políticas basadas en la identidad de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 

   Para obtener información sobre cómo permisos de IAM a un rol de IAM, consulte [Adición y eliminación de permisos de identidad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

1. 

**Instale las siguientes herramientas y clientes.**

   Instale y configure las siguientes herramientas y recursos en su nodo de puerta de enlace para acceder al clúster de Amazon EKS y a la interfaz de usuario (UI) de KFP. 
   + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html): La herramienta de línea de comandos para trabajar con AWS los servicios. Para obtener información sobre la configuración de AWS CLI , consulte [Configuración del AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). 
   + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html)versión 0.1.31 y versiones posteriores: herramienta que utiliza las credenciales de AWS IAM para autenticarse en un clúster de Kubernetes.
   + [https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html), versión superior a 0.15: la herramienta de línea de comandos para trabajar con clústeres de Amazon EKS.
   + [https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl): la herramienta de línea de comandos para trabajar con clústeres de Kubernetes. La versión debe coincidir con su versión de Kubernetes dentro de una versión secundaria.
   + [https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/).

     ```
     pip install boto3
     ```

#### Configurar un clúster de Amazon EKS
<a name="set-up-anamazon-eks-cluster"></a>

1. Si no tiene un clúster de Amazon EKS existente, ejecute los siguientes pasos desde la línea de comandos de su nodo de puerta de enlace; de lo contrario, omita este paso.

   1. Ejecute el siguiente comando para crear un clúster de Amazon EKS con la versión 1.17 o superior. Reemplace `<clustername>` por el nombre del clúster. 

      ```
      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
      ```

   1. Cuando se complete la creación del clúster, asegúrese de tener acceso a él mediante una lista de los nodos del clúster. 

      ```
      kubectl get nodes
      ```

1. Asegúrese de que el contexto `kubectl` actual apunta al clúster con el siguiente comando. El contexto actual se marca con un asterisco (\$1) en la salida.

   ```
   kubectl config get-contexts
   
   CURRENT NAME     CLUSTER
   *   <username>@<clustername>.us-east-1.eksctl.io   <clustername>.us-east-1.eksctl.io
   ```

1. Si el clúster deseado no está configurado como el predeterminado actual, actualícelo con el siguiente comando. 

   ```
   aws eks update-kubeconfig --name <clustername> --region us-east-1
   ```

#### Instalar canalizaciones de Kubeflow
<a name="install-kubeflow-pipelines"></a>

Ejecute los siguientes pasos desde la terminal de su nodo de puerta de enlace para instalar canalizaciones de Kubeflow en su clúster.

1. Instale todos los [componentes cert-manager](https://cert-manager.io/docs/installation/kubectl/).

   ```
   kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
   ```

1. Instale las canalizaciones de Kubeflow.

   ```
   export PIPELINE_VERSION=2.0.0-alpha.5
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION"
   kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
   ```

1. Asegúrese de que el servicio de canalizaciones de Kubeflow y otros recursos relacionados funcionen.

   ```
   kubectl -n kubeflow get all | grep pipeline
   ```

   El resultado debería tener el siguiente aspecto.

   ```
   pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d
   pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d
   pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d
   pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d
   pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d
   pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d
   service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d
   service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d
   service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d
   deployment.apps/ml-pipeline                       1/1     1            1           2d
   deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d
   deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d
   deployment.apps/ml-pipeline-ui                    1/1     1            1           2d
   deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d
   deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d
   replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d
   replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d
   replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d
   replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d
   replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d
   replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d
   ```

## Configura los permisos de tu canalización para acceder a la IA SageMaker
<a name="configure-permissions-for-pipeline"></a>

En esta sección, crearás una función de ejecución de IAM que permita a los pods de Kubeflow Pipeline acceder a SageMaker los servicios de IA. 

### Configuración de los componentes de SageMaker IA, versión 2
<a name="permissions-for-SM-v2"></a>

Para ejecutar la versión 2 de SageMaker AI Components para Kubeflow Pipelines, debes instalar [SageMaker AI Operator para Kubernetes y configurar el control de acceso basado en roles (RBAC) para](https://github.com/aws-controllers-k8s/sagemaker-controller) que los pods de Kubeflow Pipelines puedan crear recursos de IA personalizados en tu clúster de Kubernetes. SageMaker 

**importante**  
Siga esta sección si va a utilizar la implementación independiente de las canalizaciones de Kubeflow. Si utilizas la AWS distribución de Kubeflow en la versión 1.6.0-aws-b1.0.0 o superior, los componentes de IA de la versión 2 ya están configurados. SageMaker 

1. Instala SageMaker AI Operator para Kubernetes para usar los componentes de IA de la versión 2. SageMaker 

   Siga la sección de *configuración* del [tutorial Machine Learning with ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup).

1. Configure los permisos RBAC para el rol de ejecución (cuenta de servicio) que utilizan los pods de las canalizaciones de Kubeflow. En la implementación independiente de las canalizaciones de Kubeflow, las ejecuciones de la canalización se ejecutan en el espacio de nombres `kubeflow` mediante la cuenta de servicio `pipeline-runner`.

   1. Cree una [RoleBinding](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example)que dé permiso a la cuenta de servicio para administrar los recursos personalizados de SageMaker IA.

      ```
      cat > manage_sagemaker_cr.yaml <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
      name: manage-sagemaker-cr  
      namespace: kubeflow
      subjects:
      - kind: ServiceAccount
      name: pipeline-runner
      namespace: kubeflow
      roleRef:
      kind: ClusterRole
      name: ack-sagemaker-controller 
      apiGroup: rbac.authorization.k8s.io
      EOF
      ```

      ```
      kubectl apply -f manage_sagemaker_cr.yaml
      ```

   1. Asegúrese de que el enlace de roles se haya creado ejecutando:

      ```
      kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
      ```

### Configuración de los componentes de SageMaker IA, versión 1
<a name="permissions-for-SM-v1"></a>

Para ejecutar la versión 1 de SageMaker AI Components para Kubeflow Pipelines, los pods de Kubeflow Pipeline necesitan acceso a la IA. SageMaker 

**importante**  
Sigue esta sección tanto si utilizas el Kubeflow completo durante la implementación como si utilizas Kubeflow Pilepines de forma independiente. AWS 

Para crear una función de ejecución de IAM que permita a los módulos de canalización de Kubeflow acceder a la IA, sigue estos pasos: SageMaker 

1. Exporta el nombre del clúster (p. ej. *my-cluster-name*) y la región del clúster (p. ej., *us-east-1*).

   ```
   export CLUSTER_NAME=my-cluster-name
   export CLUSTER_REGION=us-east-1
   ```

1. Exporte el espacio de nombres y el nombre de la cuenta de servicio a su instalación.
   + Para obtener el Kubeflow completo durante la AWS instalación, exporta tu perfil `namespace` (por ejemplo *kubeflow-user-example-com*) y el editor *predeterminado como cuenta de servicio.*

     ```
     export NAMESPACE=kubeflow-user-example-com
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor
     ```
   + Para la implementación independiente de las canalizaciones, exporte *kubeflow* como el `namespace` y *pipeline-runner* como la cuenta de servicio.

     ```
     export NAMESPACE=kubeflow
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
     ```

1. Cree un [proveedor de OIDC de IAM para el clúster de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) con el siguiente comando.

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
               --region ${CLUSTER_REGION} --approve
   ```

1. Cree una función de ejecución de IAM para que los pods de KFP accedan AWS a los servicios (AI,). SageMaker CloudWatch

   ```
   eksctl create iamserviceaccount \
   --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \
   --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \
   --region ${CLUSTER_REGION} \
   --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \
   --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
   --override-existing-serviceaccounts \
   --approve
   ```

[Una vez que sus permisos de canalización estén configurados para acceder a la versión 1 de SageMaker AI Components, siga la guía de componentes de SageMaker IA para canalizaciones de Kubeflow que se encuentra en la documentación de Kubeflow on. AWS](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/)

## Acceder a la interfaz de usuario de KFP (panel de Kubeflow)
<a name="access-the-kfp-ui"></a>

La interfaz de usuario de las canalizaciones de Kubeflow se utiliza para administrar y realizar un seguimiento de los experimentos, los trabajos y las ejecuciones en el clúster. Para obtener instrucciones sobre cómo acceder a la interfaz de usuario de las canalizaciones de Kubeflow desde su nodo de puerta de enlace, siga los pasos correspondientes a la opción de implementación en esta sección.

### Kubeflow completo en el momento de la implementación AWS
<a name="access-kfp-ui-full-kubeflow-deployment"></a>

Sigue las instrucciones del [AWS sitio web de Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/deployment/connect-kubeflow-dashboard/) para conectarte al panel de control de Kubeflow y acceder a la pestaña de canalizaciones.

### Implementación independiente de canalizaciones de Kubeflow
<a name="access-kfp-ui-standalone-kubeflow-pipelines-deployment"></a>

Use el reenvío de puertos para acceder a la interfaz de usuario de canalizaciones de Kubeflow desde su nodo de puerta de enlace según estos pasos.

#### Configurar el reenvío de puertos al servicio de interfaz de usuario de KFP
<a name="set-up-port-forwarding-to-the-kfp-ui-service"></a>

Ejecute el siguiente comando desde la línea de comandos de su nodo de puerta de enlace.

1. Compruebe que el servicio de interfaz de usuario de KFP se ejecute mediante el siguiente comando.

   ```
   kubectl -n kubeflow get service ml-pipeline-ui
   
   NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
   ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
   ```

1. Ejecute el siguiente comando para configurar el reenvío de puertos al servicio de interfaz de usuario de KFP. Esto reenvía la interfaz de usuario de KFP al puerto 8080 de su nodo de puerta de enlace y le permite acceder a la interfaz de usuario de KFP desde su navegador. 

   ```
   kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
   ```

   El reenvío de puertos desde su equipo remoto se interrumpe si no hay actividad. Vuelva a ejecutar este comando si su panel no puede obtener registros o actualizaciones. Si los comandos devuelven un error, asegúrese de que no haya ningún proceso en ejecución en el puerto que está intentando utilizar. 

#### Acceder al servicio de interfaz de usuario de KFP
<a name="set-up-port-forwarding-to-the-kfp-ui-service-access"></a>

El método de acceso a la interfaz de usuario de KFP depende del tipo de nodo de la puerta de enlace.
+ Equipo local como nodo de puerta de enlace:

  1. Acceda al panel de su navegador de la siguiente manera: 

     ```
     http://localhost:8080
     ```

  1. Seleccione **Canalizaciones** para acceder a la interfaz de usuario de las canalizaciones. 
+ Instancia de Amazon EC2 como nodo de puerta de enlace:

  1. Debe configurar un túnel SSH en su instancia de Amazon EC2 para acceder al panel de Kubeflow desde el navegador de su equipo local. 

     Desde una nueva sesión de terminal en su equipo local, ejecute lo siguiente. Reemplace `<public-DNS-of-gateway-node>` por la dirección IP de la instancia que se encuentra en la consola de Amazon EC2. También puede usar el DNS público. Reemplace `<path_to_key>` por la ruta de acceso a la clave pem utilizada para acceder al nodo de puerta de enlace. 

     ```
     public_DNS_address=<public-DNS-of-gateway-node>
     key=<path_to_key>
     
     on Ubuntu:
     ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address}
     
     or on Amazon Linux:
     ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
     ```

  1. Acceda al panel de su navegador. 

     ```
     http://localhost:9000
     ```

  1. Elija **Canalizaciones** para acceder a la interfaz de usuario de KFP. 

#### (Opcional) Conceda acceso a las instancias de notebook de SageMaker IA a Amazon EKS y ejecute los pipelines de KFP desde su notebook.
<a name="add-access-to-additional-iam-users-or-roles"></a>

Una instancia de SageMaker notebook es una instancia de cómputo de Amazon EC2 totalmente gestionada que ejecuta la aplicación Jupyter Notebook. Puede usar una instancia de cuaderno para crear y administrar cuadernos de Jupyter y, a continuación, definir, compilar, implementar y ejecutar sus canalizaciones de KFP mediante AWS SDK para Python (Boto3) o la CLI de KFP. 

1. Siga los pasos que se indican en [Crear una instancia de SageMaker Notebook para crear su instancia](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) de Notebook y, a continuación, adjunte la `S3FullAccess` política a su función de ejecución de IAM.

1. Desde la línea de comandos del nodo de puerta de enlace, ejecute el siguiente comando para recuperar el ARN del rol de IAM de la instancia de cuaderno que creó. Reemplace `<instance-name>` por el nombre de la instancia.

   ```
   aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'
   ```

   Este comando muestra el ARN del rol de IAM en el formato `arn:aws:iam::<account-id>:role/<role-name>`. Tome nota de este ARN.

1. Ejecute este comando para adjuntar las siguientes políticas (Amazon AmazonSageMakerFullAccess EKSWorkerNodePolicy, AmazonS3FullAccess) a esta función de IAM. Reemplace el `<role-name>` por el `<role-name>` de su ARN. 

   ```
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
   ```

1. Los clústeres de Amazon EKS utilizan roles de IAM para controlar el acceso al clúster. Las reglas se implementan en un mapa de configuración denominado `aws-auth`. `eksctl` proporciona comandos para leer y editar el mapa de configuración `aws-auth`. Solo los usuarios que tienen acceso al clúster pueden editar este mapa de configuración.

   `system:masters` es uno de los grupos de usuarios predeterminados con permisos de superusuario para el clúster. Agregue su usuario a este grupo o cree un grupo con permisos más restrictivos.

1. Implemente el rol en el clúster ejecutando el siguiente comando. Reemplace el `<IAM-Role-arn>` por el ARN del rol de IAM. `<your_username>` puede ser cualquier nombre de usuario único.

   ```
   eksctl create iamidentitymapping \
   --cluster <cluster-name> \
   --arn <IAM-Role-arn> \
   --group system:masters \
   --username <your-username> \
   --region <region>
   ```

1. Abre un cuaderno de Jupyter en tu instancia de SageMaker IA y ejecuta el siguiente comando para asegurarte de que tiene acceso al clúster.

   ```
   aws eks --region <region> update-kubeconfig --name <cluster-name>
   kubectl -n kubeflow get all | grep pipeline
   ```

# Usa componentes de IA SageMaker
<a name="kubernetes-sagemaker-components-tutorials"></a>

En este tutorial, ejecutarás una canalización con componentes de SageMaker IA para Kubeflow Pipelines para entrenar un modelo de clasificación con Kmeans con el conjunto de datos MNIST en IA. SageMaker El flujo de trabajo utiliza Kubeflow Pipelines como orquestador y SageMaker la IA para ejecutar cada paso del flujo de trabajo. El ejemplo se tomó de un [ejemplo de SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/blob/8279abfcc78bad091608a4a7135e50a0bd0ec8bb/sagemaker-python-sdk/1P_kmeans_highlevel/kmeans_mnist.ipynb) existente y se modificó para que funcionara con los componentes de SageMaker IA de Kubeflow Pipelines.

Puede definir su canalización en Python utilizando, a AWS SDK para Python (Boto3) continuación, el panel de control de KFP, la CLI de KFP o Boto3 para compilar, implementar y ejecutar sus flujos de trabajo. El código completo del ejemplo de canalización de clasificación del MNIST está disponible en el [repositorio Github de Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/mnist-kmeans-sagemaker#mnist-classification-with-kmeans). Para usarlo, clone los archivos de Python en su nodo de puerta de enlace.

Puedes encontrar más ejemplos de canalizaciones de [ SageMaker AI Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples) en. GitHub [Para obtener información sobre los componentes utilizados, consulta el repositorio de Pipelines. KubeFlow GitHub ](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker)

Para ejecutar el ejemplo del proceso de clasificación, cree una función de ejecución de SageMaker IA IAM que conceda a su trabajo de formación el permiso para acceder a AWS los recursos y, a continuación, continúe con los pasos correspondientes a su opción de despliegue.

## Cree un rol de ejecución de SageMaker IA
<a name="create-an-amazonsagemaker-execution-role"></a>

La función de `kfp-example-sagemaker-execution-role` IAM es una función de tiempo de ejecución que asumen los trabajos de SageMaker IA para acceder a AWS los recursos. En el siguiente comando, se crea una función de ejecución de IAM denominada`kfp-example-sagemaker-execution-role`, se adjuntan dos políticas gestionadas (AmazonSageMakerFullAccessAmazonS3FullAccess) y se crea una relación de confianza con la SageMaker IA para conceder a los trabajos de SageMaker IA el acceso a esos recursos. AWS 

Proporcionará este rol como parámetro de entrada al ejecutar la canalización.

Ejecute el siguiente comando para crear el rol. Tome nota del ARN que se devuelve como su salida.

```
SAGEMAKER_EXECUTION_ROLE_NAME=kfp-example-sagemaker-execution-role

TRUST="{ \"Version\": \"2012-10-17		 	 	 \", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"sagemaker.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }"
aws iam create-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --assume-role-policy-document "$TRUST"
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess

aws iam get-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --output text --query 'Role.Arn'
```

## Kubeflow completo en el momento de la implementación AWS
<a name="run-pipelines-on-full-kubeflow-deployment"></a>

Siga las instrucciones del [tutorial SageMaker Training Pipeline para la clasificación del MNIST](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/) con K-Means.

## Implementación independiente de canalizaciones de Kubeflow
<a name="run-pipelines-on-standalone-kubeflow-pipelines-deployment"></a>

### Preparación de conjuntos de datos
<a name="prepare-datasets"></a>

Para ejecutar las canalizaciones, debe cargar el script de preprocesamiento de extracción de datos en un bucket de Amazon S3. Este bucket y todos los recursos de este ejemplo deben estar ubicados en la región `us-east-1`. Para obtener información sobre la creación de un bucket, consulte la sección de [creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).

Desde la carpeta `mnist-kmeans-sagemaker` del repositorio de Kubeflow que clonó en su nodo de puerta de enlace, ejecute el siguiente comando para cargar el archivo `kmeans_preprocessing.py` en su bucket de Amazon S3. Cambie `<bucket-name>` por el nombre de su bucket de Amazon S3.

```
aws s3 cp mnist-kmeans-sagemaker/kmeans_preprocessing.py s3://<bucket-name>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
```

### Compilación e implementación de la canalización
<a name="compile-and-deploy-your-pipeline"></a>

Tras definir la canalización, debe compilarla en una representación intermedia antes de enviarla al servicio de canalizaciones de Kubeflow de su clúster. La representación intermedia es una especificación de flujo de trabajo en forma de archivo YAML comprimido en un archivo tar.gz. Necesitará el SDK de KFP para compilar la canalización.

#### Instalación del SDK de KFP
<a name="install-kfp-sdk"></a>

Ejecute lo siguiente desde la línea de comandos de su nodo de puerta de enlace:

1. Instale el SDK de KFP según las instrucciones de la [documentación sobre las canalizaciones de Kubeflow](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/).

1. Verifique que el SDK de KFP esté instalado mediante el siguiente comando:

   ```
   pip show kfp
   ```

1. Compruebe que `dsl-compile` se ha instalado correctamente de la siguiente manera:

   ```
   which dsl-compile
   ```

#### Compilación de la canalización
<a name="compile-your-pipeline"></a>

Tienes tres opciones para interactuar con las canalizaciones de Kubeflow: la interfaz de usuario de KFP, la CLI de KFP o el SDK de KFP. Las siguientes secciones ilustran el flujo de trabajo mediante la interfaz de usuario y la CLI de KFP.

Complete los siguientes pasos en el nodo de puerta de enlace.

1. Modifique el archivo Python con el nombre del bucket de Amazon S3 y el ARN del rol de IAM.

1. Usa el comando `dsl-compile` de la línea de comandos para compilar la canalización de la siguiente manera. Reemplace `<path-to-python-file>` por la ruta a la canalización y `<path-to-output>` por la ubicación en la que quiere que esté el archivo tar.gz.

   ```
   dsl-compile --py <path-to-python-file> --output <path-to-output>
   ```

#### Carga y ejecución de la canalización mediante la CLI de KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-cli"></a>

Complete los pasos siguientes desde la línea de comandos de su nodo de la puerta de enlace. KFP organiza las ejecuciones de su canalización como experimentos. Tiene la opción de especificar un nombre para el experimento. Si no especifica ninguno, la ejecución aparecerá en la lista de experimentos **predeterminados**.

1. Cargue su canalización de la siguiente manera:

   ```
   kfp pipeline upload --pipeline-name <pipeline-name> <path-to-output-tar.gz>
   ```

   El resultado debería tener el siguiente aspecto. Tome nota del `ID` de la canalización.

   ```
   Pipeline 29c3ff21-49f5-4dfe-94f6-618c0e2420fe has been submitted
   
   Pipeline Details
   ------------------
   ID           29c3ff21-49f5-4dfe-94f6-618c0e2420fe
   Name         sm-pipeline
   Description
   Uploaded at  2020-04-30T20:22:39+00:00
   ...
   ...
   ```

1. Cree una ejecución mediante el comando siguiente. El comando de ejecución de la CLI de KFP actualmente no admite la especificación de parámetros de entrada al crear la ejecución. Debe actualizar los parámetros en el archivo de AWS SDK para Python (Boto3) canalización antes de compilarlos. Reemplace `<experiment-name>` y `<job-name>` por cualquier nombre. Reemplace `<pipeline-id>` por el ID de la canalización enviada. Reemplace `<your-role-arn>` por el ARN del `kfp-example-pod-role`. Reemplace `<your-bucket-name>` por el nombre del bucket de Amazon S3 que ha creado. 

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --pipeline-id <pipeline-id> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   También puede enviar una ejecución directamente mediante el paquete de canalización compilado creado como la salida del comando `dsl-compile`.

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --package-file <path-to-output> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   El resultado debería tener el siguiente aspecto:

   ```
   Creating experiment aws.
   Run 95084a2c-f18d-4b77-a9da-eba00bf01e63 is submitted
   +--------------------------------------+--------+----------+---------------------------+
   | run id                               | name   | status   | created at                |
   +======================================+========+==========+===========================+
   | 95084a2c-f18d-4b77-a9da-eba00bf01e63 | sm-job |          | 2020-04-30T20:36:41+00:00 |
   +--------------------------------------+--------+----------+---------------------------+
   ```

1. Vaya a la interfaz de usuario para comprobar el progreso del trabajo.

#### Carga y ejecución de la canalización mediante la interfaz de usuario de KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-ui"></a>

1. En el panel izquierdo, elija la pestaña **Canalizaciones**. 

1. **En la esquina superior derecha, selecciona \$1. UploadPipeline** 

1. Ingrese el nombre y la descripción de la canalización. 

1. Elija **Cargar un archivo** e ingrese la ruta al archivo tar.gz que creó mediante la CLI o con AWS SDK para Python (Boto3).

1. En el panel izquierdo, elija la pestaña **Canalizaciones**.

1. Busque la canalización que ha creado.

1. Elija **\$1CreateRun**.

1. Ingrese los parámetros de entrada.

1. Seleccione **Ejecutar**.

### Ejecución de predicciones
<a name="running-predictions"></a>

Una vez implementada la canalización de clasificación, puede ejecutar predicciones de clasificación en el punto de conexión creado por el componente Deploy. Utilice la interfaz de usuario de KFP para comprobar los artefactos de salida de `sagemaker-deploy-model-endpoint_name`. Descargue el archivo.tgz para extraer el nombre del terminal o compruebe la consola de SageMaker IA de la región que utilizó.

#### Configuración de los permisos para ejecutar predicciones
<a name="configure-permissions-to-run-predictions"></a>

Si desea ejecutar predicciones desde su nodo de puerta de enlace, omita esta sección.

**Para usar cualquier otro equipo para ejecutar predicciones, asigne el permiso `sagemaker:InvokeEndpoint` al rol de IAM utilizado por el equipo cliente.**

1. En su nodo de puerta de enlace, ejecute lo siguiente para crear un archivo de política de IAM:

   ```
   cat <<EoF > ./sagemaker-invoke.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "*"
           }
       ]
   }
   EoF
   ```

1. Adjunte la política al rol de IAM del nodo cliente.

   Ejecute el comando siguiente. Reemplace `<your-instance-IAM-role>` por el nombre del rol de IAM. Reemplace `<path-to-sagemaker-invoke-json>` por la ruta al archivo de política que ha creado.

   ```
   aws iam put-role-policy --role-name <your-instance-IAM-role> --policy-name sagemaker-invoke-for-worker --policy-document file://<path-to-sagemaker-invoke-json>
   ```

#### Ejecución de predicciones
<a name="run-predictions"></a>

1. Cree un AWS SDK para Python (Boto3) archivo desde su máquina cliente `mnist-predictions.py` con el nombre siguiente. Reemplace la variable `ENDPOINT_NAME`. El script carga el conjunto de datos MNIST, crea un CSV a partir de esos dígitos y, a continuación, lo envía al punto de conexión para realizar la predicción e imprime los resultados.

   ```
   import boto3
   import gzip
   import io
   import json
   import numpy
   import pickle
   
   ENDPOINT_NAME='<endpoint-name>'
   region = boto3.Session().region_name
   
   # S3 bucket where the original mnist data is downloaded and stored
   downloaded_data_bucket = f"jumpstart-cache-prod-{region}"
   downloaded_data_prefix = "1p-notebooks-datasets/mnist"
   
   # Download the dataset
   s3 = boto3.client("s3")
   s3.download_file(downloaded_data_bucket, f"{downloaded_data_prefix}/mnist.pkl.gz", "mnist.pkl.gz")
   
   # Load the dataset
   with gzip.open('mnist.pkl.gz', 'rb') as f:
       train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
   
   # Simple function to create a csv from our numpy array
   def np2csv(arr):
       csv = io.BytesIO()
       numpy.savetxt(csv, arr, delimiter=',', fmt='%g')
       return csv.getvalue().decode().rstrip()
   
   runtime = boto3.Session(region).client('sagemaker-runtime')
   
   payload = np2csv(train_set[0][30:31])
   
   response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                      ContentType='text/csv',
                                      Body=payload)
   result = json.loads(response['Body'].read().decode())
   print(result)
   ```

1. Ejecute el AWS SDK para Python (Boto3) archivo de la siguiente manera:

   ```
   python mnist-predictions.py
   ```

### Ver resultados y registros
<a name="view-results-and-logs"></a>

Cuando la canalización está en ejecución, puede elegir cualquier componente para comprobar los detalles de la ejecución, como las entradas y las salidas. Aquí se muestran los nombres de los recursos creados.

Si la solicitud de KFP se procesa correctamente y se crea un trabajo de SageMaker IA, los registros de componentes de la interfaz de usuario de KFP proporcionan un enlace al trabajo creado en SageMaker AI. Los CloudWatch registros también se proporcionan si el trabajo se ha creado correctamente. 

Si ejecuta demasiados trabajos de canalización en el mismo clúster, es posible que aparezca un mensaje de error que indique que no tiene suficientes pods disponibles. Para solucionar este problema, inicia sesión en su nodo de puerta de enlace y elimine los pods creados por las canalizaciones que no esté utilizando:

```
kubectl get pods -n kubeflow
kubectl delete pods -n kubeflow <name-of-pipeline-pod>
```

### Limpieza
<a name="cleanup"></a>

Cuando termine con la canalización, tendrá que borrar los recursos.

1. Desde el panel de KFP, para finalizar las ejecuciones de la canalización si no terminan correctamente, elija **Finalizar**.

1. Si la opción **Finalizar** no funciona, inicie sesión en su nodo de puerta de enlace y finalice manualmente todos los pods creados por su canalización, de la siguiente manera: 

   ```
   kubectl get pods -n kubeflow
   kubectl delete pods -n kubeflow <name-of-pipeline-pod>
   ```

1. Con su AWS cuenta, inicie sesión en el servicio de SageMaker IA. Detenga manualmente todos los trabajos de entrenamiento, transformación por lotes y HPO. Elimine los modelos, los buckets de datos y los puntos de conexión para evitar incurrir en cargos adicionales. Poner fin a los oleoductos no detiene los trabajos en la SageMaker IA.

# SageMaker Trabajos de cuaderno
<a name="notebook-auto-run"></a>

Puede usar Amazon SageMaker AI para crear, entrenar e implementar modelos de aprendizaje automático de forma interactiva desde su cuaderno Jupyter en cualquier entorno. JupyterLab Sin embargo, hay varios escenarios en los que puede que desee ejecutar su cuaderno como un trabajo programado y no interactivo. Por ejemplo, es posible que desee crear informes de auditoría periódicos en los que se analicen todos los trabajos de entrenamiento que se realicen durante un período de tiempo determinado y se analice el valor empresarial de implementar esos modelos en la producción. O tal vez desee ampliar un trabajo de ingeniería de características después de probar la lógica de transformación de datos en un pequeño subconjunto de datos. Los casos de uso habituales incluyen:
+ Programar trabajos para supervisar la desviación del modelo
+ Explorar el espacio de parámetros para obtener mejores modelos

En estos escenarios, puede usar SageMaker Notebook Jobs para crear un trabajo no interactivo (que la SageMaker IA ejecuta como un trabajo de formación subyacente) para ejecutarlo a pedido o según un cronograma. SageMaker Notebook Jobs proporciona una interfaz de usuario intuitiva para que puedas programar tus trabajos directamente desde JupyterLab el widget Trabajos de Notebook (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/notebook-schedule.png)) de tu cuaderno. También puede programar sus trabajos con el SDK para Python de SageMaker IA, que ofrece la flexibilidad de programar varios trabajos de cuaderno en un flujo de trabajo en proceso. Puede ejecutar varios cuadernos en paralelo y parametrizar las celdas de los cuadernos para personalizar los parámetros de entrada.

Esta función aprovecha los servicios de Amazon EventBridge, SageMaker Training y Pipelines y está disponible para su uso en su cuaderno Jupyter en cualquiera de los siguientes entornos:
+ Instancias de Studio, Studio Lab, Studio Classic o cuaderno
+ Configuración local, como la máquina local, en la que se ejecuta JupyterLab

**Requisitos previos**

Para programar un trabajo de cuaderno, asegúrese de que cumple los siguientes criterios:
+ Asegúrese de que su cuaderno de Jupyter y cualquier script de inicialización o inicio sean independientes con respecto al código y los paquetes de software. De lo contrario, el trabajo no interactivo podría incurrir en errores.
+ Compruebe [Restricciones y consideraciones](notebook-auto-run-constraints.md) para asegurarse de que ha configurado correctamente su cuaderno de Jupyter, la configuración de red y la configuración del contenedor.
+ Asegúrese de que su cuaderno pueda acceder a los recursos externos necesarios, como los clústeres de Amazon EMR.
+ Si está configurando trabajos del cuaderno en un cuaderno de Jupyter local, complete la instalación. Para obtener instrucciones, consulte [Guía de instalación](scheduled-notebook-installation.md). 
+ Si se conecta a un clúster de Amazon EMR de su cuaderno y desea parametrizar el comando de conexión de Amazon EMR, debe aplicar una solución alternativa mediante variables de entorno para transferir los parámetros. Para obtener más información, consulte [Conexión a un clúster de Amazon EMR desde su cuaderno](scheduled-notebook-connect-emr.md).
+ Si se conecta a un clúster de Amazon EMR mediante la autenticación básica de Kerberos, LDAP o HTTP, debe utilizarla AWS Secrets Manager para pasar sus credenciales de seguridad al comando de conexión de Amazon EMR. Para obtener más información, consulte [Conexión a un clúster de Amazon EMR desde su cuaderno](scheduled-notebook-connect-emr.md).
+ De forma opcional, si desea que la interfaz de usuario cargue previamente un script para que se ejecute al iniciar el cuaderno, el administrador debe instalarlo con una configuración de ciclo de vida (LCC). Para obtener información sobre cómo utilizar un script de LCC, consulte [Customize a Notebook Instance Using a Lifecycle Configuration Script](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).

# Guía de instalación
<a name="scheduled-notebook-installation"></a>

A continuación, se proporciona información sobre lo que necesita instalar para utilizar Notebook Jobs en su entorno. JupyterLab 

**Para Amazon SageMaker Studio y Amazon SageMaker Studio Lab**

Si tu portátil está en Amazon SageMaker Studio o Amazon SageMaker Studio Lab, no necesitas realizar ninguna instalación adicional: SageMaker Notebook Jobs está integrado en la plataforma. Para configurar los permisos necesarios para Studio, consulte [Configuración de políticas y permisos para Studio](scheduled-notebook-policies-studio.md).

**Para los cuadernos de Jupyter locales**

Si desea utilizar SageMaker Notebook Jobs para su JupyterLab entorno local, debe realizar una instalación adicional.

Para instalar SageMaker Notebook Jobs, complete los siguientes pasos:

1. Instale Python 3. Para obtener más información, consulte [Installing Python 3 and Python Packages](https://www.codecademy.com/article/install-python3).

1. Instale JupyterLab la versión 4 o superior. Para obtener más información, consulta la [documentación JupyterLab del SDK](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html).

1. Instale el AWS CLI. Para obtener más información, consulte [Instalar o actualizar la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Instale dos conjuntos de permisos. El usuario de IAM necesita permisos para enviar trabajos a SageMaker AI y, una vez enviados, el propio trabajo del bloc de notas asume una función de IAM que necesita permisos para acceder a los recursos en función de las tareas del trabajo.

   1. Si aún no se ha creado un usuario de IAM, consulte [Creación de un usuario de IAM en su cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

   1. Si aún no ha creado su rol de trabajo del cuaderno, consulte [Creación de un rol para delegar permisos a un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

   1. Adjunte los permisos y la política de confianza necesarios para asociarlos a su usuario y rol. Para obtener step-by-step instrucciones y detalles sobre los permisos, consulte. [Instalación de políticas y permisos para los entornos locales de Jupyter](scheduled-notebook-policies-other.md)

1. Genere AWS las credenciales para el usuario de IAM recién creado y guárdelas en el archivo de credenciales (\$1/.aws/credentials) de su entorno. JupyterLab Puede hacerlo con el comando de la CLI `aws configure`. Para obtener instrucciones, consulte la sección sobre *establecer y ver los ajustes de configuración mediante comandos* en [Opciones de los archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. (opcional) De forma predeterminada, la extensión del programador utiliza una imagen de Docker de SageMaker IA prediseñada con Python 2.0. Cualquier kernel que no sea el predeterminado y que se utilice en el cuaderno debe instalarse en el contenedor. Si desea ejecutar su cuaderno en un contenedor o en una imagen de Docker, debe crear una imagen de Amazon Elastic Container Registry (Amazon ECR). Para obtener información sobre cómo insertar una imagen de Docker en un Amazon ECR, consulte [Inserción de una imagen de Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

1. Añade la JupyterLab extensión para SageMaker Notebook Jobs. Puede añadirlo a su JupyterLab entorno con el comando:`pip install amazon_sagemaker_jupyter_scheduler`. Es posible que deba reiniciar su servidor Jupyter con el comando: `sudo systemctl restart jupyter-server`.

1. Comience JupyterLab con el comando:`jupyter lab`.

1. Compruebe que el widget de trabajos del cuaderno (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/notebook-schedule.png)) aparezca en la barra de tareas de su cuaderno de Jupyter.

# Configuración de políticas y permisos para Studio
<a name="scheduled-notebook-policies-studio"></a>

Deberá instalar las políticas y los permisos adecuados antes de programar la primera ejecución del cuaderno. A continuación, se proporcionan instrucciones para configurar los siguientes permisos:
+ Relaciones de confianza del rol de ejecución de trabajos
+ Permisos de IAM adicionales asociados al rol de ejecución de trabajos
+ (opcional) La política de AWS KMS permisos para usar una clave KMS personalizada

**importante**  
Si su AWS cuenta pertenece a una organización que cuenta con políticas de control de servicios (SCP), sus permisos efectivos son la intersección lógica entre lo que permiten sus políticas de usuario SCPs y rol de IAM y lo que permiten. Por ejemplo, si la SCP de su organización especifica que solo puede acceder a los recursos de `us-east-1` y `us-west-1`, y sus políticas solo le permiten acceder a los recursos de `us-west-1` y`us-west-2`, en última instancia, solo podrá acceder a los recursos de `us-west-1`. Si quieres ejercer todos los permisos permitidos en tus políticas de rol y usuario, las de tu organización SCPs deberían concederte el mismo conjunto de permisos que tus propias políticas de usuario y rol de IAM. Para obtener información acerca de cómo determinar las solicitudes permitidas, consulte [Cómo determinar si se una solicitud se permite o se deniega dentro de una cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Relaciones de confianza**

Para modificar las relaciones de confianza, siga los pasos siguientes:

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/).

1. En el panel izquierdo, seleccione **Roles**.

1. Busque el rol de ejecución de trabajos para el trabajo del cuaderno y elija el nombre del rol. 

1. Seleccione la pestaña **Relaciones de confianza**.

1. Elija **Editar la política de confianza**.

1. Copie y pegue la siguiente política:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Elija **Actualizar política**.

## Permisos de IAM adicionales
<a name="scheduled-notebook-policies-add"></a>

Es posible que tenga que incluir permisos de IAM adicionales en las siguientes situaciones:
+ Los roles de trabajo del cuaderno y los roles de ejecución de Studio son diferentes
+ Debe acceder a los recursos de Amazon S3 a través de un punto de conexión de VPC de S3
+ Desea utilizar una clave de KMS personalizada para cifrar los buckets de Amazon S3 de entrada y salida

El siguiente análisis proporciona las políticas que necesita para cada caso.

### Permisos necesarios si los roles de trabajo del cuaderno y los roles de ejecución de Studio son diferentes
<a name="scheduled-notebook-policies-add-diffrole"></a>

El siguiente fragmento de código JSON es un ejemplo de política que debe agregar a los roles de trabajo del cuaderno y de ejecución de Studio si no utiliza el rol de ejecución de Studio como rol de trabajo del cuaderno. Revise y modifique esta política si necesita restringir aún más los privilegios.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### Permisos necesarios para acceder a los recursos de Amazon S3 a través de un punto de conexión de VPC de S3
<a name="scheduled-notebook-policies-add-vpc"></a>

Si ejecutas SageMaker Studio en modo de VPC privada y accedes a S3 a través del punto de enlace de VPC de S3, puedes añadir permisos a la política de puntos de enlace de VPC para controlar a qué recursos de S3 se puede acceder a través del punto de enlace de VPC. Agregue los siguientes permisos a su política de puntos de conexión de VPC. Puede modificar la política si necesita restringir aún más los permisos; por ejemplo, puede proporcionar una especificación más específica para el campo `Principal`.

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

Para obtener más información sobre cómo configurar una política de puntos de conexión de VPC de S3, consulte [Edición de la política del punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3).

### Permisos necesarios para usar una clave de KMS personalizada (opcional)
<a name="scheduled-notebook-policies-add-kms"></a>

De forma predeterminada, los buckets de Amazon S3 de entrada y salida se cifran mediante el cifrado del lado del servidor, pero puede especificar una clave de KMS personalizada para cifrar los datos en el bucket de Amazon S3 de salida y en el volumen de almacenamiento asociado al trabajo del cuaderno.

Si desea utilizar una clave de KMS personalizada, asocie la siguiente política y proporcione su propio ARN de clave de KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# Instalación de políticas y permisos para los entornos locales de Jupyter
<a name="scheduled-notebook-policies-other"></a>

Deberá configurar los permisos y políticas necesarios para programar trabajos de cuaderno en un entorno de Jupyter local. El usuario de IAM necesita permisos para enviar trabajos a SageMaker AI y la función de IAM que asume el propio trabajo de notebook necesita permisos para acceder a los recursos, en función de las tareas del trabajo. A continuación, se proporcionan instrucciones sobre cómo configurar los permisos y políticas necesarios.

Deberá instalar dos conjuntos de permisos. El siguiente diagrama muestra la estructura de permisos para programar trabajos de cuadernos en un entorno de Jupyter local. El usuario de IAM debe configurar los permisos de IAM para enviar trabajos a AI. SageMaker Una vez que el usuario envía el trabajo del cuaderno, el propio trabajo asume un rol de IAM que tiene permisos para acceder a los recursos en función de las tareas del trabajo.

![\[\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


Las siguientes secciones le ayudan a instalar las políticas y los permisos necesarios tanto para el usuario de IAM como para el rol de ejecución de trabajos.

## Permisos de usuario de IAM
<a name="scheduled-notebook-policies-other-user"></a>

**Permisos para enviar trabajos a AI SageMaker **

Para agregar permisos para enviar trabajos, siga los siguientes pasos:

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/).

1. En el panel izquierdo, seleccione **Usuarios**.

1. Busque el usuario de IAM para su trabajo del cuaderno y elija el nombre de usuario.

1. Elija **Agregar permisos** y, a continuación, **Crear política insertada** en el menú desplegable.

1. Seleccione la pestaña **JSON**.

1. Copie y pegue la siguiente política:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS política de permisos (opcional)**

De forma predeterminada, los buckets de Amazon S3 de entrada y salida se cifran mediante el cifrado del lado del servidor, pero puede especificar una clave de KMS personalizada para cifrar los datos en el bucket de Amazon S3 de salida y en el volumen de almacenamiento asociado al trabajo del cuaderno.

Si desea utilizar una clave de KMS personalizada, repita las instrucciones anteriores, asocie la siguiente política y proporcione su propio ARN de clave de KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## Permisos de rol de ejecución de trabajos
<a name="scheduled-notebook-policies-other-job"></a>

**Relaciones de confianza**

Para modificar las relaciones de confianza del rol de ejecución de trabajos, siga los pasos siguientes:

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/).

1. En el panel izquierdo, seleccione **Roles**.

1. Busque el rol de ejecución de trabajos para el trabajo del cuaderno y elija el nombre del rol.

1. Seleccione la pestaña **Relaciones de confianza**.

1. Elija **Editar la política de confianza**.

1. Copie y pegue la siguiente política:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**Permisos adicionales**

Una vez enviado, el trabajo del cuaderno necesita permisos para acceder a los recursos. Las siguientes instrucciones muestran cómo agregar un conjunto mínimo de permisos. Si es necesario, agregue más permisos en función de las necesidades de trabajo de su cuaderno. Para agregar permisos a su rol de ejecución de trabajos, siga los pasos que se describen a continuación:

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/).

1. En el panel izquierdo, seleccione **Roles**.

1. Busque el rol de ejecución de trabajos para el trabajo del cuaderno y elija el nombre del rol.

1. Elija **Agregar permisos** y, a continuación, **Crear política insertada** en el menú desplegable.

1. Seleccione la pestaña **JSON**.

1. Copie y pegue la siguiente política:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Agregue permisos a otros recursos a los que accede su trabajo del cuaderno.

1. Elija **Revisar política**.

1. Escriba un nombre para la política.

1. Elija **Crear política**.

# Lugar de creación de un trabajo de cuaderno
<a name="create-notebook-auto-run"></a>

Si desea crear un trabajo de cuaderno, tiene varias opciones. A continuación, se proporcionan las opciones de SageMaker IA para crear un trabajo de bloc de notas.

Puedes crear un trabajo en tu JupyterLab bloc de notas en la interfaz de usuario de Studio, o puedes crear un trabajo mediante programación con el SDK de SageMaker Python:
+ Si crea el trabajo de cuaderno en la interfaz de usuario de Studio, debe proporcionar detalles sobre la imagen y el kernel, las configuraciones de seguridad y cualquier variable o script personalizado. Una vez hecho esto, su trabajo estará programado. Para obtener más información sobre cómo programar su trabajo con SageMaker Notebook Jobs, consulte. [Creación de un cuaderno de trabajo en Studio](create-notebook-auto-run-studio.md)
+ Para crear un trabajo de notebook con el SDK de SageMaker Python, debe crear una canalización con un paso de trabajo de Notebook e iniciar una ejecución bajo demanda o, si lo desea, utilizar la función de programación de canalizaciones para programar futuras ejecuciones. El SageMaker SDK le brinda la flexibilidad de personalizar su canalización: puede ampliarla para convertirla en un flujo de trabajo con varios pasos de tareas de cuaderno. Como crea un paso de trabajo de SageMaker Notebook y un pipeline, puede realizar un seguimiento del estado de ejecución de su pipeline en el panel de tareas de SageMaker Notebook Jobs y también ver el gráfico de su canalización en Studio. Para obtener detalles sobre cómo programar su trabajo con el SDK de SageMaker Python y enlaces a cuadernos de ejemplo, consulte[Ejemplo del SDK de Python para crear un cuaderno con SageMaker IA](create-notebook-auto-run-sdk.md).

# Ejemplo del SDK de Python para crear un cuaderno con SageMaker IA
<a name="create-notebook-auto-run-sdk"></a>

Para ejecutar un bloc de notas independiente con el SDK de SageMaker Python, debe crear un paso de trabajo de Notebook, adjuntarlo a una canalización y utilizar las utilidades que proporciona Pipelines para ejecutar el trabajo bajo demanda o, si lo desea, programar uno o más trabajos futuros. En las siguientes secciones, se describen los pasos básicos para crear un trabajo de cuaderno programado o bajo demanda y realizar un seguimiento de la ejecución. Además, consulte el siguiente análisis si necesita transferir parámetros a su trabajo de cuaderno o conectarse a Amazon EMR en su cuaderno; en estos casos, se requiere una preparación adicional de su cuaderno de Jupyter. También puede aplicar valores predeterminados a un subconjunto de argumentos de `NotebookJobStep` para no tener que especificarlos cada vez que cree un paso de trabajo de cuaderno.

Para ver ejemplos de cuadernos que muestran cómo programar trabajos de cuadernos con el SDK de Python para SageMaker IA, consulte [cuadernos de ejemplos de trabajos de cuadernos](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

**Topics**
+ [Pasos para crear un trabajo de cuaderno](#create-notebook-auto-run-overall)
+ [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](#create-notebook-auto-run-dash)
+ [Visualización del gráfico de la canalización en Studio](#create-notebook-auto-run-graph)
+ [Paso de los parámetros al cuaderno](#create-notebook-auto-run-passparam)
+ [Conexión a un clúster de Amazon EMR en su cuaderno de entrada](#create-notebook-auto-run-emr)
+ [Configuración de opciones predeterminadas](#create-notebook-auto-run-intdefaults)

## Pasos para crear un trabajo de cuaderno
<a name="create-notebook-auto-run-overall"></a>

Puede crear un trabajo de cuaderno que se ejecute inmediatamente o de acuerdo con una programación. En las siguientes instrucciones se describen ambos métodos.

**Para programar un trabajo de cuaderno, realice los siguientes pasos básicos:**

1. Crear una instancia de `NotebookJobStep`. [Para obtener más información sobre los `NotebookJobStep` parámetros, consulta sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep). Como mínimo, puede proporcionar los siguientes argumentos, tal y como se muestra en el siguiente fragmento de código:
**importante**  
Si programa el trabajo del bloc de notas con el SDK de SageMaker Python, solo podrá especificar determinadas imágenes para ejecutar el trabajo del bloc de notas. Para obtener más información, consulte [Restricciones de imagen para trabajos de cuadernos del SDK de Python para SageMaker IA](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. Cree una canalización con su `NotebookJobStep` en un solo paso, tal y como se muestra en el siguiente fragmento:

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. Ejecute la canalización bajo demanda o, si lo desea, programe futuras ejecuciones de la canalización. Para iniciar una ejecución inmediata, utilice el siguiente comando:

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   Si lo desea, puede programar una sola ejecución futura de una canalización o varias ejecuciones en un intervalo predeterminado. Especifique su programación en `PipelineSchedule` y, a continuación, pase el objeto de programación a su canalización con `put_triggers`. Para obtener más información acerca de la programación de una canalización, consulte [Programa una canalización con el SDK de SageMaker Python](pipeline-eventbridge.md#build-and-manage-scheduling).

   En el siguiente ejemplo, se programa la canalización para que se ejecute una vez el 12 de diciembre de 2023 a las 10:31:32 UTC.

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   En el siguiente ejemplo, se programa la canalización para que se ejecute a las 10:15 h UTC del último viernes de cada mes de los años 2022 a 2023. Para obtener más información sobre la programación basada en cron, consulte [Programaciones basadas en cron](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based).

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. (Opcional) Vea los trabajos de su bloc de notas en el panel de trabajos de SageMaker bloc de notas. Los valores que proporcione para el argumento `tags` del paso Trabajo de cuaderno controlan la forma en que la interfaz de usuario de Studio captura y muestra el trabajo. Para obtener más información, consulte [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](#create-notebook-auto-run-dash).

## Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio
<a name="create-notebook-auto-run-dash"></a>

Los trabajos de cuaderno que cree como pasos de la canalización aparecen en el panel de tareas Trabajo de cuaderno de Studio si especifica determinadas etiquetas.

**nota**  
Solo los trabajos de bloc de notas creados en Studio o en JupyterLab entornos locales crean definiciones de trabajos. Por lo tanto, si crea su trabajo de bloc de notas con el SDK de SageMaker Python, no verá las definiciones de trabajo en el panel de trabajos de bloc de notas. Sin embargo, puede ver los trabajos de cuaderno tal y como se describe en [Ver los trabajos del cuaderno](view-notebook-jobs.md). 

Puede controlar qué miembros del equipo pueden ver los trabajos de su cuaderno con las siguientes etiquetas:
+ Para mostrar el cuaderno a todos los perfiles de usuario o [espacios](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) de un dominio, añada la etiqueta de dominio con su nombre de dominio. A continuación se muestra un ejemplo:
  + clave: `sagemaker:domain-name`, valor: `d-abcdefghij5k`
+ Para mostrar el trabajo del cuaderno a un perfil de usuario determinado de un dominio, añada tanto el perfil de usuario como las etiquetas de dominio. A continuación, se muestra un ejemplo de una etiqueta de perfil de usuario:
  + clave: `sagemaker:user-profile-name`, valor: `studio-user`
+ Para mostrar el trabajo de cuaderno en un [espacio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html), añada tanto el espacio como las etiquetas de dominio. A continuación, se muestra un ejemplo de etiqueta de espacio:
  + clave: `sagemaker:shared-space-name`, valor: `my-space-name`
+ Si no asocia ningún dominio o perfil de usuario ni etiquetas de espacio, la interfaz de usuario de Studio no mostrará el trabajo de cuaderno creado por el paso de la canalización. En este caso, puede ver el trabajo de entrenamiento subyacente en la consola de trabajos de entrenamiento o puede ver el estado en la [lista de ejecuciones de la canalización](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html).

Una vez que haya configurado las etiquetas necesarias para ver sus trabajos en el panel de control, consulte [Ver los trabajos del cuaderno](view-notebook-jobs.md) para ver instrucciones sobre cómo ver los trabajos y descargar los resultados.

## Visualización del gráfico de la canalización en Studio
<a name="create-notebook-auto-run-graph"></a>

Como el paso del trabajo de cuaderno forma parte de una canalización, puede ver el gráfico de la canalización (DAG) en Studio. En el gráfico de la canalización, puede ver el estado de la ejecución de la canalización y realizar un seguimiento del linaje. Para obtener más información, consulte [Visualización de los detalles de la ejecución de una canalización](pipelines-studio-view-execution.md).

## Paso de los parámetros al cuaderno
<a name="create-notebook-auto-run-passparam"></a>

Si quiere pasar parámetros al trabajo de cuaderno (utilizando el argumento `parameters` de `NotebookJobStep`), debe preparar el cuaderno de entrada para recibir los parámetros. 

El ejecutor de trabajos de cuadernos basado en Papermill busca una celda de Jupyter etiquetada con la etiqueta `parameters` y aplica los nuevos parámetros o las anulaciones de parámetros inmediatamente después de esta celda. Para obtener más información, consulte [Parametrizar el cuaderno](notebook-auto-run-troubleshoot-override.md). 

Una vez realizado este paso, pase los parámetros a su `NotebookJobStep`, tal y como se muestra en el siguiente ejemplo:

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## Conexión a un clúster de Amazon EMR en su cuaderno de entrada
<a name="create-notebook-auto-run-emr"></a>

Si se conecta a un clúster de Amazon EMR desde su cuaderno de Jupyter en Studio, es posible que tenga que modificar adicionalmente su cuaderno de Jupyter en Studio. Consulte [Conexión a un clúster de Amazon EMR desde su cuaderno](scheduled-notebook-connect-emr.md) si necesita realizar alguna de las siguientes tareas en su cuaderno:
+ **Pase parámetros al comando de conexión de Amazon EMR.** Studio usa Papermill para ejecutar cuadernos. En los SparkMagic núcleos, es posible que los parámetros que transfiera al comando de conexión de Amazon EMR no funcionen según lo esperado debido a la forma en que Papermill pasa la información. SparkMagic
+ **Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth**. Debe pasar las credenciales de usuario a través de AWS Secrets Manager.

## Configuración de opciones predeterminadas
<a name="create-notebook-auto-run-intdefaults"></a>

El SageMaker SDK le ofrece la opción de establecer valores predeterminados para un subconjunto de parámetros, de modo que no tenga que especificarlos cada vez que cree una instancia. `NotebookJobStep` Estos parámetros son `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` y `security_group_ids`. Usa el archivo de configuración de SageMaker AI para establecer los valores predeterminados del paso. Para obtener información sobre el archivo de configuración de SageMaker AI, consulte [Configuración y uso de valores predeterminados con el SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). .

Para configurar los valores predeterminados de los trabajos de cuaderno, aplique los nuevos valores predeterminados a la sección de trabajos del cuaderno del archivo de configuración, tal y como se muestra en el siguiente fragmento:

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# Creación de un cuaderno de trabajo en Studio
<a name="create-notebook-auto-run-studio"></a>

**nota**  
El programador de cuadernos se creó a partir de los servicios Amazon EventBridge, SageMaker Training y Pipelines. Si los trabajos del cuaderno no tienen éxito, es posible que aparezcan errores relacionados con estos servicios. A continuación, se proporciona información sobre cómo crear un trabajo de cuaderno en la interfaz de usuario de Studio.

SageMaker Notebook Jobs le proporciona las herramientas para crear y administrar sus trabajos de cuaderno no interactivos mediante el widget Notebook Jobs. Puede crear trabajos, ver los trabajos que ha creado y pausar, detener o reanudar los trabajos existentes. También puede modificar las programaciones de los cuadernos.

Al crear el trabajo de cuaderno programado, el programador intenta inferir una selección de opciones predeterminadas y rellena automáticamente el formulario para ayudarle a ponerse en marcha rápidamente. Si utiliza Studio, como mínimo puede enviar un trabajo bajo demanda sin configurar ninguna opción. También puede enviar una definición de trabajo del cuaderno (programada) con solo la información de la programación específica. Sin embargo, puede personalizar otros campos si el trabajo programado requiere ajustes especializados. Si utiliza un cuaderno de Jupyter local, la extensión del planificador incluye una característica para que especifique sus propios valores predeterminados (para un subconjunto de opciones), de forma que no tenga que insertar manualmente los mismos valores cada vez.

Al crear un trabajo de cuaderno, puede incluir archivos adicionales, como conjuntos de datos, imágenes y scripts locales. Para ello, elija **Ejecutar el trabajo con carpeta de entrada**. El trabajo de cuaderno ahora tendrá acceso a todos los archivos de la carpeta del archivo de entrada. Mientras se ejecuta el trabajo de cuaderno, la estructura de archivos del directorio permanece inalterada.

Para programar un trabajo de cuaderno, complete los siguientes pasos.

1. Abra el formulario **Crear trabajo**.

   En JupyterLab entornos locales, elija el icono **Crear un trabajo de bloc** de notas (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/notebook-schedule.png)) en la barra de tareas. Si no ve el icono, siga las instrucciones en [Guía de instalación](scheduled-notebook-installation.md) para instalarlo.

   En Studio, abra el formulario de una de las dos formas siguientes:
   + Uso del **explorador de archivos**

     1. En el **explorador de archivos** del panel izquierdo, haga clic con el botón derecho en el cuaderno que desee ejecutar como un trabajo programado.

     1. Elija **Crear trabajo de cuaderno**.
   + En el cuaderno de Studio
     + En el cuaderno de Studio que desee ejecutar como un trabajo programado, seleccione el icono **Crear un trabajo de cuaderno** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/notebook-schedule.png)) en la barra de herramientas de Studio.

1. Rellene el formulario que aparece. El formulario muestra los siguientes campos:
   + **Nombre del trabajo**: nombre descriptivo que especifique para el trabajo.
   + **Archivo de entrada**: el nombre del cuaderno que va a ejecutar en modo no interactivo.
   + **Tipo de cómputo**: el tipo de instancia de Amazon EC2 en la que desea ejecutar el cuaderno.
   + **Parámetros**: parámetros personalizados que, si lo desea, puede especificar como entradas para su cuaderno. Para utilizar esta característica, es posible que desee etiquetar una celda específica de su cuaderno de Jupyter con la etiqueta **parameters** para controlar dónde se aplican sus parámetros. Para obtener más información, consulte [Parametrizar el cuaderno](notebook-auto-run-troubleshoot-override.md).
   + (Opcional) **Ejecutar trabajo con carpeta de entrada**: si se selecciona, el trabajo programado tendrá acceso a todos los archivos que se encuentren en la misma carpeta que el **archivo de entrada**.
   + **Opciones adicionales**: puede especificar personalizaciones adicionales para su trabajo. Por ejemplo, puede especificar una imagen o un kernel, las carpetas de entrada y salida, las opciones de reintento y tiempo de espera del trabajo, los detalles de cifrado y los scripts de inicialización personalizados. Para ver una lista completa de las personalizaciones que puede aplicar, consulte [Opciones disponibles](create-notebook-auto-execution-advanced.md).

1. Programe su trabajo. Puede utilizar su cuaderno bajo demanda o según una programación fija.
   + Para ejecutar el cuaderno bajo demanda, complete los siguientes pasos.
     + Seleccione **Ejecutar ahora**.
     + Seleccione **Crear**.
     + Aparece la pestaña **Trabajos de cuaderno**. Elija **Recargar** para cargar su trabajo en el panel.
   + Para ejecutar el cuaderno según una programación fija, complete los siguientes pasos.
     + Elija **Ejecutar según una programación**.
     + Elija la lista desplegable **Intervalo** y seleccione un intervalo. Los intervalos van desde cada minuto hasta mensualmente. También puede seleccionar **Programación personalizada**.
     + Según el intervalo que elija, aparecerán campos adicionales para ayudarle a especificar mejor el día y la hora de ejecución que desee. Por ejemplo, si selecciona **Día** para una ejecución diaria, aparecerá un campo adicional para que especifique la hora deseada. Tenga en cuenta que cualquier hora que especifique está en formato UTC. Tenga en cuenta también que si elige un intervalo pequeño, como un minuto, sus trabajos se superpondrán si el trabajo anterior no se ha completado cuando comience el siguiente.

       Si selecciona una programación personalizada, utilizará la sintaxis cron en el cuadro de expresión para especificar la fecha y hora exactas de la ejecución. La sintaxis cron es una lista de dígitos separados por espacios, cada uno de los cuales representa una unidad de tiempo desde segundos hasta años. Si necesita ayuda con la sintaxis cron, puede elegir **Obtener ayuda con la sintaxis cron** en el cuadro de expresiones.
     + Seleccione **Crear**.
     + Aparece la pestaña **Definiciones de trabajos del cuaderno**. Seleccione **Recargar** para cargar la definición del trabajo en el panel.

# Configuración de opciones predeterminadas para los cuadernos locales
<a name="create-notebook-auto-execution-advanced-default"></a>

**importante**  
A partir del 30 de noviembre de 2023, la experiencia anterior de Amazon SageMaker Studio pasa a denominarse Amazon SageMaker Studio Classic. La siguiente sección es específica del uso de la aplicación de Studio Classic. Para obtener información sobre el uso de la experiencia de Studio actualizada, consulte [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic se sigue manteniendo para las cargas de trabajo existentes, pero ya no está disponible para su incorporación. Solo puede detener o eliminar las aplicaciones de Studio Classic existentes y no puede crear aplicaciones nuevas. Te recomendamos [migrar tu carga de trabajo a la nueva experiencia de Studio](studio-updated-migrate.md).

Puede configurar las opciones predeterminadas al crear un trabajo de cuaderno. Eso puede ahorrarle tiempo si tiene pensado crear varios trabajos de cuaderno con opciones distintas a las que se proporcionan de manera predeterminada. A continuación, se proporciona información sobre cómo configurar las opciones predeterminadas para los cuadernos locales.

Si tiene que escribir (o pegar) manualmente valores personalizados en el formulario **Crear trabajo**, puede almacenar los nuevos valores predeterminados y la extensión del planificador insertará los nuevos valores cada vez que cree una nueva definición de trabajo. Esta característica está disponible para las siguientes opciones:
+ **ARN del rol**
+ **Carpeta de entrada de S3**
+ **Carpeta de salida de S3**
+ **Clave de KMS de cifrado de salida** (si activa **Configurar el cifrado de trabajos**)
+ **Clave de KMS de cifrado del volumen de la instancia de trabajo** (si activa **Configurar el cifrado de trabajos**)

Esta característica le ahorra tiempo si inserta valores diferentes a los valores predeterminados proporcionados y continúa utilizando esos valores para futuras ejecuciones de trabajos. La configuración de usuario que elijas se guarda en la máquina en la que se ejecuta el JupyterLab servidor y se recupera con la ayuda de la API nativa. Si proporciona nuevos valores predeterminados para una o más opciones, pero no para las cinco, se utilizarán los valores predeterminados anteriores para las que no haya personalizado.

Las siguientes instrucciones le muestran cómo previsualizar los valores predeterminados existentes, configurar nuevos valores predeterminados y restablecer los valores predeterminados para los trabajos de cuaderno.

**Realice los siguientes pasos para previsualizar los valores predeterminados existentes en los trabajos de cuaderno:**

1. Abra la consola Amazon SageMaker Studio Classic siguiendo las instrucciones de[Lanzamiento de Amazon SageMaker Studio Classic](studio-launch.md).

1. En el **explorador de archivos** del panel izquierdo, haga clic con el botón derecho en el cuaderno que desee ejecutar como un trabajo programado.

1. Elija **Crear trabajo de cuaderno**.

1. Seleccione **Opciones adicionales** para expandir la pestaña de configuración de trabajos del cuaderno. Puede ver la configuración predeterminada aquí. 

**Para configurar nuevos valores predeterminados para los futuros trabajos de cuaderno, siga estos pasos:**

1. Abra la consola Amazon SageMaker Studio Classic siguiendo las instrucciones de[Lanzamiento de Amazon SageMaker Studio Classic](studio-launch.md).

1. En el menú superior de Studio Classic, seleccione **Configuración** y, a continuación, seleccione **Editor de configuración avanzada**.

1. Selecciona **Amazon SageMaker Scheduler** en la lista que aparece debajo de **Configuración.** Puede que ya esté abierto de forma predeterminada.

1. Puede actualizar la configuración predeterminada directamente en esta página de la interfaz de usuario o mediante el editor de JSON.
   + En la interfaz de usuario, puede insertar nuevos valores para el **ARN del rol**, la **Carpeta de entrada de S3**, la **Carpeta de salida de S3**, la **Clave de KMS de cifrado de salida** o la **Clave de KMS de cifrado del volumen de instancia de trabajo**. Si cambia estos valores, verá los nuevos valores predeterminados para estos campos cuando cree su próximo trabajo de cuaderno en **Opciones adicionales**.
   + (Opcional) Para actualizar los valores predeterminados del usuario mediante el **Editor de configuración de JSON**, realice los siguientes pasos:

     1. En la esquina superior derecha, seleccione el **Editor de configuración de JSON**.

     1. En la barra lateral izquierda de **Configuración**, selecciona **Amazon SageMaker AI** Scheduler. Puede que ya esté abierto de forma predeterminada.

        Puede ver sus valores predeterminados actuales en el panel **Preferencias de usuario**.

        Puede ver los valores predeterminados del sistema en el panel **Valores predeterminados del sistema**.

     1. Para actualizar los valores predeterminados, copie y pegue el fragmento de código JSON del panel de **Valores predeterminados del sistema** en el panel de **Preferencias de usuario** y actualice los campos.

     1. Si ha actualizado los valores predeterminados, seleccione el icono de **Guardar configuración de usuario** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/Notebook_save.png)) en la esquina superior derecha. Al cerrar el editor, no se guardan los cambios.

**Si ha modificado anteriormente los valores predeterminados definidos por el usuario y ahora desea restablecerlos, complete los siguientes pasos:**

1. En el menú superior de Studio Classic, seleccione **Configuración** y, a continuación, seleccione **Editor de configuración avanzada**.

1. Selecciona **Amazon SageMaker Scheduler** en la lista que aparece debajo de **Configuración.** Puede que ya esté abierto de forma predeterminada.

1. Puede restaurar los valores predeterminados utilizando directamente esta página de la interfaz de usuario o el editor de JSON.
   + En la interfaz de usuario, puede elegir **Restaurar valores predeterminados** en la esquina superior derecha. Los valores predeterminados se restauran a cadenas vacías. Solo verá esta opción si ha modificado previamente los valores predeterminados.
   + (Opcional) Para reiniciar la configuración predeterminada utilizando el **Editor de configuración de JSON**, realice los siguientes pasos:

     1. En la esquina superior derecha, seleccione el **Editor de configuración de JSON**.

     1. En la barra lateral izquierda de **Configuración**, selecciona **Amazon SageMaker AI** Scheduler. Puede que ya esté abierto de forma predeterminada.

        Puede ver sus valores predeterminados actuales en el panel **Preferencias de usuario**.

        Puede ver los valores predeterminados del sistema en el panel **Valores predeterminados del sistema**.

     1. Para restablecer la configuración predeterminada actual, copie el contenido del panel de **Valores predeterminados del sistema** al panel **Preferencias de usuario**.

     1. Elija el icono de **Guardar configuración de usuario** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/Notebook_save.png)) en la esquina superior derecha. Al cerrar el editor, no se guardan los cambios.

# Flujos de trabajo de cuaderno
<a name="create-notebook-auto-run-dag"></a>

Dado que un trabajo de cuaderno ejecuta su código personalizado, puede crear una canalización que incluya uno o más pasos del trabajo de cuaderno. Los flujos de trabajo de ML suelen contener varios pasos, como un paso de procesamiento para preprocesar los datos, un paso de entrenamiento para crear el modelo y un paso de evaluación del modelo, entre otros. Una posible utilidad de los trabajos de cuaderno es para gestionar el preprocesamiento. Es posible que tenga un cuaderno que realice la transformación o ingesta de datos, un paso EMR que lleve a cabo la limpieza de datos y otro trabajo de cuaderno que realice la caracterización de las entradas antes de iniciar un paso de entrenamiento. Un trabajo de cuaderno puede requerir información de los pasos anteriores de la canalización o de la personalización especificada por el usuario como parámetros en el cuaderno de entrada. Para ver ejemplos que muestran cómo pasar parámetros y variables de entorno a su cuaderno y cómo recuperar información de los pasos anteriores, consulte [Paso de la información a y desde su paso del cuaderno](create-notebook-auto-run-dag-seq.md).

En otro caso práctico, uno de los trabajos del cuaderno podría llamar a otro cuaderno para que realice algunas tareas durante la ejecución del cuaderno. En este caso, tendrá que especificar los cuadernos de origen como dependencias del paso de trabajo del cuaderno. Para obtener más información acerca de cómo llamar a otro cuaderno, consulte [Invocación de otro cuaderno en el trabajo de cuaderno](create-notebook-auto-run-dag-call.md).

Para ver ejemplos de cuadernos que muestran cómo programar trabajos de cuadernos con el SDK de Python para SageMaker IA, consulte [cuadernos de ejemplos de trabajos de cuadernos](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

# Paso de la información a y desde su paso del cuaderno
<a name="create-notebook-auto-run-dag-seq"></a>

En las siguientes secciones, se describen las formas de pasar información a su cuaderno como parámetros y variables de entorno.

## Paso de variables de entorno.
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

Pase variables de entorno como un diccionario al argumento `environment_variable` de su `NotebookJobStep`, tal y como se muestra en el siguiente ejemplo:

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

Puede utilizar las variables de entorno en el cuaderno utilizando `os.getenv()`, como se muestra en el siguiente ejemplo:

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## Paso de parámetros
<a name="create-notebook-auto-run-dag-seq-param"></a>

Al pasar los parámetros al primer paso de Trabajo de cuaderno de la instancia de `NotebookJobStep`, si lo desea, puede etiquetar una celda de su cuaderno de Jupyter para indicar dónde aplicar los nuevos parámetros o las anulaciones de parámetros. Para obtener instrucciones sobre cómo etiquetar una celda en su cuaderno de Jupyter, consulte [Parametrizar el cuaderno](notebook-auto-run-troubleshoot-override.md).

Puede pasar los parámetros a través del parámetro `parameters` del paso del trabajo de cuaderno, tal y como se muestra en el siguiente fragmento de código:

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

En el cuaderno de entrada, los parámetros se aplican después de la celda etiquetada con `parameters` o al principio del cuaderno si no tiene una celda etiquetada.

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## Recuperación de información de un paso anterior
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

A continuación, se explica cómo extraer datos de un paso anterior para pasarlos al paso Trabajo de cuaderno.

**Utilice el atributo `properties`**

Puede utilizar las siguientes propiedades con el atributo `properties` del paso anterior:
+ `ComputingJobName`: nombre del trabajo de entrenamiento
+ `ComputingJobStatus`: estado del trabajo de entrenamiento
+ `NotebookJobInputLocation`: ubicación de entrada de Amazon S3
+ `NotebookJobOutputLocationPrefix`: ruta a los resultados de su trabajo de entrenamiento, más específicamente `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz`. Contiene los resultados
+ `InputNotebookName`: nombre del archivo del cuaderno de entrada
+ `OutputNotebookName`: nombre del archivo del cuaderno de salida (que podría no existir en la carpeta de salida del trabajo de entrenamiento si el trabajo falla)

En el siguiente fragmento de código, se muestra cómo extraer parámetros del atributo de propiedades.

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**Uso JsonGet**

Si desea pasar algún parámetro que no se ha mencionado más arriba y las salidas JSON del paso anterior residen en Amazon S3, utilice `JsonGet`. `JsonGet` es un mecanismo general que puede extraer datos directamente de los archivos de JSON en Amazon S3.

Para extraer archivos JSON en Amazon S3 con `JsonGet`, siga estos pasos:

1. Cargue el archivo JSON en Amazon S3. Si los datos ya están cargados en Amazon S3, omita este paso. En el siguiente ejemplo, se muestra cómo cargar un archivo JSON en Amazon S3.

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. Proporcione su URI de S3 y la ruta JSON del valor que desee extraer. En el siguiente ejemplo, `JsonGet` devuelve un objeto que representa el índice 2 del valor asociado a la clave `key2` (`10`).

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```

# Invocación de otro cuaderno en el trabajo de cuaderno
<a name="create-notebook-auto-run-dag-call"></a>

Aprenda a configurar una canalización en la que un trabajo de cuaderno llame a otro cuaderno. A continuación, se configura un ejemplo de una canalización con un paso de trabajo de cuaderno en el que el cuaderno llama a otros dos cuadernos. El cuaderno de entrada contiene las siguientes líneas:

```
%run 'subfolder/notebook_to_call_in_subfolder.ipynb'
%run 'notebook_to_call.ipynb'
```

Pase estos cuadernos a sus instancias de `NotebookJobStep` con `additional_dependencies`, como se muestra en el siguiente fragmento. Tenga en cuenta que las rutas proporcionadas para los cuadernos en `additional_dependencies` provienen de la ubicación raíz. Para obtener información sobre cómo SageMaker AI carga sus archivos y carpetas dependientes a Amazon S3 para que pueda proporcionar correctamente las rutas a sus dependencias, consulte la descripción en. `additional_dependencies` [NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep)

```
input_notebook = "inputs/input_notebook.ipynb"
simple_notebook_path = "inputs/notebook_to_call.ipynb"
folder_with_sub_notebook = "inputs/subfolder"

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input_notebook,
    additional_dependencies=[simple_notebook_path, folder_with_sub_notebook],
    tags=tags,
)
```

# Opciones disponibles
<a name="create-notebook-auto-execution-advanced"></a>

La siguiente tabla muestra todas las opciones disponibles que puede usar para personalizar su trabajo de notebook, ya sea que ejecute su trabajo de notebook en Studio, en un entorno Jupyter local o utilizando el SDK de SageMaker Python. La tabla incluye el tipo de opción personalizada, una descripción, directrices adicionales sobre cómo utilizarla, un nombre de campo para la opción en Studio (si está disponible) y el nombre del parámetro para el paso del trabajo del cuaderno en el SDK de SageMaker Python (si está disponible).

En el caso de algunas opciones, también puede preconfigurar valores predeterminados personalizados para no tener que especificarlos cada vez que configure un trabajo de cuaderno. En el caso de Studio, estas opciones son **Rol**, **Carpeta de entrada**, **Carpeta de salida** e **ID de clave de KMS**, y se especifican en la siguiente tabla. Si ha preconfigurado valores predeterminados personalizados para estas opciones, estos campos se rellenan automáticamente en el formulario **Crear trabajo** al crear el trabajo de cuaderno. Para obtener más información sobre cómo crear valores predeterminados personalizados en los entornos de Studio y Jupyter locales, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md).

El SageMaker SDK también te ofrece la opción de establecer valores predeterminados inteligentes para no tener que especificar estos parámetros al crear un`NotebookJobStep`. Estos parámetros son `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` y `security_group_ids`, y se especifican en la siguiente tabla. Para obtener más información acerca de cómo configurar valores predeterminados inteligentes, consulte[Configuración de opciones predeterminadas](create-notebook-auto-run-sdk.md#create-notebook-auto-run-intdefaults).


| Opción personalizada | Description (Descripción) | Directriz específica de Studio | Directriz de entorno local de Jupyter | SageMaker Guía del SDK de Python | 
| --- | --- | --- | --- | --- | 
| Nombre del trabajo | El nombre de su trabajo tal y como debería aparecer en el panel Trabajos de cuaderno. | Campo Nombre del trabajo. | Igual que Studio. | Parámetro notebook\$1job\$1name. El valor predeterminado es None. | 
| Image | La imagen del contenedor utilizada para ejecutar el cuaderno de forma no interactiva en el tipo de cómputo elegido. | Campo Imagen. Este campo tiene como valor predeterminado la imagen actual del cuaderno. Cambie este campo del valor predeterminado a uno personalizado si es necesario. Si Studio no puede inferir este valor, el formulario muestra un error de validación que requiere que lo especifique. Esta imagen puede ser personalizada, una [bring-your-own imagen](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) o una SageMaker imagen disponible en Amazon. Para obtener una lista de SageMaker las imágenes disponibles compatibles con el programador de cuadernos, consulte[SageMaker Imágenes de Amazon disponibles para su uso con las libretas Studio Classic](notebooks-available-images.md). | Campo Imagen. Este campo requiere un URI de ECR de una imagen de Docker que pueda ejecutar el cuaderno proporcionado en el tipo de cómputo seleccionado. De forma predeterminada, la extensión del planificador usa Python 2.0 precompilado y basado en imágenes de Docker de SageMaker IA. Esta es la imagen oficial de Python 3.8 DockerHub con boto3 y el AWS CLI núcleo de Python 3. También puede proporcionar cualquier URI de ECR que cumpla con la especificación de imagen personalizada del cuaderno. Para obtener más información, consulte [Especificaciones SageMaker de imagen personalizadas para Amazon SageMaker Studio Classic](studio-byoi-specs.md). Esta imagen debe contener todos los kernels y bibliotecas necesarios para el funcionamiento del cuaderno. | Obligatorio. Parámetro image\$1uri. Ubicación del URI de una imagen de Docker en ECR. Puede utilizar imágenes de SageMaker distribución específicas o una imagen personalizada basada en esas imágenes, o bien puede utilizar su propia imagen preinstalada con las funciones del cuaderno de tareas que cumplan con los requisitos adicionales. Para obtener más información, consulte [Restricciones de imagen para trabajos de cuadernos del SDK de Python para SageMaker IA](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk). | 
| Tipo de instancia | El tipo de instancia de EC2 que se utilizará para ejecutar el trabajo de cuaderno. El trabajo del cuaderno utiliza un trabajo de SageMaker formación como capa de cálculo, por lo que el tipo de instancia especificado debe ser un tipo de instancia compatible con SageMaker formación. | Campo Tipo de computación. El valor predeterminado es ml.m5.large. | Igual que Studio. | Parámetro instance\$1type. El valor predeterminado es ml.m5.large. | 
| Kernel | El kernel de Jupyter utilizado para ejecutar el trabajo del cuaderno. | Campo Kernel. Este campo tiene como valor predeterminado el kernel actual del cuaderno. Cambie este campo del valor predeterminado a uno personalizado si es necesario. Si Studio no puede inferir este valor, el formulario muestra un error de validación que requiere que lo especifique. | Campo Kernel. Este kernel debe estar presente en la imagen y seguir las especificaciones del kernel de Jupyter. El valor predeterminado de este campo es el kernel de Python3 que se encuentra en la imagen base de Python 2.0. SageMaker Cambie este campo a un valor personalizado si es necesario. | Obligatorio. Parámetro kernel\$1name. Este kernel debe estar presente en la imagen y seguir las especificaciones del kernel de Jupyter. Para ver los identificadores de kernel de su imagen, consulte (ENLACE). | 
| SageMaker Sesión de IA | La sesión de SageMaker IA subyacente en la que se delegan las llamadas al servicio de SageMaker IA. | N/A | N/A | Parámetro sagemaker\$1session. Si no se especifica, se crea una mediante una cadena de configuración predeterminada. | 
| ARN del rol | El nombre de recurso de Amazon (ARN) del rol utilizado con el trabajo del cuaderno. | Campo ARN de rol. El valor predeterminado de este campo es el rol de ejecución de Studio. Cambie este campo a un valor personalizado si es necesario.  Si Studio no puede inferir este valor, el campo **ARN del rol** está en blanco. En este caso, inserte el ARN que desee utilizar.  | Campo ARN de rol. El valor predeterminado de este campo es cualquier rol con el prefijo SagemakerJupyterScheduler. Si tiene varios roles con el prefijo, la extensión elige uno. Cambie este campo a un valor personalizado si es necesario. Para este campo, puede establecer su propia configuración de usuario predeterminada, que se rellena automáticamente cada vez que crea una nueva definición de trabajo. Para obtener más información, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md). | Parámetro role. Utiliza de forma predeterminada la función de IAM predeterminada de la SageMaker IA si el SDK se ejecuta en SageMaker notebooks o Studio Notebooks. SageMaker De lo contrario, emite un ValueError. Permite valores predeterminados inteligentes. | 
| Cuaderno de entrada | El nombre del cuaderno cuya ejecución va a programar. | Obligatorio. Campo Archivo de entrada. | Igual que Studio. | Parámetro obligatorio input\$1notebook | 
| Carpeta de entrada | La carpeta que contiene las entradas. En esta carpeta se colocan las entradas del trabajo, incluido el cuaderno de entradas y cualquier script de inicio o inicialización opcional. | Campo Carpeta de entrada. Si no proporciona una carpeta, el programador crea un bucket de Amazon S3 predeterminado para sus entradas. | Igual que Studio. Para este campo, puede establecer su propia configuración de usuario predeterminada, que se rellena automáticamente cada vez que crea una nueva definición de trabajo. Para obtener más información, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md). | N/D. La carpeta de entrada se coloca dentro de la ubicación especificada por el parámetro s3\$1root\$1uri. | 
| Carpeta de salida | La carpeta que contiene las salidas. En esta carpeta se colocan las salidas de los trabajos, incluidos el cuaderno de salidas y los registros. | Campo Carpeta de entrada. Si no especifica una carpeta, el programador crea un bucket de Amazon S3 predeterminado para sus salidas. | Igual que Studio. Para este campo, puede establecer su propia configuración de usuario predeterminada, que se rellena automáticamente cada vez que crea una nueva definición de trabajo. Para obtener más información, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md). | N/D. La carpeta de salida se coloca dentro de la ubicación especificada por el parámetro s3\$1root\$1uri. | 
| Parameters | Un diccionario de variables y valores para pasar al trabajo de cuaderno. | Campo Parámetros. Debe [parametrizar el cuaderno](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) para aceptar los parámetros. | Igual que Studio. | Parámetro parameters. Debe [parametrizar el cuaderno](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) para aceptar los parámetros. | 
| Dependencias adicionales (archivo o carpeta) | La lista de dependencias de archivos o carpetas que el trabajo de cuaderno carga en la carpeta provisional s3. | No admitido. | No admitido. | Parámetro additional\$1dependencies. El trabajo de cuaderno carga estas dependencias en una carpeta provisional de S3 para que puedan consumirse durante la ejecución. | 
| URI de la raíz de S3 | La carpeta que contiene las entradas. En esta carpeta se colocan las entradas del trabajo, incluido el cuaderno de entradas y cualquier script de inicio o inicialización opcional. Este bucket de S3 debe estar en la misma Cuenta de AWS que utiliza para ejecutar el trabajo del cuaderno. | N/D. Utilice Carpeta de entrada y Carpeta de salida. | Igual que Studio. | Parámetro s3\$1root\$1uri. El valor predeterminado es un bucket de S3 predeterminado. Permite valores predeterminados inteligentes. | 
| Variables de entorno | Cualquier variable de entorno existente que desee anular o cualquier variable de entorno nueva que desee ingresar y utilizar en su cuaderno. | Campo Variables de entorno. | Igual que Studio. | Parámetro environment\$1variables. El valor predeterminado es None. | 
| Tags | Una lista de etiquetas asociadas al trabajo. | N/A | N/A | Parámetro tags. El valor predeterminado es None. Sus etiquetas controlan la forma en que la interfaz de usuario de Studio captura y muestra el trabajo creado por la canalización. Para obtener más información, consulte [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash). | 
| Script de inicio | Un script precargado en el menú de inicio del cuaderno que puede elegir ejecutar antes de ejecutar el cuaderno. | Campo Script de inicio. Seleccione un script de configuración del ciclo de vida (LCC) que se ejecute en la imagen al iniciarse. Un script de inicio se ejecuta en un intérprete de comandos fuera del entorno de Studio. Por lo tanto, este script no puede depender del almacenamiento local de Studio, de las variables de entorno ni de los metadatos de la aplicación (en `/opt/ml/metadata`). Además, si utiliza un script de inicio y un script de inicialización, el script de inicio se ejecutará primero.   | No admitido. | No admitido. | 
| Script de inicialización | Una ruta a un script local que puede ejecutar cuando se inicia el cuaderno. | Campo Script de inicialización. Introduzca la ruta del archivo EFS donde se encuentre un script local o un script de configuración del ciclo de vida (LCC). Si utiliza un script de inicio y un script de inicialización, el script de inicio se ejecutará primero. El script de inicialización proviene del mismo intérprete de comandos que el trabajo del cuaderno. Este no es el caso de un script de inicio descrito anteriormente. Además, si utiliza un script de inicio y un script de inicialización, el script de inicio se ejecutará primero.    | Campo Script de inicialización. Introduzca la ruta del archivo local donde se encuentre un script local o un script de configuración del ciclo de vida (LCC).  | Parámetro initialization\$1script. El valor predeterminado es None. | 
| Número máximo de reintentos | Número de veces que Studio intenta volver a ejecutar un trabajo que no tiene éxito. | Campo Reintentos máximos. El valor predeterminado es 1. | Igual que Studio. | Parámetro max\$1retry\$1attempts. El valor predeterminado es 1. | 
| Tiempo máximo de ejecución (en segundos) | El tiempo máximo, en segundos, que un trabajo de cuaderno puede ejecutarse antes de que se detenga. Si configura tanto el tiempo máximo de ejecución como el máximo de reintentos, el tiempo de ejecución se aplica a cada reintento. Si un trabajo no se completa en este tiempo, su estado se establece en Failed. | Campo Tiempo máximo de ejecución (en segundos). El valor predeterminado es 172800 seconds (2 days). | Igual que Studio. | Parámetro max\$1runtime\$1in\$1seconds. El valor predeterminado es 172800 seconds (2 days). | 
| Políticas de reintentos | Una lista de políticas de reintentos, que rigen las acciones que se deben realizar en caso de error. | No admitido. | No admitido. | Parámetro retry\$1policies. El valor predeterminado es None. | 
| Añada dependencias Step o StepCollection | Una lista de nombres Step o StepCollection o instancias de los que depende el trabajo. | No admitido. | No admitido. | Parámetro depends\$1on. El valor predeterminado es None. Utilícelo para definir dependencias explícitas entre los pasos de su gráfico de canalización. | 
| Tamaño del volumen | El tamaño en GB del volumen de almacenamiento para almacenar los datos de entrada y salida durante el entrenamiento. | No admitido. | No admitido. | Parámetro volume\$1size. El valor predeterminado es 30 GB. | 
| Cifrado del tráfico entre contenedores | Un indicador que especifica si el tráfico entre los contenedores de entrenamiento está cifrado para el trabajo de entrenamiento. | N/D. Habilitado de forma predeterminada. | N/D. Habilitado de forma predeterminada. | Parámetro encrypt\$1inter\$1container\$1traffic. El valor predeterminado es True. | 
| Configurar el cifrado de trabajos | Un indicador de que desea cifrar las salidas de los trabajos de su cuaderno, el volumen de las instancias de trabajo o ambos. | Campo Configurar el cifrado de trabajos. Marque esta casilla para elegir el cifrado. Si no se selecciona, las salidas del trabajo se cifran con la clave de KMS predeterminada de la cuenta y el volumen de la instancia de trabajo no se cifra. | Igual que Studio. | No admitido. | 
| Clave de cifrado de salida de KMS | Una clave de KMS que puede utilizar si desea personalizar la clave de cifrado utilizada en las salidas de los trabajos de su cuaderno. Este campo solo es aplicable si ha marcado Configurar el cifrado de trabajos. | Campo Clave de KMS de cifrado de salida. Si no especifica este campo, los resultados de los trabajos de su cuaderno se cifran con SSE-KMS mediante la clave de KMS de Amazon S3 predeterminada. Además, si crea el bucket de Amazon S3 usted mismo y utiliza el cifrado, se conserva el método de cifrado. | Igual que Studio. Para este campo, puede establecer su propia configuración de usuario predeterminada, que se rellena automáticamente cada vez que crea una nueva definición de trabajo. Para obtener más información, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md). | Parámetro s3\$1kms\$1key. El valor predeterminado es None. Permite valores predeterminados inteligentes. | 
| Clave de KMS de cifrado de volumen de instancia de trabajo | Una clave de KMS que puede usar si quiere cifrar el volumen de su instancia de trabajo. Este campo solo es aplicable si ha marcado Configurar el cifrado de trabajos. | Campo Clave de KMS de cifrado de volumen de instancia de trabajo. | Campo Clave de KMS de cifrado de volumen de instancia de trabajo. Para este campo, puede establecer su propia configuración de usuario predeterminada, que se rellena automáticamente cada vez que crea una nueva definición de trabajo. Para obtener más información, consulte [Configuración de opciones predeterminadas para los cuadernos locales](create-notebook-auto-execution-advanced-default.md). | Parámetro volume\$1kms\$1key. El valor predeterminado es None. Permite valores predeterminados inteligentes. | 
| Usar una nube privada virtual para ejecutar este trabajo (para usuarios de VPC) | Indicador de que desea ejecutar este trabajo en una nube privada virtual (VPC). Para mayor seguridad, se recomienda utilizar una VPC privada. | Campo Usar una nube privada virtual para ejecutar este trabajo. Marque esta casilla si quiere usar una VPC. Como mínimo, cree los siguientes puntos finales de VPC para permitir que su trabajo de notebook se conecte de forma privada a esos recursos: AWS [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/create-notebook-auto-execution-advanced.html)Si decide usar una VPC, debe especificar al menos una subred privada y al menos un grupo de seguridad en las siguientes opciones. Si no utiliza ninguna subred privada, debe tener en cuenta otras opciones de configuración. Para obtener más información, consulte No se admiten subredes de VPC públicas en [Restricciones y consideraciones](notebook-auto-run-constraints.md). | Igual que Studio. | N/A | 
| Subredes (para usuarios de VPC) | Sus subredes. Este campo debe contener al menos una y cinco como máximo, y todas las subredes que proporcione deben ser privadas. Para obtener más información, consulte No se admiten subredes de VPC públicas en [Restricciones y consideraciones](notebook-auto-run-constraints.md). | Campo Subredes. Este campo se establece de forma predeterminada en las subredes asociadas al dominio de Studio, pero puede cambiarlo si es necesario. | Campo Subredes. El programador no puede detectar las subredes, por lo que debe introducir las subredes que haya configurado para la VPC. | Parámetro subnets. El valor predeterminado es None. Permite valores predeterminados inteligentes. | 
| Grupo(s) de seguridad (para usuarios de VPC) | Sus grupos de seguridad. Este campo debe contener al menos uno y un máximo de 15. Para obtener más información, consulte No se admiten subredes de VPC públicas en [Restricciones y consideraciones](notebook-auto-run-constraints.md). | Campo Grupos de seguridad. Este campo se establece de forma predeterminada en los grupos de seguridad asociados a la VPC del dominio, pero puede cambiarlo si es necesario. | Campo Grupos de seguridad. El programador no puede detectar los grupos de seguridad, por lo que debe introducir los grupos de seguridad que haya configurado para la VPC. | Parámetro security\$1group\$1ids. El valor predeterminado es None. Permite valores predeterminados inteligentes. | 
| Name | El nombre del paso de trabajo de cuaderno. | N/A | N/A | Parámetro name. Si no se especifica, se obtiene del nombre del archivo del cuaderno. | 
| Display name (Nombre de visualización) | El nombre del trabajo tal y como debería aparecer en la lista de ejecuciones de canalizaciones. | N/A | N/A | Parámetro display\$1name. El valor predeterminado es None. | 
| Description (Descripción) | Una descripción del trabajo. | N/A | N/A | Parámetro description. | 

# Parametrizar el cuaderno
<a name="notebook-auto-run-troubleshoot-override"></a>

Para pasar nuevos parámetros o anulaciones de parámetros a su trabajo de cuaderno programado, es posible que desee modificar su cuaderno de Jupyter si quiere que los nuevos valores de los parámetros se apliquen después de una celda. Cuando pasa un parámetro, el ejecutor de trabajos de cuaderno utiliza la metodología que aplica Papermill. El ejecutor de trabajos de cuaderno busca una celda de Jupyter etiquetada con la etiqueta `parameters` y aplica los nuevos parámetros o las anulaciones de parámetros inmediatamente después de esta celda. Si no tiene ninguna celda etiquetada con `parameters`, los parámetros se aplican al principio del cuaderno. Si tiene más de una celda etiquetada con `parameters`, los parámetros se aplican después de la primera celda etiquetada con `parameters`.

Para etiquetar una celda del cuaderno con la etiqueta `parameters`, complete los pasos siguientes:

1. Seleccione la celda que desee parametrizar.

1. Seleccione el icono del **Inspector de propiedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/studio/icons/gears.png)) en la barra lateral derecha.

1. Escriba **parameters** en el cuadro **Agregar etiqueta**.

1. Elija el signo **\$1**.

1. La etiqueta `parameters` aparece debajo de las **Etiquetas de celda** con una marca de verificación, lo que significa que la etiqueta se ha aplicado a la celda.

# Conexión a un clúster de Amazon EMR desde su cuaderno
<a name="scheduled-notebook-connect-emr"></a>

Si se conecta a un clúster de Amazon EMR desde su cuaderno de Jupyter en Studio, es posible que tenga que realizar una configuración adicional. En concreto, en el siguiente análisis se abordan dos cuestiones:
+ **Pasar parámetros al comando de conexión de Amazon EMR.** En los SparkMagic núcleos, es posible que los parámetros que transfiera al comando de conexión de Amazon EMR no funcionen según lo esperado debido a las diferencias en la forma en que Papermill pasa los parámetros y SparkMagic en la forma en que los recibe. La solución alternativa para resolver esta limitación consiste en pasar los parámetros como variables de entorno. Para obtener más información sobre el problema y la solución alternativa, consulte [Pasar parámetros al comando de conexión de Amazon EMR](#scheduled-notebook-connect-emr-pass-param).
+ **Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth**. En el modo interactivo, Studio solicita las credenciales en un formulario emergente en el que puede ingresar sus credenciales de inicio de sesión. En su cuaderno programado no interactivo, debe pasarlas a través de AWS Secrets Manager. Para obtener más información sobre cómo utilizarlos AWS Secrets Manager en las tareas programadas de su portátil, consulte. [Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth](#scheduled-notebook-connect-emr-credentials)

## Pasar parámetros al comando de conexión de Amazon EMR
<a name="scheduled-notebook-connect-emr-pass-param"></a>

Si utiliza imágenes con los núcleos SparkMagic PySpark y Spark y desea parametrizar el comando de conexión EMR, introduzca los parámetros en **el campo Variables de entorno en lugar de en el** campo Parámetros del formulario Crear trabajo (en **el** menú desplegable Opciones adicionales). Asegúrese de que el comando de conexión de EMR del cuaderno de Jupyter pase estos parámetros como variables de entorno. Por ejemplo, supongamos que pasa `cluster-id` como variable de entorno al crear el trabajo. El comando de conexión de EMR debería ser similar a lo siguiente:

```
%%local
import os
```

```
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
```

Necesita esta solución alternativa para cumplir con los requisitos de Papermill. SparkMagic En segundo plano, el SparkMagic núcleo espera que el comando `%%local` mágico acompañe a cualquier variable local que defina. Sin embargo, Papermill no ejecuta el comando mágico `%%local` con sus anulaciones. Para evitar esta limitación de Papermill, debe proporcionar sus parámetros como variables de entorno en el campo **Variables de entorno**.

## Pasar las credenciales de usuario a clústeres de Amazon EMR autenticados por Kerberos, LDAP o HTTP Basic Auth
<a name="scheduled-notebook-connect-emr-credentials"></a>

Para establecer una conexión segura a un clúster de Amazon EMR que utilice la autenticación básica Kerberos, LDAP o HTTP, utilice el comando AWS Secrets Manager to pass user credentials to your connection. Para obtener información sobre cómo crear un secreto en Secrets Manager, consulte [Creación de un secreto de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). El secreto debe contener un nombre de usuario y una contraseña. El secreto se pasa con el argumento `--secrets`, tal como se muestra en el siguiente ejemplo:

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

El administrador puede configurar una política de acceso flexible mediante un método attribute-based-access-control (ABAC), que asigna el acceso en función de etiquetas especiales. Puede configurar un acceso flexible para crear un secreto único para todos los usuarios de la cuenta o un secreto para cada usuario. Los siguientes ejemplos de código muestran estos escenarios:

**Crear un secreto único para todos los usuarios de la cuenta**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**Crear un secreto diferente para cada usuario**

Puede crear un secreto diferente para cada usuario con la etiqueta `PrincipleTag`, como se muestra en el ejemplo siguiente:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}"
                }
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

# Detalles de los trabajos de Notebook en Amazon SageMaker Studio
<a name="track-jobs-jobdefs"></a>

SageMaker Los paneles de Notebook Jobs ayudan a organizar las definiciones de trabajo que programa y también a realizar un seguimiento de los trabajos reales que se ejecutan a partir de sus definiciones de trabajo. Hay dos conceptos importantes que hay que entender a la hora de programar los trabajos del cuaderno: las *definiciones del trabajo* y las *ejecuciones del trabajo*. Las definiciones del trabajo son programaciones que se configuran para ejecutar cuadernos específicos. Por ejemplo, puede crear una definición de trabajo que ejecute el cuaderno XYZ.ipynb todos los miércoles. Esta definición de trabajo muestra las ejecuciones de trabajos reales que se producen el miércoles siguiente, el miércoles siguiente, y así sucesivamente. 

**nota**  
El paso de trabajo del bloc de notas del SDK de SageMaker Python no crea definiciones de trabajo. Sin embargo, puede ver sus trabajos en el panel Trabajos de cuaderno. Tanto los trabajos como las definiciones de trabajo están disponibles si programa su trabajo en un JupyterLab entorno.

La interfaz incluye dos pestañas principales que le ayudan a realizar un seguimiento de las definiciones y ejecuciones de los trabajos existentes:
+ Pestaña **Trabajos del cuaderno**: esta pestaña muestra una lista de todos los trabajos ejecutados a partir de los trabajos bajo demanda y las definiciones de trabajos. Desde esta pestaña, puede acceder directamente a los detalles de una sola ejecución de trabajo. Por ejemplo, puede ver una sola ejecución de trabajo que se realizó hace dos miércoles.
+ Pestaña **Definiciones de trabajos del cuaderno**: en esta pestaña se muestra una lista de todas las definiciones de los trabajos. Desde esta pestaña, puede acceder directamente a los detalles de una sola definición de trabajo. Por ejemplo, puede ver la programación que creó para ejecutar XYZ.ipynb todos los miércoles.

Para obtener más información sobre la pestaña **Trabajos del cuaderno**, consulte [Ver los trabajos del cuaderno](view-notebook-jobs.md).

Para obtener más información sobre la pestaña **Definiciones de trabajos del cuaderno**, consulte [Ver definiciones de trabajos del cuaderno](view-def-detail-notebook-auto-run.md).

# Ver los trabajos del cuaderno
<a name="view-notebook-jobs"></a>

**nota**  
Puede ver automáticamente los trabajos de cuaderno si los programa desde la interfaz de usuario de Studio. Si ha utilizado el SDK de SageMaker Python para programar el trabajo del bloc de notas, debe proporcionar etiquetas adicionales al crear el paso del trabajo del bloc de notas. Para obtener más información, consulte [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

En el siguiente tema, se proporciona información sobre la pestaña **Trabajos de cuaderno** y sobre cómo ver los detalles de un único trabajo de cuaderno. La pestaña **Trabajos de cuaderno** (a la que se accede mediante el icono de **Crear un trabajo de cuaderno** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/notebook-schedule.png)) en la barra de herramientas de Studio) muestra un historial de los trabajos bajo demanda y de todos los trabajos que se ejecutan a partir de las definiciones de trabajos que ha creado. Esta pestaña se abre después de crear un trabajo bajo demanda, o simplemente puede verla usted mismo para consultar el historial de los trabajos anteriores y actuales. Si selecciona el **Nombre del trabajo** de cualquier trabajo, puede ver los detalles de un solo trabajo en la página **Detalles del trabajo**. Para obtener más información sobre la página **Detalles del trabajo**, consulte la siguiente sección [Ver un solo trabajo](#view-jobs-detail-notebook-auto-run).

La pestaña **Trabajos del cuaderno** incluye la siguiente información para cada trabajo:
+ **Archivos de salida**: muestra la disponibilidad de los archivos de salida. Esta columna puede contener uno de los siguientes:
  + Un icono de descarga (![\[Cloud icon with downward arrow, representing download or cloud storage functionality.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/icons/File_download.png)): el cuaderno y el registro de salida se pueden descargar; pulse este botón para descargarlos. Tenga en cuenta que un trabajo con errores puede generar archivos de salida si el error se produjo después de la creación de los archivos. En este caso, resulta útil ver el cuaderno de salida para identificar el punto del error.
  + Enlaces al **Cuaderno** y al **Registro de salida**: se descargan el cuaderno y el registro de salida. Elija el enlace para ver el contenido.
  + (En blanco): el usuario detuvo el trabajo o se produjo un error en la ejecución del trabajo antes de que pudiera generar los archivos de salida. Por ejemplo, los errores de la red podrían impedir que se iniciara el trabajo.

  El cuaderno de salida es el resultado de ejecutar todas las celdas del cuaderno y también incorpora cualquier parámetro o variable de entorno nuevos o anulados que haya incluido. El registro de salida capta los detalles de la ejecución del trabajo para ayudarle a solucionar los problemas de los trabajos con errores.
+ **Creado en**: el momento en que se creó el trabajo bajo demanda o el trabajo programado.
+ **Estado**: el estado actual del trabajo, que es uno de los siguientes valores:
  + **En curso**: el trabajo se está ejecutando.
  + **Error**: el trabajo produjo un error debido a errores de configuración o de lógica del cuaderno.
  + **Detenido**: el usuario detuvo el trabajo.
  + **Completado**: el trabajo ha finalizado.
+ **Acciones**: esta columna proporciona atajos que le ayudarán a detener o eliminar cualquier trabajo directamente en la interfaz.

## Ver un solo trabajo
<a name="view-jobs-detail-notebook-auto-run"></a>

En la pestaña **Trabajos del cuaderno**, puede seleccionar un nombre de trabajo para ver la página **Detalles del trabajo** de un trabajo específico. La página **Detalles del trabajo** incluye todos los detalles que proporcionó en el formulario **Crear trabajo**. Utilice esta página para confirmar la configuración que especificó al crear la definición de trabajo. 

Además, puede acceder a atajos que le ayudarán a realizar las siguientes acciones en la propia página:
+ **Eliminar trabajo**: elimina el trabajo de la pestaña **Trabajos del cuaderno**.
+ **Detener trabajo**: detiene la ejecución del trabajo.

# Ver definiciones de trabajos del cuaderno
<a name="view-def-detail-notebook-auto-run"></a>

**nota**  
Si programó el trabajo de su cuaderno con el SDK de SageMaker Python, omita esta sección. Solo los trabajos de bloc de notas creados en Studio o en JupyterLab entornos locales crean definiciones de trabajo. Por lo tanto, si creó su trabajo de bloc de notas con el SDK de SageMaker Python, no verá las definiciones de trabajo en el panel de trabajos de bloc de notas. Sin embargo, puede ver los trabajos de cuaderno tal y como se describe en [Ver los trabajos del cuaderno](view-notebook-jobs.md). 

Al crear una definición de trabajo, crea una programación para un trabajo. La pestaña **Definiciones de trabajos de cuaderno** muestra estas programaciones, así como información sobre definiciones de trabajos de cuaderno específicas. Por ejemplo, puede crear una definición de trabajo que ejecute un cuaderno específico cada minuto. Una vez que esta definición de trabajo esté activa, verá un trabajo nuevo cada minuto en la pestaña **Trabajos del cuaderno**. La siguiente página proporciona información sobre la pestaña **Definiciones de trabajos de cuaderno**, así como sobre cómo ver una definición de trabajo de cuaderno.

La pestaña **Definiciones de trabajos del cuaderno** muestra un panel con todas las definiciones de trabajos e incluye el cuaderno de entrada, la hora de creación, la programación y el estado de cada definición de trabajo. La columna **Estado** contiene uno de los valores siguientes:
+ **En pausa**: ha puesto en pausa la definición del trabajo. Studio no inicia ningún trabajo hasta que se reanude la definición.
+ **Activo**: la programación está activa y Studio puede ejecutar el cuaderno según la programación que haya especificado.

Además, la columna **Acciones** proporciona atajos para ayudarle a realizar las siguientes tareas directamente en la interfaz:
+ En pausa: detiene la definición del trabajo. Studio no crea ningún trabajo hasta que se reanude la definición.
+ Eliminar: elimina la definición de trabajo de la pestaña **Definiciones de trabajos del cuaderno**.
+ Reanudar: continúa una definición de trabajo pausada para que pueda iniciar trabajos.

Si ha creado una definición de trabajo pero no inicia trabajos, consulte [La definición de trabajo no crea trabajos](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) en [Guía para solucionar problemas](notebook-auto-run-troubleshoot.md).

## Ver una sola definición de trabajo
<a name="view-job-definition-detail-page"></a>

Si selecciona el nombre de una definición de trabajo en la pestaña **Definiciones de trabajos del cuaderno**, verá la página **Definición del trabajo**, donde podrá ver detalles específicos de una definición de trabajo. Utilice esta página para confirmar la configuración que especificó al crear la definición de trabajo. Si no ve ningún trabajo creado a partir de su definición de trabajo, consulte [La definición de trabajo no crea trabajos](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) en [Guía para solucionar problemas](notebook-auto-run-troubleshoot.md).

Esta página también contiene una sección con una lista de los trabajos que se ejecutan a partir de esta definición de trabajo. Ver sus trabajos en la página **Definición del trabajo** puede ser una forma más productiva de ayudarle a organizar sus trabajos en lugar de verlos en la pestaña **Trabajos del cuaderno**, que combina todos los trabajos de todas sus definiciones de trabajo.

Además, en esta página se proporcionan atajos para las siguientes acciones:
+ **Pausar o reanudar**: ponga en pausa la definición de su trabajo o reanude una definición pausada. Tenga en cuenta que si actualmente se está ejecutando un trabajo para esta definición, Studio no lo detiene.
+ **Ejecutar**: ejecute un único trabajo bajo demanda a partir de esta definición de trabajo. Esta opción también le permite especificar diferentes parámetros de entrada en su cuaderno antes de iniciar el trabajo.
+ **Editar la definición de trabajo**: cambie la programación de su definición de trabajo. Puede seleccionar un intervalo de tiempo diferente o puede optar por un horario personalizado utilizando la sintaxis cron.
+ **Eliminar la definición de trabajo**: elimine la definición del trabajo de la pestaña **Definiciones de trabajos del cuaderno**. Tenga en cuenta que si actualmente se está ejecutando un trabajo para esta definición, Studio no lo detiene.

# Guía para solucionar problemas
<a name="notebook-auto-run-troubleshoot"></a>

Consulte esta guía de solución de problemas para ayudarle a eliminar los errores que puedan producirse al ejecutar el trabajo programado de su cuaderno.

## La definición de trabajo no crea trabajos
<a name="notebook-auto-run-troubleshoot-no-jobs"></a>

Si su definición de trabajo no inicia ningún trabajo, es posible que el cuaderno o el trabajo de formación no se muestren en la sección **Trabajos** de la barra de navegación izquierda de Amazon SageMaker Studio. Si es así, puede encontrar los mensajes de error en la sección **Canalizaciones** de la barra de navegación izquierda de Studio. Cada cuaderno o definición de trabajo de entrenamiento pertenece a una canalización de ejecución. Estas son las causas más comunes por las que no se pueden iniciar los trabajos de cuaderno.

**Permisos ausentes**
+ El rol asignado a la definición del puesto no tiene una relación de confianza con Amazon EventBridge. Es decir, EventBridge no puede asumir el rol.
+ El rol asignado a la definición de trabajo no tiene permiso para realizar llamadas `SageMaker AI:StartPipelineExecution`.
+ El rol asignado a la definición de trabajo no tiene permiso para realizar llamadas `SageMaker AI:CreateTrainingJob`.

**EventBridge cuota superada**

Si ve un `Put*` error como el del siguiente ejemplo, significa que ha superado una EventBridge cuota. Para resolver este problema, puedes limpiar las EventBridge carreras no utilizadas o solicitar AWS Support que se aumente la cuota.

```
LimitExceededException) when calling the PutRule operation: 
The requested resource exceeds the maximum number allowed
```

Para obtener más información sobre EventBridge las cuotas, consulta [ EventBridge las cuotas de Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

**Se ha superado el límite de cuota de canalizaciones**

Si ve un error como el del ejemplo siguiente, significa que ha superado el número de canalizaciones que puede ejecutar. Para solucionarlo, puede borrar las canalizaciones no utilizadas de su cuenta o solicitar a AWS Support que aumente su cuota.

```
ResourceLimitExceeded: The account-level service limit 
'Maximum number of pipelines allowed per account' is XXX Pipelines, 
with current utilization of XXX Pipelines and a request delta of 1 Pipelines.
```

Para obtener más información sobre las cuotas de canalización, consulta los [puntos de enlace y las cuotas de Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

**Se ha superado el límite de trabajos de entrenamiento**

Si ve un error como el del ejemplo siguiente, significa que ha superado el número de trabajos de entrenamiento que puede ejecutar. Para resolver este problema, reduzca la cantidad de trabajos de formación en su cuenta o solicite AWS Support aumentar su cuota.

```
ResourceLimitExceeded: The account-level service limit 
'ml.m5.2xlarge for training job usage' is 0 Instances, with current 
utilization of 0 Instances and a request delta of 1 Instances. 
Please contact AWS support to request an increase for this limit.
```

Para obtener más información sobre las cuotas de trabajo de formación, consulta los [puntos finales y las cuotas de Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

## Las visualizaciones automáticas están deshabilitadas en las libretas SparkMagic
<a name="notebook-auto-run-troubleshoot-visualization"></a>

Si su cuaderno usa el SparkMagic PySpark núcleo y usted lo ejecuta como un Notebook Job, es posible que vea que sus visualizaciones automáticas están deshabilitadas en la salida. Al activar la visualización automática, el kernel se bloquea, por lo que el ejecutor de trabajos del cuaderno deshabilita las visualizaciones automáticas como solución alternativa.

# Restricciones y consideraciones
<a name="notebook-auto-run-constraints"></a>

Revise las siguientes restricciones para asegurarse de que los trabajos de su cuaderno se completen correctamente. Studio usa Papermill para ejecutar cuadernos. Puede que tengas que actualizar los cuadernos de Jupyter para adaptarlos a los requisitos de Papermill. También hay restricciones en cuanto al contenido de los scripts de LCC y detalles importantes que hay que entender en relación con la configuración de la VPC.

## JupyterLab versión
<a name="notebook-auto-run-constraints-jpt"></a>

JupyterLab Se admite la versión 4.0.

## Instalación de paquetes que requieren reiniciar el kernel
<a name="notebook-auto-run-constraints-pmill-pkg"></a>

Papermill no admite llamadas `pip install` para instalar paquetes que requieran reiniciar el kernel. En este caso, use `pip install` en un script de inicialización. Si la instalación de un paquete no requiere reiniciar el kernel, también puede incluir `pip install` en el cuaderno. 

## Nombres de kernels y lenguajes registrados en Jupyter
<a name="notebook-auto-run-constraints-pmill-names"></a>

Papermill registra un traductor para kernels y lenguajes específicos. Si utiliza su propia instancia (BYOI), utilice un nombre de kernel estándar, como se muestra en el siguiente fragmento:

```
papermill_translators.register("python", PythonTranslator)
papermill_translators.register("R", RTranslator)
papermill_translators.register("scala", ScalaTranslator)
papermill_translators.register("julia", JuliaTranslator)
papermill_translators.register("matlab", MatlabTranslator)
papermill_translators.register(".net-csharp", CSharpTranslator)
papermill_translators.register(".net-fsharp", FSharpTranslator)
papermill_translators.register(".net-powershell", PowershellTranslator)
papermill_translators.register("pysparkkernel", PythonTranslator)
papermill_translators.register("sparkkernel", ScalaTranslator)
papermill_translators.register("sparkrkernel", RTranslator)
papermill_translators.register("bash", BashTranslator)
```

## Límites de parámetros y variables de entorno
<a name="notebook-auto-run-constraints-var-limits"></a>

**Límites de parámetros y variables de entorno.** Al crear el trabajo del cuaderno, este recibe los parámetros y las variables de entorno que especifique. Puede agregar hasta 100 parámetros. El nombre de cada parámetro puede tener una longitud máxima de 256 caracteres y el valor asociado puede tener una longitud máxima de 2500 caracteres. Si agrega variables de entorno, puede agregar hasta 28 variables. El nombre de la variable y el valor asociado pueden tener hasta 512 caracteres. Si necesita más de 28 variables de entorno, utilice variables de entorno adicionales en un script de inicialización que no limite el número de variables de entorno que puede utilizar.

## Visualización de trabajos y definiciones de trabajos
<a name="notebook-auto-run-constraints-view-job"></a>

**Visualización de trabajos y definiciones de trabajos** Si programa el trabajo del cuaderno en la interfaz de usuario de Studio del JupyterLab cuaderno, podrá [ver los trabajos del cuaderno y las definiciones de los trabajos](https://docs.aws.amazon.com/sagemaker/latest/dg/view-notebook-jobs.html) [del cuaderno](https://docs.aws.amazon.com/sagemaker/latest/dg/view-def-detail-notebook-auto-run.html) en la interfaz de usuario de Studio. Si programó su trabajo de bloc de notas con el SDK de SageMaker Python, solo podrá ver sus trabajos; el paso de trabajo del bloc de notas del SDK de SageMaker Python no crea definiciones de trabajo. Para ver sus trabajos, también debe añadir etiquetas adicionales a la instancia del paso de trabajo de cuaderno. Para obtener más información, consulte [Consulte los trabajos de cuaderno en el panel de la interfaz de usuario de Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

## Image
<a name="notebook-auto-run-constraints-image"></a>

Debe administrar las restricciones de imagen en función de si ejecuta los trabajos del cuaderno en Studio o el paso del trabajo del cuaderno del SDK de SageMaker Python en una canalización.

### Restricciones de imagen para los trabajos de SageMaker AI Notebook (Studio)
<a name="notebook-auto-run-constraints-image-studio"></a>

**Compatibilidad de imágenes y kernels.** El controlador que inicia el trabajo del cuaderno presupone lo siguiente:
+ Se instala un entorno de ejecución básico de Python en las imágenes de Studio o bring-your-own (BYO) y es el predeterminado en el shell.
+ El entorno de tiempo de ejecución básico de Python incluye el cliente Jupyter con las especificaciones del kernel correctamente configuradas.
+ El entorno de tiempo de ejecución básico de Python incluye la función `pip` para que el trabajo del cuaderno pueda instalar las dependencias del sistema.
+ En el caso de imágenes con varios entornos, el script de inicialización debe cambiar al entorno específico del kernel adecuado antes de instalar los paquetes específicos del cuaderno. Debe volver al entorno de tiempo de ejecución de Python predeterminado, si es diferente del entorno de tiempo de ejecución del kernel, después de configurar el entorno de tiempo de ejecución de Python del kernel.

El controlador que inicia el trabajo de su cuaderno es un script bash, y Bash v4 debe estar disponible en /bin/bash. 

**Privilegios de root en bring-your-own-images (BYOI).** Debe tener privilegios raíz en sus propias imágenes de Studio, ya sea como usuario raíz o mediante acceso `sudo`. Si no es un usuario raíz pero accede a los privilegios raíz a través de `sudo`, use **1000/100** como `UID/GID`.

### Restricciones de imagen para trabajos de cuadernos del SDK de Python para SageMaker IA
<a name="notebook-auto-run-constraints-image-sdk"></a>

El paso de trabajo del cuaderno admite las siguientes imágenes:
+ SageMaker Las imágenes de distribución aparecen en[SageMaker Imágenes de Amazon disponibles para su uso con las libretas Studio Classic](notebooks-available-images.md).
+ Imagen personalizada basada en las imágenes SageMaker de distribución de la lista anterior. Utilice una [imagen de SageMaker distribución](https://github.com/aws/sagemaker-distribution) como base.
+ Una imagen personalizada (BYOI) preinstalada con las dependencias de los trabajos del portátil (es decir,. [sagemaker-headless-execution-driver](https://pypi.org/project/sagemaker-headless-execution-driver/) La imagen debe cumplir los siguientes requisitos:
  + La imagen viene preinstalada con dependencias de trabajos de cuaderno.
  + Se instala un entorno en tiempo de ejecución base de Python, que se encuentra de manera predeterminada en el entorno del intérprete de comandos.
  + El entorno de tiempo de ejecución básico de Python incluye el cliente Jupyter con las especificaciones del kernel correctamente configuradas.
  + Debe tener privilegios raíz, ya sea como usuario raíz o mediante acceso `sudo`. Si no es un usuario raíz pero accede a los privilegios raíz a través de `sudo`, use **1000/100** como `UID/GID`.

## Subredes de VPC utilizadas durante la creación de trabajos
<a name="notebook-auto-run-constraints-vpc"></a>

Si usa una VPC, Studio usa sus subredes privadas para crear su trabajo. Especifique de una a cinco subredes privadas (y de 1 a 15 grupos de seguridad).

Si utiliza una VPC con subredes privadas, debe elegir una de las siguientes opciones para garantizar que el trabajo del cuaderno se pueda conectar a los servicios o recursos dependientes:
+ Si el trabajo necesita acceder a un AWS servicio que admita puntos finales de VPC de interfaz, cree un punto final para conectarse al servicio. Para obtener una lista de los servicios que admiten los puntos finales de la interfaz, consulte los [AWS servicios que](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) se integran con. AWS PrivateLink Para obtener información sobre la creación de un punto de enlace de VPC de interfaz, consulte [Acceder a un AWS servicio mediante un punto de enlace de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) de interfaz. Como mínimo, se debe proporcionar una puerta de enlace de punto de conexión de VPC de Amazon S3.
+ Si un trabajo de notebook necesita acceder a un AWS servicio que no es compatible con los puntos finales de la VPC de la interfaz o a un recurso externo AWS, cree una puerta de enlace NAT y configure los grupos de seguridad para permitir las conexiones salientes. Para obtener información sobre la configuración de una puerta de enlace NAT para su VPC, consulte *VPC with public and private Subnets (NAT)* en la [Guía del usuario de Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Límites de los servicios
<a name="notebook-auto-run-constraints-service-limit"></a>

Dado que el programador de trabajos de notebook se ha creado a partir de los EventBridge servicios de Pipelines, SageMaker Training y Amazon, los trabajos de tu notebook están sujetos a sus cuotas específicas de servicio. Si supera estas cuotas, es posible que vea mensajes de error relacionados con estos servicios. Por ejemplo, hay límites en cuanto al número de canalizaciones que se pueden ejecutar a la vez y al número de reglas que se pueden configurar para un único bus de eventos. Para obtener más información sobre las cuotas de SageMaker IA, consulte [Amazon SageMaker AI Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html). Para obtener más información sobre EventBridge las cuotas, consulta [Amazon EventBridge Quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

# Precios de SageMaker Notebook Jobs
<a name="notebook-auto-run-pricing"></a>

Cuando programa tareas de cuadernos, sus cuadernos de Jupyter se ejecutan en SageMaker instancias de formación. Tras seleccionar una **Imagen** y un **Kernel** en el formulario **Crear trabajo**, el formulario proporciona una lista de los tipos de procesamiento disponibles. Se le cobrará por el tipo de procesamiento que elija, en función de la duración combinada de uso de todos los trabajos del cuaderno que se ejecuten a partir de la definición del trabajo. Si no especifica un tipo de procesamiento, SageMaker AI le asigna un tipo de instancia Amazon EC2 predeterminado de. `ml.m5.large` Para ver un desglose de los precios de la SageMaker IA por tipo de cómputo, consulta [Amazon SageMaker AI Pricing](https://aws.amazon.com/sagemaker/pricing).

# Programación de sus flujos de trabajo de ML
<a name="workflow-scheduling"></a>

Con Amazon SageMaker AI, puede administrar todo su flujo de trabajo de aprendizaje automático a medida que crea conjuntos de datos, realiza transformaciones de datos, crea modelos a partir de datos e implementa sus modelos en puntos finales para realizar inferencias. Si realiza algún subconjunto de pasos de su flujo de trabajo de forma periódica, también puede optar por ejecutar estos pasos de forma programada. Por ejemplo, es posible que desee programar un trabajo en SageMaker Canvas para ejecutar una transformación de datos nuevos cada hora. En otro escenario, puede programar un trabajo semanal para supervisar la desviación del modelo implementado. Puede especificar una programación periódica en cualquier intervalo de tiempo: puede repetirlo cada segundo, minuto, día, semana, mes o el tercer viernes de cada mes a las 15:00 h.

**En los siguientes escenarios, se resumen las opciones disponibles en función de su caso de uso.**
+ Caso de uso 1: **cree y programe su flujo de trabajo de ML en un entorno sin código**. Tanto para los principiantes como para los principiantes en la SageMaker IA, puede utilizar Amazon SageMaker Canvas tanto para crear su flujo de trabajo de aprendizaje automático como para crear ejecuciones programadas mediante el programador basado en la interfaz de usuario de Canvas.
+ Caso de uso 2: **cree su flujo de trabajo en un solo cuaderno de Jupyter y utilice un programador sin código**. Los profesionales con experiencia en ML pueden usar código para crear su flujo de trabajo de ML en un cuaderno de Jupyter y utilizar la opción de programación sin código disponible en el widget Trabajos de cuaderno. Si su flujo de trabajo de ML consta de varios cuadernos de Jupyter, puede usar la característica de programación del Python SDK de Canalizaciones que se describe en el caso de uso 3.
+ Caso de uso 3: **cree y programe su flujo de trabajo de ML con Canalizaciones**. Los usuarios avanzados pueden usar el [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), el editor visual de Amazon SageMaker Pipelines o las opciones de EventBridge programación de Amazon disponibles con Pipelines. Puede crear un flujo de trabajo de aprendizaje automático compuesto por pasos que incluyan operaciones con diversas funciones y AWS servicios de SageMaker IA, como Amazon EMR.


| Descriptor | Caso de uso 1 | Caso de uso 2 | Caso de uso 3 | 
| --- | --- | --- | --- | 
| SageMaker Función de IA | Procesamiento de datos de Amazon SageMaker Canvas y programación del flujo de trabajo de aprendizaje automático | Widget de programación de trabajos de cuaderno (IU) | Opciones de programación del Python SDK de Canalizaciones | 
| Description (Descripción) | Con Amazon SageMaker Canvas, puede programar ejecuciones automáticas de los pasos de procesamiento de datos y, en un procedimiento independiente, actualizaciones automáticas del conjunto de datos. También puede programar de forma indirecta todo su flujo de trabajo de ML mediante una configuración que ejecute una predicción por lotes cada vez que se actualice un conjunto de datos específico. Tanto para el procesamiento automatizado de datos como para las actualizaciones de los conjuntos de datos, SageMaker Canvas proporciona un formulario básico en el que puede seleccionar una fecha y hora de inicio y un intervalo de tiempo entre las ejecuciones (o una expresión cron si programa un paso de procesamiento de datos). Para obtener más información acerca de cómo programar los pasos de procesamiento de datos, consulte [Creación de una programación para procesar automáticamente los datos nuevos](canvas-data-export-schedule-job.md). Para obtener más información acerca de cómo programar actualizaciones de predicción de lotes y conjuntos de datos, consulte [¿Cómo administrar las automatizaciones](canvas-manage-automations.md). | Si ha creado su flujo de trabajo de procesamiento de datos y canalización en un solo cuaderno de Jupyter, puede utilizar el widget Trabajos de cuaderno para ejecutar el cuaderno bajo demanda o de forma programada. El widget Trabajos de cuaderno muestra un formulario básico en el que puede especificar el tipo de procesamiento, la programación de ejecución y la configuración personalizada opcional. La programación de ejecución se define seleccionando un intervalo temporal o insertando una expresión cron. El widget se instala automáticamente en Studio, o puede realizar una instalación adicional para utilizar esta función en su JupyterLab entorno local. Para obtener más información acerca de los trabajos de cuadernos, consulte [SageMaker Trabajos de cuaderno](notebook-auto-run.md). | Puedes usar las funciones de programación del SageMaker SDK si implementaste tu flujo de trabajo de aprendizaje automático con Pipelines. Su canalización puede incluir pasos como el afinamiento, el procesamiento de datos y la implementación. Canalizaciones admite dos formas de programar la canalización. Puede crear una EventBridge regla de Amazon o utilizar el [PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.triggers.PipelineSchedule)constructor del SageMaker SDK o el editor visual de Amazon SageMaker Pipelines para definir una programación. Para obtener más información sobre las opciones de programación disponibles en Canalizaciones, consulte [Programación de ejecuciones de canalizaciones](pipeline-eventbridge.md). | 
| Optimizado para | Proporciona una opción de programación para un flujo de trabajo de SageMaker Canvas ML | Proporciona una opción de programación basada en la interfaz de usuario para los flujos de trabajo de ML basados en el cuaderno de Jupyter | Proporciona un SageMaker SDK o una opción de EventBridge programación para los flujos de trabajo de aprendizaje automático | 
| Consideraciones | Puede programar su flujo de trabajo con el marco sin código de Canvas, pero las actualizaciones de conjuntos de datos y las actualizaciones de transformaciones por lotes pueden gestionar un máximo de 5 GB de datos. | Puede programar un cuaderno mediante el formulario de programación basado en la interfaz de usuario, pero no varios cuadernos, en el mismo trabajo. Para programar varios cuadernos, use la solución basada en código del SDK de Canalizaciones que se describe en el caso de uso 3. | Puede usar las funciones de programación más avanzadas (basadas en SDK) que ofrece Canalizaciones, pero debe consultar la documentación de la API para especificar las opciones correctas en lugar de seleccionarlas en un menú de opciones basado en la interfaz de usuario. | 
| Entorno recomendado | Amazon SageMaker Lienzo | Estudio, JupyterLab entorno local | Estudio, JupyterLab entorno local, cualquier editor de código | 

## Recursos adicionales
<a name="workflow-scheduling-addit"></a>

**SageMaker AI ofrece las siguientes opciones adicionales para programar tus flujos de trabajo.**
+ [¿Qué es Amazon EventBridge Scheduler?](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) . Las opciones de programación que se analizan en esta sección incluyen opciones prediseñadas disponibles en SageMaker Canvas, Studio y el SDK de Python para SageMaker IA. Todas las opciones amplían las funciones de Amazon EventBridge y también puedes crear tu propia solución de programación personalizada con ella EventBridge.
+ [Ejecuciones programadas y basadas en eventos para las canalizaciones del procesador de características](feature-store-feature-processor-schedule-pipeline.md). Con el procesamiento de funciones de Amazon SageMaker Feature Store, puede configurar sus procesos de procesamiento de características para que se ejecuten según una programación o como resultado de otro evento de AWS servicio.

# AWS Batch soporte para trabajos de formación en SageMaker IA
<a name="training-job-queues"></a>

Una [AWS Batch job queue](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html) almacena y prioriza los trabajos enviados antes de que se ejecuten en recursos de computación. Puede enviar los trabajos de formación en SageMaker IA a una cola de trabajos para aprovechar las herramientas de priorización y programación de tareas sin servidor que ofrecen. AWS Batch

## Funcionamiento
<a name="training-job-queues-how-it-works"></a>

En los siguientes pasos se describe el flujo de trabajo para utilizar una cola de trabajos con AWS Batch SageMaker trabajos de formación en IA. Para consultar tutoriales más detallados y cuadernos de ejemplo, consulte la sección [Introducción](#training-job-queues-get-started).
+ Configuración AWS Batch y todos los permisos necesarios. Para obtener más información, consulte [Configuración de AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/get-set-up-for-aws-batch.html) en la *Guía del usuario de AWS Batch *.
+ Cree los siguientes AWS Batch recursos en la consola o mediante AWS CLI:
  + [Entorno de servicio](https://docs.aws.amazon.com/batch/latest/userguide/service-environments.html): contiene parámetros de configuración para la integración con la SageMaker IA.
  + SageMaker Lista de [trabajos de formación en IA](https://docs.aws.amazon.com/batch/latest/userguide/create-sagemaker-job-queue.html): se integra con la SageMaker IA para enviar trabajos de formación.
+ Configura tus datos y solicita un trabajo de formación en SageMaker IA, como la imagen de tu contenedor de formación. Para enviar un trabajo de formación a una AWS Batch cola, puede utilizar el AWS CLI, el o el AWS SDK para Python (Boto3) SDK de Python para SageMaker IA.
+ Envíe los trabajos de entrenamiento a la cola de trabajos. Puede usar las siguientes opciones para enviar trabajos:
  + Uso de la API de AWS Batch [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html).
  + Usa el [`aws_batch`módulo](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/aws_batch) del SDK de Python para SageMaker IA. Tras crear un TrainingQueue objeto y un objeto de entrenamiento modelo (por ejemplo, un estimador o ModelTrainer), puedes enviar los trabajos de entrenamiento al TrainingQueue `queue.submit()` método.
+ Tras enviar los trabajos, consulta la cola de trabajos y el estado de los trabajos con la AWS Batch consola, la AWS Batch [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)API o la SageMaker API de IA. [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)

## Costo y disponibilidad
<a name="training-job-queues-cost-availability"></a>

Para obtener información detallada sobre los precios de los trabajos de formación, consulta [los precios de Amazon SageMaker AI](https://aws.amazon.com/sagemaker-ai/pricing/). Con AWS Batch, solo paga por AWS los recursos utilizados, como las instancias de Amazon EC2. Para más información, consulte [Precios de AWS Batch](https://aws.amazon.com/batch/pricing/).

Puede utilizarlos AWS Batch para trabajos de formación en SageMaker IA en cualquier Región de AWS lugar donde haya puestos de formación disponibles. Para obtener más información, consulte los [puntos de conexión y las cuotas de Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

Para asegurarse de que dispone de la capacidad necesaria cuando la necesita, puede utilizar los planes de formación flexibles (FTP) de SageMaker IA. Estos planes le permiten reservar capacidad para sus trabajos de entrenamiento. Si se combinan con las capacidades AWS Batch de hacer cola, puedes maximizar la utilización durante la vigencia de tu plan. Para obtener más información, consulta [Reserva planes de formación para tus HyperPod grupos o trabajos de formación](https://docs.aws.amazon.com/sagemaker/latest/dg/reserve-capacity-with-training-plans.html).

## Introducción
<a name="training-job-queues-get-started"></a>

Para ver un tutorial sobre cómo configurar una cola de AWS Batch trabajos y enviar trabajos de formación en SageMaker IA, consulte [Primeros pasos con la SageMaker IA AWS Batch en](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html) la *Guía del AWS Batch usuario*.

Para ver los cuadernos de Jupyter que muestran cómo usar el `aws_batch` módulo en el SDK de SageMaker Python [AWS Batch para IA, consulta los ejemplos de cuadernos de trabajos de formación de SageMaker IA en](https://github.com/aws/amazon-sagemaker-examples/tree/default/%20%20%20%20%20%20build_and_train_models/sm-training-queues) el repositorio. amazon-sagemaker-examples GitHub 