Treine, compile e empacote seu modelo - Amazon SageMaker

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

Treine, compile e empacote seu modelo

Nesta seção, você criará SageMaker e AWS IoT clientará objetos, baixará um modelo pré-treinado de aprendizado de máquina, 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 com os quais interagir SageMaker, Amazon S3 e. AWS IoT

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

    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 a função ARN que você criou para SageMaker e AWS IoT como cadeias de caracteres:

    # 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. Opcionalmente, você pode carregar seu modelo treinado localmente diretamente em um bucket do Amazon URI 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, você pode 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 TAR arquivo compactado. Reempacote-o como um TAR arquivo 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 bloco de anotações 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 bucket do Amazon S3 URI onde você armazenou o modelo treinado, a estrutura de aprendizado de máquina 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 suportados pelo Neo, consulte Estruturas, dispositivos, sistemas e arquiteturas compatíveis.

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

    # 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 o create_edge_packaging API ou com o SageMaker console.

    Você precisa fornecer o nome usado para o trabalho de compilação do Neo, um nome para o trabalho de empacotamento, uma função ARN (consulte a Configurar seção), um nome para o modelo, uma versão do modelo e o URI 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 API o.

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

    Defina o Amazon S3 URI onde você 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 S3 em URI que você SageMaker deseja armazenar 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 } )