Conceitos básicos do Neo em dispositivos Edge - 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á.

Conceitos básicos do Neo em dispositivos Edge

Este guia para começar a usar SageMaker o Amazon Neo mostra como compilar um modelo, configurar seu dispositivo e fazer inferências em seu dispositivo. A maioria dos exemplos de código usa o Boto3. Fornecemos comandos usando AWS CLI quando aplicável, bem como instruções sobre como satisfazer os pré-requisitos do Neo.

nota

Você pode executar os seguintes trechos de código em sua máquina local, em um SageMaker notebook, no SageMaker Studio ou (dependendo do seu dispositivo de borda) em seu dispositivo de borda. A configuração é semelhante; no entanto, há duas exceções principais se você executar este guia em uma instância de SageMaker notebook ou sessão do SageMaker Studio:

  • Não há necessidade de Instalar o Boto3.

  • Não há necessidade de adicionar a política ‘AmazonSageMakerFullAccess’ do IAM

Este guia pressupõe que você esteja executando as seguintes instruções em seu dispositivo Edge.

Pré-requisitos

  1. Instale o Boto3

    Se estiver executando esses comandos em seu dispositivo de borda, você deve instalar o AWS SDK for Python (Boto3). Em um ambiente Python (de preferência um ambiente virtual), execute o seguinte localmente no terminal do seu dispositivo de borda ou em uma instância do bloco de anotações Jupyter:

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. Configurar AWS credenciais

    É necessário configurar credenciais do Amazon Web Services no seu dispositivo para executar o SDK para Python (Boto3). Por padrão, as AWS credenciais devem ser armazenadas no arquivo ~/.aws/credentials em seu dispositivo de borda. No arquivo de credenciais, você deve ver duas variáveis de ambiente: aws_access_key_id e aws_secret_access_key.

    No seu terminal, execute:

    $ more ~/.aws/credentials [default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY

    O Guia de Referência Geral AWS tem instruções sobre como obter o necessário aws_access_key_id e aws_secret_access_key. Para obter mais informações sobre como configurar credenciais no seu dispositivo, consulte a documentação do Boto3.

  3. Configure uma função do IAM e anexe políticas.

    O Neo precisa acessar o URI do seu bucket do S3. Crie uma função do IAM que possa ser executada SageMaker e tenha permissão para acessar o URI do S3. É possível criar um perfil do IAM usando o SDK para Python (Boto3), o console ou o AWS CLI. O exemplo a seguir ilustra como criar um perfil do IAM usando o SDK para Python (Boto3):

    import boto3 AWS_REGION = 'aws-region' # Create an IAM client to interact with IAM iam_client = boto3.client('iam', region_name=AWS_REGION) role_name = 'role-name'

    Para obter mais informações sobre como criar uma função do IAM com o console ou por meio da AWS API, consulte Como criar um usuário do IAM em sua AWS conta. AWS CLI

    Crie um dicionário descrevendo a política do IAM que você está anexando. Essa política é usada para criar um novo perfil do IAM.

    policy = { 'Statement': [ { 'Action': 'sts:AssumeRole', 'Effect': 'Allow', 'Principal': {'Service': 'sagemaker.amazonaws.com'}, }], 'Version': '2012-10-17' }

    Crie uma nova função do IAM usando a política que você definiu acima:

    import json new_role = iam_client.create_role( AssumeRolePolicyDocument=json.dumps(policy), Path='/', RoleName=role_name )

    Você precisa saber qual é o seu nome de recurso da Amazon (ARN) quando criar um trabalho de compilação em uma etapa posterior, portanto, armazene-o também em uma variável.

    role_arn = new_role['Role']['Arn']

    Agora que você criou uma nova função, anexe as permissões necessárias para interagir com a Amazon SageMaker e o Amazon S3:

    iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess' ) iam_client.attach_role_policy( RoleName=role_name, PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess' );
  4. Crie um bucket do Amazon S3 para armazenar seus artefatos do modelo

    SageMaker Neo acessará seus artefatos de modelo a partir do Amazon S3

    Boto3
    # Create an S3 client s3_client = boto3.client('s3', region_name=AWS_REGION) # Name buckets bucket='name-of-your-bucket' # Check if bucket exists if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all(): s3_client.create_bucket( Bucket=bucket, CreateBucketConfiguration={ 'LocationConstraint': AWS_REGION } ) else: print(f'Bucket {bucket} already exists. No action needed.')
    CLI
    aws s3 mb s3://'name-of-your-bucket' --region specify-your-region # Check your bucket exists aws s3 ls s3://'name-of-your-bucket'/
  5. 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 a Amazon SageMaker. Se preferir, carregue seu modelo treinado localmente diretamente em um bucket de URI do Amazon S3.

    nota

    Verifique se o modelo está formatado corretamente, dependendo da estrutura usada. Consulte Quais formatos de dados de entrada o SageMaker Neo espera?

    Se você ainda não tiver um modelo, use o curl comando para obter uma cópia local do coco_ssd_mobilenet modelo no site TensorFlow da empresa. O modelo que você acabou de copiar é um modelo de detecção de objetos treinado a partir do conjunto de dados COCO. Digite o seguinte em seu caderno Jupyter:

    model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip' !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \ --output {model_zip_filename}

    Observe que esse exemplo específico foi empacotado em um arquivo .zip. Descompacte esse arquivo e reempacote-o como um arquivo tar comprimido (.tar.gz) antes de usá-lo em etapas posteriores. Digite o seguinte em seu bloco de anotações Jupyter:

    # Extract model from zip file !unzip -u {model_zip_filename} model_filename = 'detect.tflite' model_name = model_filename.split('.')[0] # Compress model into .tar.gz so SageMaker Neo can use it model_tar = model_name + '.tar.gz' !tar -czf {model_tar} {model_filename}
  6. Carregue o modelo treinado em um bucket S3

    Depois de treinar seu modo demachine learning, armazene-o em um bucket S3.

    Boto3
    # Upload model s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
    CLI

    Substitua your-model-filename e your-S3-bucket pelo nome do bucket do S3.

    aws s3 cp your-model-filename s3://your-S3-bucket