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à.
Preparazione del modello per l’implementazione
In questa sezione potrai creare oggetti SageMaker AI e AWS IoT client, scaricare un modello di machine learning pre-addestrato, caricare il tuo modello nel bucket Amazon S3, compilare il modello per il dispositivo di destinazione con SageMaker Neo e impacchettare il modello in modo che possa essere distribuito con l'agente Edge Manager.
-
Importare librerie e creare oggetti client.
Questo tutorial utilizza i client AWS SDK for Python (Boto3) per creare client che interagiscano 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 per l' SageMaker IA 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 l'IA. 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 su MobileNet V2, consulta il 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. Verifica se la tua versione di TensorFlow (o altro framework di scelta) è attualmente supportata da SageMaker Neo. Framework, dispositivi, sistemi e architetture supportatiSageMaker Neo richiede che i modelli siano 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 e un formato di input del modello specifici in base al framework di deep learning che utilizzi. 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'
CreateCompilationJobAPI per creare un lavoro di compilazione con SageMaker Neo. Fornisci un nome al processo di compilazione, l' SageMaker AI Role ARN, 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 desideri che l' SageMaker IA memorizzi il modello compilato e il target del tuo 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 lavori di packaging utilizzano modelli SageMaker compilati da NEO e apportano le modifiche necessarie per implementare il modello con il motore di inferenza, l'agente Edge Manager. Per impacchettare il tuo modello, crea un job di edge packaging con l'
create_edge_packagingAPI 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)CreateEdgePackagingJobUsalo per impacchettare il tuo Neo-compiled modello. 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 } )