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à.
SageMaker Neo è una funzionalità che consente di addestrare i modelli di machine learning una sola volta e di eseguirli ovunque nel cloud e all'edge. Prima di poter compilare e ottimizzare i modelli con Neo, è necessario configurare alcuni prerequisiti. È necessario installare le librerie Python necessarie, configurare le AWS credenziali, creare un ruolo IAM con le autorizzazioni richieste e configurare un bucket S3 per l'archiviazione degli artefatti del modello. È inoltre necessario disporre di un modello di machine learning addestrato. I seguenti passaggi ti guidano nella configurazione:
-
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:
pip install boto3
-
Configurare AWS le credenziali
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
eaws_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
eaws_secret_access_key
. Per ulteriori informazioni su come configurare le credenziali sul dispositivo, consulta la documentazione di Boto3. -
Configura un ruolo IAM e collega le policy.
Neo deve accedere all'URI del bucket S3. Crea un ruolo IAM in grado di eseguire l' SageMaker intelligenza artificiale 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 nome della risorsa Amazon (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 AI 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' );
-
Crea un bucket Amazon S3 per archiviare gli artefatti del modello
SageMaker Neo accederà agli artefatti del tuo modello da Amazon S3
# 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.')
-
Addestra un modello di machine learning
Consulta Train a Model with Amazon SageMaker AI per ulteriori informazioni su come addestrare un modello di machine learning utilizzando Amazon SageMaker AI. 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 delcoco_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 nelle fasi successive. 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}
-
Carica il modello addestrato in un bucket S3
Dopo aver addestrato la modalità di machine learning, archiviala in un bucket S3.
# Upload model s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)