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à.
Prepara il tuo modello per l'implementazione
In questa sezione creerai oggetti SageMaker e AWS IoT client, scaricherai un modello di machine learning pre-addestrato, caricherai il tuo modello nel tuo bucket Amazon S3, compilerai il tuo modello per il tuo dispositivo di destinazione SageMaker con Neo e impacchetterai il tuo modello in modo che possa essere distribuito con l'agente Edge Manager.
-
Importare librerie e creare oggetti client.
Questo tutorial utilizza AWS SDK for Python (Boto3) per creare client con cui interagire SageMaker, Amazon S3 e. AWS IoT
Importa Boto3, specifica la tua Regione e inizializza gli oggetti client necessari come mostrato nell'esempio seguente:
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)Definisci le variabili e assegna loro il ruolo per ARN cui hai creato SageMaker e AWS IoT come stringhe:
# 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*
" -
Addestrare un modello di machine learning
Consulta Train a Model with Amazon SageMaker per ulteriori informazioni su come addestrare un modello di machine learning utilizzando SageMaker. Facoltativamente, puoi caricare il tuo modello addestrato localmente direttamente in un bucket Amazon URI S3.
Se non disponi ancora di un modello, puoi utilizzare un modello già addestrato per le fasi successive di questo tutorial. Ad esempio, puoi salvare i modelli MobileNet V2 dal framework. TensorFlow MobileNet V2 è un modello di classificazione delle immagini ottimizzato per le applicazioni mobili. Per ulteriori informazioni su MobileNet V2, consulta la. MobileNet GitHub README
Digita quanto segue nel tuo Jupyter Notebook per salvare il modello V2 pre-addestrato: 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 non l'hai TensorFlow installato, puoi farlo eseguendo
pip install tensorflow=2.4
-
Usa TensorFlow la versione 2.4 o precedente per questo tutorial.
Il modello verrà salvato nel file
mobilenet_v2.h5
. Prima di impacchettare il modello, dovrai prima compilare il tuo modello usando SageMaker Neo. Controlla se Framework, dispositivi, sistemi e architetture supportati la tua versione di TensorFlow (o altro framework a tua scelta) è attualmente supportata da SageMaker Neo.SageMaker Neo richiede che i modelli vengano archiviati come TAR file compresso. Riconfezionalo come TAR file compresso (*.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')
-
-
Caricare i proprio modello su Amazon S3.
Una volta ottenuto un modello di machine learning, archiviarlo in un bucket Amazon S3. L'esempio seguente utilizza un AWS CLI comando per caricare il modello nel bucket Amazon S3 creato in precedenza in una directory chiamata models. Digita quanto segue nel tuo notebook Jupyter:
!aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
-
Compila il tuo modello con Neo. SageMaker
Compila il tuo modello di machine learning con SageMaker Neo per un dispositivo edge. È necessario conoscere il bucket Amazon S3 URI in cui è stato archiviato il modello addestrato, il framework di machine learning utilizzato per addestrare il modello, la forma dell'input del modello e il dispositivo di destinazione.
Per il modello MobileNet V2, usa quanto segue:
framework = 'tensorflow' target_device = 'jetson_nano' data_shape = '{"data":[1,3,224,224]}'
SageMaker Neo richiede una forma di input del modello e un formato del modello specifici basati sul framework di deep learning utilizzato. Per ulteriori informazioni su come salvare il modello, consulta Quali forme di dati di input si aspetta SageMaker Neo?. Per ulteriori informazioni sui framework supportati da Neo, consulta Framework, dispositivi, sistemi e architetture supportati.
Usa il
CreateCompilationJob
API per creare un lavoro di compilazione con SageMaker Neo. Fornisci un nome al processo di compilazione, al SageMaker ruoloARN, all'Amazon URI S3 in cui è archiviato il modello, la forma di input del modello, il nome del framework, l'Amazon URI S3 in cui SageMaker desideri archiviare il modello compilato e la destinazione del dispositivo edge.# 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})
-
Impacchettate il proprio modello compilato.
I processi di confezionamento utilizzano modelli SageMaker compilati in NEO e apportano le modifiche necessarie per distribuire il modello con il motore di inferenza, l'agente Edge Manager. Per creare il pacchetto del modello, crea un processo di edge packaging con la console o la
create_edge_packaging
API console. SageMakerDevi fornire il nome che hai usato per il tuo processo di compilazione Neo, un nome per il lavoro di packaging, un ruolo ARN (vedi Configurazione sezione), un nome per il modello, una versione del modello e il URI bucket Amazon S3 per l'output del processo di confezionamento. Si noti che i nomi dei processi di creazione pacchetti di Edge Manager fanno distinzione tra maiuscole e minuscole. Di seguito è riportato un esempio di come creare un processo di imballaggio utilizzando. API
edge_packaging_name='edge-packaging-demo' model_name="sample-model" model_version="1.1"
Definisci l'Amazon S3 URI in cui desideri archiviare il modello confezionato.
# 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)
Utilizza
CreateEdgePackagingJob
per impacchettare il tuo modello NEO-compilato. Fornisci un nome per il tuo processo di creazione di pacchetti edge e il nome che hai fornito per il tuo processo di compilazione (in questo esempio, è stato memorizzato nella variabilecompilation_job_name
). Fornisci anche un nome per il modello, una versione per il modello (utilizzato per aiutarti a tenere traccia della versione del modello che stai utilizzando) e l'S3 URI in cui desideri SageMaker archiviare il modello confezionato.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 } )