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à.
Compila il modello
Una volta soddisfatti i prerequisiti, puoi compilare il tuo modello con Amazon SageMaker Neo. Puoi compilare il tuo modello usando la AWS CLI console o Amazon Web Services SDK for Python (Boto3
Per compilare un modello, Neo richiede le seguenti informazioni: SageMaker
-
Il bucket Amazon S3 URI in cui è stato archiviato il modello addestrato.
Se hai seguito i prerequisiti, il nome del bucket viene memorizzato in una variabile denominata
bucket
. Il seguente frammento di codice mostra come elencare tutti i bucket utilizzando: AWS CLIaws s3 ls
Per esempio:
$ aws s3 ls 2020-11-02 17:08:50 bucket
-
Il bucket Amazon S3 URI in cui vuoi salvare il modello compilato.
Il frammento di codice riportato di seguito concatena il URI bucket Amazon S3 con il nome di una directory di output chiamata:
output
s3_output_location = f's3://{bucket}/output'
-
Il framework di machine learning che hai usato per addestrare il tuo modello.
Definisci il framework che hai usato per addestrare il tuo modello.
framework = 'framework-name'
Ad esempio, se desideri compilare un modello che è stato addestrato utilizzando, puoi utilizzare o. TensorFlow
tflite
tensorflow
tflite
Utilizzalo se desideri utilizzare una versione più leggera TensorFlow che utilizza meno memoria di archiviazione.framework = 'tflite'
Per un elenco completo dei framework supportati da NEO, consulta Framework, dispositivi, sistemi e architetture supportati.
-
La forma dell'input del modello.
Neo richiede il nome e la forma del tensore di input. Il nome e la forma sono passati come coppie chiave-valore.
value
è un elenco delle dimensioni intere di un tensore di input ekey
è il nome esatto di un tensore di input nel modello.data_shape = '{"name": [tensor-shape]}'
Per esempio:
data_shape = '{"normalized_input_image_tensor":[1, 300, 300, 3]}'
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? La chiave in questo dizionario deve essere modificata con il nome del nuovo tensore di input.
-
Il nome del dispositivo di destinazione per cui compilare o i dettagli generali della piattaforma hardware
target_device =
'target-device-name'
Ad esempio, se desideri eseguire l’implementazione su un Raspberry Pi 3, usa:
target_device = 'rasp3b'
Puoi trovare l'elenco completo dei dispositivi edge in Framework, dispositivi, sistemi e architetture supportati.
Ora che hai completato i passaggi precedenti, puoi inviare un lavoro di compilazione a Neo.
# Create a SageMaker client so you can submit a compilation job sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION) # Give your compilation job a name compilation_job_name = 'getting-started-demo' print(f'Compilation job for {compilation_job_name} started') response = sagemaker_client.create_compilation_job( CompilationJobName=compilation_job_name, RoleArn=role_arn, InputConfig={ 'S3Uri': s3_input_location, 'DataInputConfig': data_shape, 'Framework': framework.upper() }, OutputConfig={ 'S3OutputLocation': s3_output_location, 'TargetDevice': target_device }, StoppingCondition={ 'MaxRuntimeInSeconds': 900 } ) # Optional - Poll every 30 sec to check completion status import time while True: response = sagemaker_client.describe_compilation_job(CompilationJobName=compilation_job_name) if response['CompilationJobStatus'] == 'COMPLETED': break elif response['CompilationJobStatus'] == 'FAILED': raise RuntimeError('Compilation failed') print('Compiling ...') time.sleep(30) print('Done!')
Se desideri ulteriori informazioni per il debug, includi la seguente dichiarazione di stampa:
print(response)
Se il processo di compilazione ha esito positivo, il modello compilato viene archiviato nel bucket di output Amazon S3 specificato in precedenza (s3_output_location
). Scarica il modello compilato localmente:
object_path = f'output/{model}-{target_device}.tar.gz' neo_compiled_model = f'compiled-{model}.tar.gz' s3_client.download_file(bucket, object_path, neo_compiled_model)