Nozioni di base sui dispositivi edge Neo - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nozioni di base sui dispositivi edge Neo

Questa guida per iniziare a usare Amazon SageMaker Neo mostra come compilare un modello, configurare il dispositivo e fare inferenze sul dispositivo. La maggior parte degli esempi di codice utilizza Boto3. Forniamo comandi, AWS CLI laddove applicabile, oltre a istruzioni su come soddisfare i prerequisiti per Neo.

Nota

È possibile eseguire i seguenti frammenti di codice sul computer locale, all'interno di un SageMaker notebook, all'interno di SageMaker Studio o (a seconda del dispositivo periferico) sul dispositivo periferico. La configurazione è simile; tuttavia, esistono due eccezioni principali se si esegue questa guida all'interno di un'istanza di SageMaker notebook o SageMaker di una sessione di Studio:

  • Non è necessario installare Boto3.

  • Non è necessario aggiungere la policy IAM ‘AmazonSageMakerFullAccess’

Questa guida presuppone che tu stia eseguendo le seguenti istruzioni sul tuo dispositivo edge.

Prerequisiti

  1. Installa Boto3

    Se stai eseguendo questi comandi sul tuo dispositivo edge, devi installare il AWS SDK for Python (Boto3). All'interno di un ambiente Python (preferibilmente un ambiente virtuale), esegui quanto segue localmente sul terminale del tuo dispositivo edge o all'interno di un'istanza del notebook Jupyter:

    Terminal
    pip install boto3
    Jupyter Notebook
    !pip install boto3
  2. Configurare le credenziali AWS

    Devi configurare le credenziali di Amazon Web Services sul dispositivo per eseguire SDK for Python (Boto3). Per impostazione predefinita, AWS le credenziali devono essere archiviate nel file ~/.aws/credentials sul dispositivo perimetrale. All'interno del file delle credenziali, dovresti vedere due variabili di ambiente: aws_access_key_id e aws_secret_access_key.

    Nel tuo terminale, esegui:

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

    La Guida di riferimento AWS generale contiene istruzioni su come ottenere le informazioni necessarie aws_access_key_id e aws_secret_access_key. Per ulteriori informazioni su come configurare le credenziali sul dispositivo, consulta la documentazione di Boto3.

  3. Configura un ruolo IAM e collega le policy.

    Neo deve accedere all'URI del bucket S3. Crea un ruolo IAM che possa essere eseguito SageMaker e che disponga dell'autorizzazione per accedere all'URI S3. Puoi creare un ruolo IAM utilizzando SDK for Python (Boto3), la console o AWS CLI. Nel seguente esempio viene illustrato come creare un ruolo IAM utilizzando SDK per 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'

    Per ulteriori informazioni su come creare un ruolo IAM con la console o tramite l' AWS API AWS CLI, consulta Creazione di un utente IAM nel tuo AWS account.

    Crea un dizionario che descriva la policy IAM che stai collegando. Questa policy è utilizzata per creare un nuovo ruolo IAM.

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

    Crea un nuovo ruolo IAM utilizzando la policy che hai definito sopra:

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

    Devi sapere qual è il tuo Amazon Resource Name (ARN) quando crei un lavoro di compilazione in una fase successiva, quindi memorizzalo anche in una variabile.

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

    Ora che hai creato un nuovo ruolo, allega le autorizzazioni necessarie per interagire con Amazon SageMaker e 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. Crea un bucket Amazon S3 per archiviare gli artefatti del modello

    SageMaker Neo accederà agli artefatti del tuo modello da 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. Addestra un modello di machine learning

    SageMakerPer ulteriori informazioni su come addestrare un modello di machine learning con Amazon, consulta Train a Model with Amazon SageMaker. Facoltativamente, puoi caricare il tuo modello addestrato localmente direttamente in un bucket URI Amazon S3.

    Nota

    Assicurati che il modello sia formattato correttamente a seconda del framework che hai utilizzato. Vedi Quali forme di dati di input si aspetta SageMaker Neo?

    Se non hai ancora un modello, usa il curl comando per ottenere una copia locale del coco_ssd_mobilenet modello dal sito web TensorFlow del sito web. Il modello che hai appena copiato è un modello di rilevamento di oggetti addestrato dal set di dati COCO. Digita quanto segue nel tuo notebook 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}

    Nota che questo particolare esempio è stato impacchettato in un file .zip. Decomprimi questo file e comprimilo nuovamente come tarfile compresso (.tar.gz) prima di utilizzarlo nei passaggi successivi. Digita quanto segue nel tuo notebook 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. Carica il modello addestrato in un bucket S3

    Dopo aver addestrato la modalità di machine learning, archiviala in un bucket S3.

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

    Sostituisci your-model-filename e your-S3-bucket con il nome del bucket Amazon S3.

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