Prepare o modelo para implantação - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Prepare o modelo para implantação

Nesta seção, você criará objetos de SageMaker IA e de AWS IoT cliente, fará o download de um modelo de aprendizado de máquina pré-treinado, carregará seu modelo no bucket do Amazon S3, compilará seu modelo para seu dispositivo de destino SageMaker com o Neo e empacotará seu modelo para que ele possa ser implantado com o agente do Edge Manager.

  1. Importe bibliotecas e crie objetos de cliente.

    Este tutorial usa o AWS SDK for Python (Boto3) para criar clientes para interagir com SageMaker IA, Amazon S3 e. AWS IoT

    Importe o Boto3, especifique sua região e inicialize os objetos do cliente necessários, conforme mostrado no seguinte exemplo:

    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 variáveis e atribua a elas o ARN da função que você criou para a SageMaker IA e AWS IoT como strings:

    # 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. Treinar um modelo de machine learning.

    Consulte Treinar um modelo com a Amazon SageMaker para obter mais informações sobre como treinar um modelo de aprendizado de máquina usando SageMaker IA. Se preferir, carregue seu modelo treinado localmente diretamente em um bucket de URI do Amazon S3.

    Se você ainda não tiver um modelo, pode usar um modelo pré-treinado para as próximas etapas deste tutorial. Por exemplo, você pode salvar os modelos MobileNet V2 da TensorFlow estrutura. MobileNet O V2 é um modelo de classificação de imagens otimizado para aplicativos móveis. Para obter mais informações sobre a MobileNet V2, consulte o MobileNet GitHub README.

    Digite o seguinte em seu notebook Jupyter para salvar o modelo V2 pré-treinado MobileNet :

    # Save the MobileNet V2 model to local storage import tensorflow as tf model = tf.keras.applications.MobileNetV2() model.save(“mobilenet_v2.h5”)
    nota
    • Se você não tiver TensorFlow instalado, poderá fazer isso executando pip install tensorflow=2.4

    • Use a TensorFlow versão 2.4 ou inferior para este tutorial.

    O modelo será salvo no arquivo mobilenet_v2.h5. Antes de empacotar o modelo, você precisará primeiro compilar seu modelo usando SageMaker o Neo. Verifique Estruturas, dispositivos, sistemas e arquiteturas compatíveis se sua versão do TensorFlow (ou outra estrutura de sua escolha) é atualmente suportada pelo SageMaker Neo.

    SageMaker O Neo exige que os modelos sejam armazenados como um arquivo TAR compactado. Reempacote-o como um arquivo TAR compactado (*.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. Faça upload de seus arquivos para o Amazon S3.

    Depois de treinar seu modo de machine learning, armazene-o em um bucket S3 do Amazon. O exemplo a seguir usa um AWS CLI comando para carregar o modelo para o bucket do Amazon S3 que você criou anteriormente em um diretório chamado models. Digite o seguinte em seu caderno Jupyter:

    !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
  4. Compile seu modelo com o SageMaker Neo.

    Compile seu modelo de aprendizado de máquina com SageMaker o Neo para um dispositivo de ponta. Você precisa conhecer o URI do bucket do Amazon S3 onde você armazenou o modelo treinado, a estrutura de machine learning que você usou para treinar seu modelo, a forma da entrada do seu modelo e seu dispositivo de destino.

    Para o modelo MobileNet V2, use o seguinte:

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

    SageMaker O Neo requer uma forma de entrada de modelo e um formato de modelo específicos com base na estrutura de aprendizado profundo que você usa. Para obter mais informações sobre como salvar seu modelo, consulte Quais formatos de dados de entrada o SageMaker Neo espera?. Para obter mais informações sobre os dispositivos e frameworks compatíveis com o Neo, consulte Estruturas, dispositivos, sistemas e arquiteturas compatíveis.

    Use a CreateCompilationJob API para criar um trabalho de compilação com SageMaker o Neo. Forneça um nome para o trabalho de compilação, o ARN da função de SageMaker IA, o URI do Amazon S3 em que seu modelo está armazenado, a forma de entrada do modelo, o nome da estrutura, o URI do Amazon S3 em que você SageMaker deseja que a IA armazene seu modelo compilado e o destino do seu dispositivo de ponta.

    # 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. Empacote seu modelo compilado.

    Os trabalhos de empacotamento SageMaker usam modelos compilados pelo NEO e fazem as alterações necessárias para implantar o modelo com o mecanismo de inferência, o agente do Edge Manager. Para empacotar seu modelo, crie um trabalho de empacotamento de borda com a create_edge_packaging API ou o console de SageMaker IA.

    Você precisa fornecer o nome usado para o trabalho de compilação do Neo, um nome para o trabalho de empacotamento, um ARN da função (consulte a seção Configuração), um nome para o modelo, uma versão do modelo e o URI do bucket do Amazon S3 para a saída do trabalho de empacotamento. Observe que os nomes de tarefas de empacotamento do Edge Manager diferenciam maiúsculas e minúsculas. Veja a seguir um exemplo de como criar um trabalho de empacotamento usando a API.

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

    Defina o URI do Amazon S3 em que deseja armazenar o modelo empacotado.

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

    Use CreateEdgePackagingJob para empacotar seu modelo compilado pelo NEO. Forneça um nome para seu trabalho de empacotamento de borda e o nome que você forneceu para seu trabalho de compilação (neste exemplo, ele foi armazenado na variável compilation_job_name). Forneça também um nome para seu modelo, uma versão para seu modelo (isso é usado para ajudá-lo a controlar qual versão do modelo você está usando) e o URI do S3 em que você deseja que a SageMaker IA armazene o modelo empacotado.

    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 } )