

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.

# Cómo empaquetar un modelo
<a name="edge-packaging-job"></a>

SageMaker Los trabajos de empaquetado de Edge Manager toman modelos SageMaker compilados por Amazon NEO y realizan los cambios necesarios para implementar el modelo con el motor de inferencia, el agente Edge Manager.

**Topics**
+ [Cómo completar los requisitos previos de](edge-packaging-job-prerequisites.md)
+ [Package a model (Amazon SageMaker AI Console)](edge-packaging-job-console.md)
+ [Empaquetar un modelo (Boto3)](edge-packaging-job-boto3.md)

# Cómo completar los requisitos previos de
<a name="edge-packaging-job-prerequisites"></a>

Para empaquetar un modelo, debe hacer lo siguiente:

1. **Compila tu modelo de aprendizaje automático con SageMaker AI Neo.**

   Si aún no lo ha hecho, compile su modelo con SageMaker Neo. Para obtener más información sobre cómo compilar un modelo, consulte [Compilar e implementar modelos con Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html). Si es la primera vez que utilizas SageMaker Neo, consulta la sección [Cómo empezar con los dispositivos Neo Edge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html).

1. **Obtenga el nombre de su trabajo de compilación.**

   Indique el nombre del trabajo de compilación que utilizó al compilar el modelo con SageMaker Neo. Abre la consola de SageMaker IA en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)y selecciona **Trabajos de compilación** para encontrar una lista de las compilaciones que se han enviado a tu AWS cuenta. Los nombres de los trabajos de compilación enviados se encuentran en la columna **Nombre**.

1. **Obtenga su ARN de IAM.**

   Necesitas un nombre de recurso de Amazon (ARN) para un rol de IAM que puedas usar para descargar y cargar el modelo y ponerte en contacto con Neo. SageMaker 

   Utilice uno de los siguientes métodos para obtener el ARN de IAM:
   + **Programáticamente con el SDK de SageMaker Python para IA**

     ```
     import sagemaker
     
     # Initialize SageMaker Session object so you can interact with AWS resources
     sess = sagemaker.Session()
     
     # Get the role ARN 
     role = sagemaker.get_execution_role()
     
     print(role)
     >> arn:aws:iam::<your-aws-account-id>:role/<your-role-name>
     ```

     Para obtener más información sobre el uso del SDK de SageMaker Python, consulta la [API del SDK de Python de SageMaker AI](https://sagemaker.readthedocs.io/en/stable/index.html).
   + **Uso de la AWS Identity and Access Management consola (IAM)**

     Vaya a la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). En la sección **Recursos** de IAM, elija **Roles** para ver una lista de los roles de su cuenta AWS . Seleccione o cree un rol que tenga `AmazonSageMakerFullAccess`, `AWSIoTFullAccess` y `AmazonS3FullAccess`.

     Para obtener más información, consulte [¿Qué es IAM?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)

1. **Disponer de un URI de bucket de S3.**

   Debe tener al menos un URI de bucket de Amazon Simple Storage Service (Amazon S3) para almacenar el modelo compilado en NEO, el resultado del trabajo de empaquetado de Edge Manager y los datos de muestra de su flota de dispositivos.

   Utilice uno de los siguientes métodos para crear un bucket de Amazon S3:
   + **Programáticamente con el SDK de SageMaker Python para IA**

     Puede usar el bucket de Amazon S3 predeterminado durante una sesión. Se crea un bucket predeterminado en función del siguiente formato: `sagemaker-{region}-{aws-account-id}`. Para crear un bucket predeterminado con el SDK de SageMaker Python, usa lo siguiente:

     ```
     import sagemaker
     
     session=sagemaker.create_session()
     
     bucket=session.default_bucket()
     ```
   + **Uso de la consola de Amazon S3**

     Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)y consulte [¿Cómo puedo crear un bucket de S3?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) para step-by-step obtener instrucciones.

# Package a model (Amazon SageMaker AI Console)
<a name="edge-packaging-job-console"></a>

Puede crear un trabajo de empaquetado de SageMaker Edge Manager mediante la consola de SageMaker IA de [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/). Antes de continuar, asegúrese de haber cumplido los [Cómo completar los requisitos previos de](edge-packaging-job-prerequisites.md).

1. En la consola de SageMaker IA, selecciona **Edge Inference** y, a continuación, selecciona **Crear trabajos de embalaje perimetral**, como se muestra en la siguiente imagen.  
![\[Ubicación de la opción Crear trabajo de empaquetado de Edge en la consola\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/smith/pre-edge-packaging-button-edited.png)

1. En la página de **Propiedades del trabajo**, introduzca un nombre para su trabajo de empaquetado en **Nombre del trabajo de empaquetado de Edge**. Tenga en cuenta que los nombres de los trabajos de empaquetado de Edge Manager distinguen entre mayúsculas y minúsculas. Asigne un nombre a su modelo y asígnele una versión: introdúzcala en **Nombre del modelo** y **Versión del modelo**, respectivamente.

1. A continuación, seleccione un **Rol de IAM**. Puede elegir un rol o dejar que AWS cree uno para usted. Si lo desea, puede especificar un **ARN de clave de recurso** y **etiquetas de trabajo**.

1. Elija **Siguiente**.   
![\[Ejemplo de la sección Propiedades del trabajo de la consola\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/smith/create-edge-packaging-job-filled.png)

1. Especifique el nombre del trabajo de compilación que utilizó al compilar el modelo con SageMaker Neo en el campo **Nombre del trabajo de compilación**. Elija **Siguiente**.  
![\[Ejemplo de la sección Origen del modelo de la consola\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/smith/create-edge-packaging-job-model-source-filled.png)

1. En la página de **Configuración de salida**, introduzca el URI del bucket de Amazon S3 en el que desea almacenar el resultado del trabajo de empaquetado.  
![\[Ejemplo de la página Configuración de salida de la consola\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/smith/create-device-fleet-output-filled.png)

   La columna **Estado** de la página de trabajos de **empaquetado periféricos** debe indicar **EN CURSO**. Una vez que se complete el trabajo de empaquetado, el estado se actualizará a **COMPLETADO**.

   Al seleccionar un trabajo de empaquetado, accederá a la configuración de ese trabajo. La sección **Configuración del trabajo** muestra el nombre del trabajo, ARN, estado, hora de creación, hora de última modificación, duración del trabajo de empaquetado y ARN del rol.

   La sección de **Configuración de entrada** muestra la ubicación de los artefactos del modelo, la configuración de entrada de datos y el marco de machine learning del modelo.

   La sección de **Configuración de salida** muestra la ubicación de salida del trabajo de empaquetado, el dispositivo de destino para el que se compiló el modelo y cualquier etiqueta que haya creado.

1. Elija el nombre de su flota de dispositivos para que se le redirija a los detalles de la misma. Esta página muestra el nombre de la flota de dispositivos, el ARN, la descripción (si la ha proporcionado), la fecha de creación de la flota, la última vez que se modificó la flota, el URI del bucket de Amazon S3, el ID de clave AWS KMS (si se proporcionó), el alias AWS IoT (si se proporcionó) y el rol de IAM. Si ha añadido etiquetas, aparecerán en la sección **Etiquetas de la flota de dispositivos**.

# Empaquetar un modelo (Boto3)
<a name="edge-packaging-job-boto3"></a>

Puede crear un trabajo de empaquetado de SageMaker Edge Manager con AWS SDK para Python (Boto3). Antes de continuar, asegúrese de haber cumplido los [Cómo completar los requisitos previos de](edge-packaging-job-prerequisites.md).

Para solicitar un trabajo de empaquetado periférico, utilice `CreateEdgePackagingJob`. Debe proporcionar un nombre a su trabajo de embalaje perimetral, el nombre de su trabajo de compilación de SageMaker Neo, su función, el nombre del recurso de Amazon (ARN), un nombre para su modelo, una versión para su modelo y el URI del bucket de Amazon S3 en el que desea almacenar el resultado de su trabajo de embalaje. Tenga en cuenta que los nombres de los trabajos de empaquetado de Edge Manager y los nombres de los trabajos de compilación de SageMaker Neo distinguen mayúsculas de minúsculas.

```
# Import AWS SDK for Python (Boto3)
import boto3

# Create Edge client so you can submit a packaging job
sagemaker_client = boto3.client("sagemaker", region_name='aws-region')

sagemaker_client.create_edge_packaging_job(
    EdgePackagingJobName="edge-packaging-name",
    CompilationJobName="neo-compilation-name",
    RoleArn="arn:aws:iam::99999999999:role/rolename",
    ModelName="sample-model-name",
    ModelVersion="model-version",
    OutputConfig={
        "S3OutputLocation": "s3://your-bucket/",
    }
)
```

Puede comprobar el estado de un trabajo de empaquetado periférico utilizando `DescribeEdgePackagingJob` y proporcionando el nombre del trabajo de empaquetado periférico, con distinción entre mayúsculas y minúsculas:

```
response = sagemaker_client.describe_edge_packaging_job(
                                    EdgePackagingJobName="edge-packaging-name")
```

Esto muestra un diccionario que se puede utilizar para sondear el estado del trabajo de empaquetado:

```
# Optional - Poll every 30 sec to check completion status
import time

while True:
    response = sagemaker_client.describe_edge_packaging_job(
                                         EdgePackagingJobName="edge-packaging-name")
    
    if response['EdgePackagingJobStatus'] == 'Completed':
        break
    elif response['EdgePackagingJobStatus'] == 'Failed':
        raise RuntimeError('Packaging job failed')
    print('Packaging model...')
    time.sleep(30)
print('Done!')
```

Para obtener una lista de trabajos de empaquetado, utilice `ListEdgePackagingJobs`. Puede utilizar esta API para buscar un trabajo de empaquetado específico. Proporcione un nombre parcial para filtrar los nombres de los trabajos de empaquetado para `NameContains` y un nombre parcial para `ModelNameContains` para filtrar los trabajos en los que el nombre del modelo contiene el nombre que usted haya facilitado. Especifique también con qué columna se va a ordenar `SortBy` y en qué dirección se va a ordenar `SortOrder` (`Ascending`o bien `Descending`).

```
sagemaker_client.list_edge_packaging_jobs(
    "NameContains": "sample",
    "ModelNameContains": "sample",
    "SortBy": "column-name",
    "SortOrder": "Descending"
)
```

Para detener un trabajo de empaquetado, utilice `StopEdgePackagingJob` y proporcione el nombre del trabajo de empaquetado periférico.

```
sagemaker_client.stop_edge_packaging_job(
        EdgePackagingJobName="edge-packaging-name"
)
```

Para obtener una lista completa de Edge Manager APIs, consulte la documentación de [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).