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 di SageMaker intelligenza artificiale 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 lo utilizza AWS SDK for Python (Boto3) per creare client per interagire con SageMaker AI, 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 ARN che hai creato SageMaker per l'IA AWS IoT e 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 l' SageMaker intelligenza artificiale. Facoltativamente, puoi caricare il tuo modello addestrato localmente direttamente in un bucket URI Amazon 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 TensorFlow framework. MobileNet V2 è un modello di classificazione delle immagini ottimizzato per le applicazioni mobili. Per ulteriori informazioni sulla MobileNet V2, consulta il MobileNet GitHub file README.
Digita quanto segue nel tuo notebook Jupyter 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 file TAR compresso. Rimpacchettarlo come file TAR 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 l'URI del bucket Amazon S3 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 l'
CreateCompilationJob
API per creare un lavoro di compilazione con SageMaker Neo. Fornisci un nome al processo di compilazione, l'ARN del ruolo SageMaker AI, l'URI Amazon S3 in cui è archiviato il modello, la forma di input del modello, il nome del framework, l'URI Amazon S3 in cui SageMaker desideri che l'IA memorizzi il modello compilato e il target 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 packaging utilizzano modelli SageMaker NEO compilati e apportano le modifiche necessarie per distribuire il modello con il motore di inferenza, l'agente Edge Manager. Per impacchettare il tuo modello, crea un processo di edge packaging con l'
create_edge_packaging
API o la console AI. SageMakerDevi fornire il nome che hai usato per il tuo processo di compilazione Neo, un nome per il processo di impacchettamento, un ARN del ruolo (vedi sezione Configurazione), un nome per il modello, una versione del modello e l'URI del bucket Amazon S3 per l'output del processo di creazione pacchetti. Si noti che i nomi dei processi di creazione pacchetti di Edge Manager fanno distinzione tra maiuscole e minuscole. Ecco un esempio di come creare un creazione pacchetti utilizzando l'API.
edge_packaging_name='edge-packaging-demo' model_name="sample-model" model_version="1.1"
Definisci l'URI Amazon S3 in cui desideri memorizzare il modello in pacchetto.
# 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 tuo modello, una versione per il tuo modello (utilizzata per aiutarti a tenere traccia della versione del modello che stai utilizzando) e l'URI S3 in cui desideri che l' SageMaker IA memorizzi 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 } )