

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.

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