Prepare su modelo para la implementación - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prepare su modelo para la implementación

En esta sección, creará SageMaker objetos de AWS IoT cliente, descargará un modelo de aprendizaje automático previamente entrenado, cargará su modelo en su bucket de Amazon S3, compilará su modelo para su dispositivo de destino con SageMaker Neo y empaquetará su modelo para que pueda implementarse con el agente Edge Manager.

  1. Importar bibliotecas y crear objetos de cliente.

    En este tutorial se utiliza AWS SDK for Python (Boto3) para crear clientes con los que interactuar SageMaker, Amazon S3 y AWS IoT.

    Importe Boto3, especifique su Región e inicie los objetos de cliente que necesite, como se muestra en el siguiente ejemplo:

    import boto3 import json import time AWS_REGION = 'us-west-2'# Specify your Region bucket = 'bucket-name' sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION) iot_client = boto3.client('iot', region_name=AWS_REGION)

    Defina las variables y asígneles la función ARN que creó para SageMaker y AWS IoT como cadenas:

    # Replace with the role ARN you created for SageMaker sagemaker_role_arn = "arn:aws:iam::<account>:role/*" # Replace with the role ARN you created for AWS IoT. # Note: The name must start with 'SageMaker' iot_role_arn = "arn:aws:iam::<account>:role/SageMaker*"
  2. Formación de un modelo de machine learning.

    Consulte Train a Model with Amazon SageMaker para obtener más información sobre cómo entrenar un modelo de aprendizaje automático utilizando SageMaker. Si lo desea, puede cargar su modelo entrenado localmente directamente en un URI bucket de Amazon S3.

    Si aún no tiene un modelo, puede usar un modelo previamente formado para los siguientes pasos de este tutorial. Por ejemplo, puede guardar los modelos MobileNet V2 del TensorFlow marco. MobileNet V2 es un modelo de clasificación de imágenes optimizado para aplicaciones móviles. Para obtener más información sobre la MobileNet V2, consulte la MobileNet GitHub README.

    Escriba lo siguiente en su Jupyter Notebook para guardar el modelo V2 previamente entrenado MobileNet :

    # Save the MobileNet V2 model to local storage import tensorflow as tf model = tf.keras.applications.MobileNetV2() model.save(“mobilenet_v2.h5”)
    nota
    • Si no lo tiene TensorFlow instalado, puede hacerlo ejecutando pip install tensorflow=2.4

    • Utilice TensorFlow la versión 2.4 o inferior para este tutorial.

    El modelo se guardará en el archivo mobilenet_v2.h5. Antes de empaquetar el modelo, primero tendrá que compilarlo con SageMaker Neo. Consulte Marcos, dispositivos, sistemas y arquitecturas compatibles para comprobar si su versión de TensorFlow (u otro marco de su elección) es compatible actualmente con SageMaker Neo.

    SageMaker Neo requiere que los modelos se almacenen como un TAR archivo comprimido. Vuelva a empaquetarlo como un TAR archivo comprimido (*.tar.gz):

    # Package MobileNet V2 model into a TAR file import tarfile tarfile_name='mobilenet-v2.tar.gz' with tarfile.open(tarfile_name, mode='w:gz') as archive: archive.add('mobilenet-v2.h5')
  3. Cargar sus archivos en Amazon S3.

    Una vez que tenga un modelo de machine learning, guárdelo en un bucket de Amazon S3. En el siguiente ejemplo, se utiliza un AWS CLI comando para cargar el modelo en el bucket de Amazon S3 que creó anteriormente en un directorio denominado models. Escribe lo siguiente en su cuaderno de Jupyter:

    !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
  4. Compila tu modelo con SageMaker Neo.

    Compila tu modelo de aprendizaje automático con SageMaker Neo para crear un dispositivo periférico. Debe conocer el bucket de Amazon S3 en el URI que almacenó el modelo entrenado, el marco de aprendizaje automático que utilizó para entrenar el modelo, la forma de la entrada del modelo y el dispositivo de destino.

    Para el modelo MobileNet V2, utilice lo siguiente:

    framework = 'tensorflow' target_device = 'jetson_nano' data_shape = '{"data":[1,3,224,224]}'

    SageMaker Neo requiere una forma de entrada y un formato de modelo específicos en función del marco de aprendizaje profundo que utilice. Para obtener más información sobre cómo guardar su modelo, consulte ¿Qué formas de datos de entrada espera SageMaker Neo?. Para obtener más información acerca de dispositivos y marcos compatibles con Neo, consulte Marcos, dispositivos, sistemas y arquitecturas compatibles.

    Úsalo CreateCompilationJob API para crear un trabajo de compilación con SageMaker Neo. Proporcione un nombre al trabajo de compilación, el SageMaker rolARN, el Amazon S3 en el URI que se almacena el modelo, la forma de entrada del modelo, el nombre del marco, el Amazon S3 en el URI que SageMaker desea almacenar el modelo compilado y el objetivo del dispositivo perimetral.

    # Specify the path where your model is stored model_directory = 'models' s3_model_uri = 's3://{}/{}/{}'.format(bucket, model_directory, tarfile_name) # Store compiled model in S3 within the 'compiled-models' directory compilation_output_dir = 'compiled-models' s3_output_location = 's3://{}/{}/'.format(bucket, compilation_output_dir) # Give your compilation job a name compilation_job_name = 'getting-started-demo' sagemaker_client.create_compilation_job(CompilationJobName=compilation_job_name, RoleArn=sagemaker_role_arn, InputConfig={ 'S3Uri': s3_model_uri, 'DataInputConfig': data_shape, 'Framework' : framework.upper()}, OutputConfig={ 'S3OutputLocation': s3_output_location, 'TargetDevice': target_device}, StoppingCondition={'MaxRuntimeInSeconds': 900})
  5. Empaquete su modelo compilado.

    Los trabajos de empaquetado SageMaker utilizan modelos compilados por NEO y realizan los cambios necesarios para implementar el modelo con el motor de inferencia, el agente Edge Manager. Para empaquetar el modelo, cree un trabajo de empaquetado perimetral con la consola create_edge_packaging API o la consola. SageMaker

    Debe proporcionar el nombre que utilizó para el trabajo de compilación de Neo, un nombre para el trabajo de empaquetado, una función ARN (consulte la Configuración sección), un nombre para el modelo, una versión del modelo y el bucket de Amazon S3 URI para el resultado del trabajo de empaquetado. Tenga en cuenta que los nombres de los trabajos de empaquetado de Edge Manager distinguen entre mayúsculas y minúsculas. A continuación, se muestra un ejemplo de cómo crear un trabajo de empaquetado conAPI.

    edge_packaging_name='edge-packaging-demo' model_name="sample-model" model_version="1.1"

    Defina el Amazon S3 URI en el que desea almacenar el modelo empaquetado.

    # Output directory where you want to store the output of the packaging job packaging_output_dir = 'packaged_models' packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)

    Utilice CreateEdgePackagingJob para empaquetar su modelo compilado en NEO. Proporcione un nombre para el trabajo de empaquetado periférico y el nombre que proporcionó para el trabajo de compilación (en este ejemplo, se almacenó en la variable compilation_job_name). Indique también un nombre para su modelo, una versión para su modelo (esto se utiliza para ayudarle a llevar un registro de la versión del modelo que está utilizando) y el S3 URI en el que SageMaker desea almacenar el modelo empaquetado.

    sagemaker_client.create_edge_packaging_job( EdgePackagingJobName=edge_packaging_name, CompilationJobName=compilation_job_name, RoleArn=sagemaker_role_arn, ModelName=model_name, ModelVersion=model_version, OutputConfig={ "S3OutputLocation": packaging_s3_output } )