

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

# Pré-requisitos
<a name="neo-getting-started-edge-step0"></a>

SageMaker O Neo é um recurso que permite treinar modelos de aprendizado de máquina uma vez e executá-los em qualquer lugar na nuvem e na borda. Antes de poder compilar e otimizar os modelos com o Neo, há alguns pré-requisitos que você precisa configurar. Você deve instalar as bibliotecas Python necessárias, configurar suas AWS credenciais, criar uma função do IAM com as permissões necessárias e configurar um bucket do S3 para armazenar artefatos do modelo. Você também deve ter um modelo de machine learning treinado e pronto. As seguintes etapas o guiarão na configuração:

1. **Instale o Boto3**

   Se estiver executando esses comandos em seu dispositivo de borda, você deve instalar o AWS SDK para 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 caderno Jupyter: 

------
#### [ Terminal ]

   ```
   pip install boto3
   ```

------
#### [ Jupyter Notebook ]

   ```
   !pip install boto3
   ```

------

1.  **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](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) 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](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration). 

1.  **Configure um perfil 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 executar SageMaker IA 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 seguinte exemplo 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_api). 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 novo perfil 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 o Amazon SageMaker AI 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'
   );
   ```

1. **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'}}/
   ```

------

1. **Treinar um modelo de machine learning**

   Consulte [Treinar um modelo com o Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) para obter mais informações sobre como treinar um modelo de aprendizado de máquina usando o Amazon SageMaker AI. 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?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) 

   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](https://cocodataset.org/#home). 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 caderno 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}
   ```

1. **Carregue o modelo treinado em um bucket S3**

   Depois de treinar seu modo de machine 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 `amzn-s3-demo-bucket` pelo nome do bucket do S3. 

   ```
   aws s3 cp {{your-model-filename}} s3://{{amzn-s3-demo-bucket}}
   ```

------