Esecuzione dell'inferenza di Machine Learning - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

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à.

Esecuzione dell'inferenza di Machine Learning

Questa funzione è disponibile solo perAWS IoT GreengrassCore v1.6 o versioni successive.

Con AWS IoT Greengrass, puoi eseguire l'inferenza di Machine Learning (ML) a livello di edge sui dati generati localmente utilizzando modelli qualificati per il cloud. In questo modo si beneficia della bassa latenza e dei risparmi sui costi dell'inferenza locale e si sfrutta la potenza del cloud computing per modelli di formazione ed elaborazioni complesse.

Per iniziare eseguendo un'inferenza locale, consulta Come configurare l'inferenza di Machine Learning mediante la AWS Management Console.

Come funziona un'inferenza di Machine Learning di AWS IoT Greengrass

Puoi addestrare i modelli di inferenza ovunque, distribuirli localmente comerisorse di machine learningin un gruppo Greengrass e quindi accedervi dalle funzioni di Greengrass Lambda. Ad esempio, puoi compilare e addestrare modelli di deep learning inSageMakere distribuiscili nel tuo nucleo Greengrass. Quindi, le tue funzioni Lambda possono utilizzare i modelli locali per eseguire l'inferenza sui dispositivi collegati e inviare nuovi dati di training al cloud.

Il seguente diagramma mostra il flusso di inferenza di Machine Learning di AWS IoT Greengrass.

Componenti del flusso di lavoro di Machine Learning e del flusso di informazioni tra il dispositivo principale,AWS IoT Greengrassmodelli qualificati per il servizio e qualificati per il cloud.

L'inferenza di Machine Learning AWS IoT Greengrass semplifica ogni fase del flusso di lavoro di Machine Learning, tra cui:

  • Sviluppo e distribuzione di prototipi di framework di Machine Learning.

  • Accesso a modelli qualificati per il cloud e distribuzione sui dispositivi core Greengrass.

  • Creazione di app di inferenza che possono accedere agli accelerator di hardware (come GPU e FPGA) come risorse locali.

Risorse di Machine Learning

Le risorse di Machine Learning rappresentano modelli di inferenza qualificati per il cloud che vengono distribuiti suAWS IoT Greengrassnucleo. Per distribuire le risorse di Machine Learning, devi prima aggiungere le risorse a un gruppo Greengrass e poi definire in che modo le funzioni Lambda nel gruppo possono accedervi. Durante l'installazione di gruppo,AWS IoT Greengrassrecupera i pacchetti del modello di origine dal cloud ed estrae le directory all'interno dello spazio dei nomi di runtime Lambda. Quindi, le funzioni Lambda di Greengrass utilizzano i modelli distribuiti localmente per eseguire l'inferenza.

Per aggiornare un modello distribuito localmente, aggiornare prima il modello di origine (nel cloud) che corrisponde alla risorsa di Machine Learning, quindi distribuire il gruppo. Durante la distribuzione, AWS IoT Greengrass controlla l'origine delle modifiche. Se vengono rilevate modifiche, allora AWS IoT Greengrass aggiorna il modello locale.

Origini di modello supportate

AWS IoT Greengrasssupporti SageMaker e origini di modello Amazon S3 per le risorse di Machine Learning.

I seguenti requisiti si applicano alle origini di modello:

  • secchi S3 che memorizzano il tuo SageMaker e le origini di modello Amazon S3 non devono essere crittografate tramite SSE-C. Per i bucket che utilizzano la crittografia lato server,AWS IoT GreengrassAttualmente, l'inferenza di Machine Learning supporta solo le opzioni di crittografia SSE-S3 o SSE-KMS. Per ulteriori informazioni sulle opzioni di crittografia lato server, consultaProtezione dei dati con la crittografia lato servernellaGuida utente di Amazon Simple Storage Service.

  • I nomi dei bucket S3 che memorizzano SageMaker e le origini di modello Amazon S3 non devono includere punti (.). Per ulteriori informazioni, consulta la regola sull'utilizzo di bucket in stile hosting virtuale con SSL inRegole per la denominazione dei bucketnellaGuida utente di Amazon Simple Storage Service.

  • Livello di servizioRegione AWSIl supporto deve essere disponibile sia perAWS IoT GreengrasseSageMaker. Attualmente,AWS IoT Greengrasssupporti SageMaker nei modelli nelle seguenti regioni:

    • Stati Uniti orientali (Ohio)

    • Stati Uniti orientali (Virginia settentrionale)

    • Stati Uniti occidentali (Oregon)

    • Asia Pacific (Mumbai)

    • Asia Pacifico (Seoul)

    • Asia Pacifico (Singapore)

    • Asia Pacifico (Sydney)

    • Asia Pacifico (Tokyo)

    • Europa (Francoforte)

    • Europa (Irlanda)

    • Europa (Londra)

  • AWS IoT Greengrass deve disporre delle autorizzazioni read per l'origine di modello, come descritto nelle seguenti sezioni.

SageMaker

AWS IoT Greengrasssupporta modelli salvati come SageMaker processi di training. SageMaker è un servizio di Machine Learning completamente gestito che consente di compilare e addestrare modelli utilizzando algoritmi integrati o personalizzati. Per ulteriori informazioni, consultaChe cos'è SageMaker?nellaGuida per sviluppatori di SageMaker.

Se hai configurato il tuo SageMaker ambiente da parte dicreazione di un bucketil cui nome contienesagemaker, quindiAWS IoT Greengrassha il permesso sufficiente per accedere al tuo SageMaker processi di training. La policy gestita AWSGreengrassResourceAccessRolePolicy consente di accedere ai bucket il cui nome contiene la stringa sagemaker. Questa policy è collegata al ruolo di servizio Greengrass.

In caso contrario, è necessario concedere l'autorizzazione AWS IoT Greengrass read al bucket in cui il tuo processo di training viene memorizzato. Per effettuare questa operazione, inserisci la seguente policy inline nel ruolo di servizio. È possibile elencare più ARN del bucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon S3

AWS IoT Greengrasssupporta i modelli che sono archiviati in Amazon S3 cometar.gzo.zipfile.

Per abilitareAWS IoT Greengrassper accedere ai modelli archiviati in bucket Amazon S3, devi concedereAWS IoT Greengrass readautorizzazione ad accedere ai bucket facendounodi quanto segue:

  • Archivia il modello in un bucket il cui nome contiene greengrass.

    La policy gestita AWSGreengrassResourceAccessRolePolicy consente di accedere ai bucket il cui nome contiene la stringa greengrass. Questa policy è collegata al ruolo di servizio Greengrass.

     

  • Incorpora una policy inline nel ruolo di servizio Greengrass.

    Se il nome del bucket non contiene greengrass, aggiungi le seguenti policy inline al ruolo di servizio. È possibile elencare più ARN del bucket.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    Per ulteriori informazioni, consultaIntegrazione delle policy inlinenellaIAM User Guide.

Requisiti

I seguenti requisiti si applicano alla creazione e all'utilizzo di risorse di Machine Learning:

  • È necessario utilizzareAWS IoT GreengrassCore v1.6 o versioni successive.

  • Le funzioni Lambda definite dall'utente possono eseguirereadoread and writeoperazioni sulla risorsa. Le autorizzazioni per altre operazioni non sono disponibili. La modalità di containerizzazione delle funzioni Lambda affiliate determina la modalità di impostazione delle autorizzazioni di accesso. Per ulteriori informazioni, consulta la pagina Accedi alle risorse di machine learning dalle funzioni Lambda .

  • È necessario fornire il percorso completo della risorsa sul sistema operativo del dispositivo core.

  • Un nome o ID di risorsa deve avere un massimo di 128 caratteri e deve utilizzare il modello [a-zA-Z0-9:_-]+.

Runtime e librerie per inferenza ML

È possibile utilizzare i seguenti runtime e librerie ML con AWS IoT Greengrass.

Questi runtime e queste librerie possono essere installati sulle piattaforme NVIDIA Jetson TX2, Intel Atom e Raspberry Pi. Per informazioni di download, consulta Runtime e librerie di Machine Learning supportati. Puoi installarli direttamente sul dispositivo principale.

Assicurati di leggere le seguenti informazioni sulla compatibilità e sulle limitazioni.

Runtime di deep learning SageMaker Neo

Puoi utilizzare il plugin SageMaker Neo Deep Learning Runtime per eseguire inferenze con modelli di machine learning ottimizzati sulAWS IoT Greengrassdispositivi. Questi modelli sono ottimizzati tramite SageMaker Neo Deep Learning Compilatore per migliorare le velocità di predizione dell'inferenza di machine learning. Per ulteriori informazioni sull'ottimizzazione del modello in SageMaker, consulta laDocumentazione su SageMaker Neo.

Nota

Al momento, puoi ottimizzare i modelli di machine learning utilizzando il compilatore di deep learning Neo solo in regioni Amazon Web Services specifiche. Tuttavia, puoi utilizzare Neo Deep Learning Runtime con modelli ottimizzati in ciascunoRegione AWSdoveAWS IoT Greengrasscore è supportato. Per informazioni, consulta Come configurare l'inferenza Machine Learning ottimizzata.

Funzione Versioni multiple MXNet

Apache MXNet non garantisce attualmente la compatibilità con le versioni successive, quindi i modelli che si addestrano utilizzando versioni successive del framework potrebbero non funzionare correttamente nelle versioni precedenti del framework. Per evitare conflitti tra le fasi di model-training e model-serving e per fornire una coerenza end-to-end esperienza, usa la stessa versione del framework MXNet in entrambe le fasi.

MXNet su Raspberry Pi

Le funzioni Lambda Greengrass che accedono ai modelli MXNet locali devono impostare la seguente variabile d'ambiente:

MXNET_ENGINE_TYPE=NativeEngine

È possibile impostare la variabile d'ambiente nel codice funzione o aggiungerla alla configurazione specifica del gruppo della funzione. Per un esempio in cui viene aggiunta come impostazione di configurazione, vedi questa fase.

Nota

Per un uso generale del framework MXNet, come l'esecuzione di un esempio di codice di terze parti, la variabile di ambiente deve essere configurata sul Raspberry Pi.

Limitazioni model-serving TensorFlow per Raspberry Pi

Le seguenti raccomandazioni per migliorare i risultati di inferenza si basano sui nostri test con TensorFlow Librerie Arm a 32 bit sulla piattaforma Raspberry Pi. Queste raccomandazioni sono destinate a utenti esperti solo per riferimento, senza garanzie di alcun tipo.

  • Modelli che sono addestrati utilizzando il formato Checkpoint devono essere "congelati" nel formato del buffer di protocollo prima di essere messi a disposizione. Per un esempio, consulta la Libreria di modelli di classificazione delle immagini TensorFlow-Slim.

  • Non utilizzare le librerie TF-Estimator e TF-Slim in codice di training o di inferenza. Utilizzare invece il pattern di caricamento del modello di file .pb che viene mostrato nell'esempio seguente.

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
Nota

Per ulteriori informazioni sulle piattaforme supportate per TensorFlow, consultaInstallazione di TensorFlownella TensorFlow documentazione.