Prepara il tuo modello per l'implementazione - 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à.

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.

  1. 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*"
  2. 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')
  3. 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/
  4. 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})
  5. 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. SageMaker

    Devi 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 variabile compilation_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 } )