

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
<a name="perform-machine-learning-inference"></a>

Con AWS IoT Greengrass, puoi eseguire inferenze di machine learning (ML) sui tuoi dispositivi edge su dati generati localmente utilizzando modelli addestrati sul 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.

AWS IoT Greengrass rende più efficienti i passaggi necessari per eseguire l'inferenza. È possibile addestrare i modelli di inferenza ovunque e distribuirli localmente come componenti di apprendimento *automatico*. Ad esempio, puoi creare e addestrare modelli di deep learning in [Amazon SageMaker ](https://console.aws.amazon.com/sagemaker) AI. Quindi, puoi archiviare questi modelli in un bucket [Amazon S3](https://console.aws.amazon.com/s3), in modo da poterli utilizzare come artefatti nei tuoi componenti per eseguire inferenze sui tuoi dispositivi principali.

**Topics**
+ [Come funziona l'inferenza ML AWS IoT Greengrass](#how-ml-inference-works)
+ [Cosa c'è di diverso nella AWS IoT Greengrass versione 2?](#ml-differences)
+ [Requisiti](#ml-requirements)
+ [Origini di modello supportate](#ml-model-sources)
+ [Runtime di machine learning supportati](#ml-runtime-libraries)
+ [AWS-componenti di apprendimento automatico forniti](#ml-components)
+ [Usa Amazon SageMaker AI Edge Manager sui dispositivi core Greengrass](use-sagemaker-edge-manager.md)
+ [Personalizza i tuoi componenti di machine learning](ml-customization.md)
+ [Risoluzione dei problemi relativi all'inferenza dell'apprendimento automatico](ml-troubleshooting.md)

## Come funziona l'inferenza ML AWS IoT Greengrass
<a name="how-ml-inference-works"></a>

AWS fornisce [componenti di machine learning](#ml-components) che è possibile utilizzare per creare distribuzioni in un'unica fase per eseguire inferenze di machine learning sul dispositivo. È inoltre possibile utilizzare questi componenti come modelli per creare componenti personalizzati in grado di soddisfare requisiti specifici.<a name="ml-component-types"></a>

AWS fornisce le seguenti categorie di componenti di machine learning:
+ **Componente del modello**: contiene modelli di apprendimento automatico come artefatti Greengrass.
+ **Componente Runtime**: contiene lo script che installa il framework di machine learning e le sue dipendenze sul dispositivo principale Greengrass.
+ **Componente di inferenza**: contiene il codice di inferenza e include le dipendenze dei componenti per installare il framework di machine learning e scaricare modelli di machine learning preaddestrati.

Ogni implementazione creata per eseguire l'inferenza dell'apprendimento automatico è costituita da almeno un componente che esegue l'applicazione di inferenza, installa il framework di apprendimento automatico e scarica i modelli di apprendimento automatico. Per eseguire l'inferenza di esempio con i componenti AWS forniti, distribuisci un componente di inferenza sul tuo dispositivo principale, che include automaticamente il modello e i componenti di runtime corrispondenti come dipendenze. Per personalizzare le distribuzioni, è possibile collegare o sostituire i componenti del modello di esempio con componenti del modello personalizzati oppure utilizzare le ricette dei componenti AWS forniti come modelli per creare componenti di inferenza, modello e runtime personalizzati. 

Per eseguire inferenze di machine learning utilizzando componenti personalizzati:

1. Crea un componente del modello. Questo componente contiene i modelli di machine learning da utilizzare per eseguire l'inferenza. AWS fornisce esempi di modelli DLR e TensorFlow Lite pre-addestrati. Per utilizzare un modello personalizzato, crea il tuo componente del modello.

1. Crea un componente di runtime. Questo componente contiene gli script necessari per installare il runtime di machine learning per i tuoi modelli. AWS [fornisce componenti di runtime di esempio per [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) e TensorFlow Lite.](https://www.tensorflow.org/lite/guide/python) Per utilizzare altri runtime con i tuoi modelli personalizzati e il codice di inferenza, crea i tuoi componenti di runtime.

1. Crea un componente di inferenza. Questo componente contiene il codice di inferenza e include i componenti del modello e del runtime come dipendenze. AWS fornisce componenti di inferenza di esempio per la classificazione delle immagini e il rilevamento di oggetti tramite DLR e Lite. TensorFlow Per eseguire altri tipi di inferenza o utilizzare modelli e runtime personalizzati, create il vostro componente di inferenza.

1. Implementa il componente di inferenza. Quando distribuisci questo componente, distribuisce automaticamente AWS IoT Greengrass anche le dipendenze del modello e del componente di runtime.

Per iniziare con i componenti AWS forniti, consulta. [Tutorial: eseguire l'inferenza della classificazione delle immagini di esempio utilizzando TensorFlow Lite](ml-tutorial-image-classification.md)

Per informazioni sulla creazione di componenti di machine learning personalizzati, consulta[Personalizza i tuoi componenti di machine learning](ml-customization.md).

## Cosa c'è di diverso nella AWS IoT Greengrass versione 2?
<a name="ml-differences"></a>

AWS IoT Greengrass consolida le unità funzionali per l'apprendimento automatico, come modelli, runtime e codice di inferenza, in componenti che consentono di utilizzare un processo in un'unica fase per installare il runtime di machine learning, scaricare i modelli addestrati ed eseguire inferenze sul dispositivo. 

Utilizzando i componenti di machine learning AWS forniti, hai la flessibilità di iniziare a eseguire inferenze di machine learning con codice di inferenza di esempio e modelli preaddestrati. È possibile collegare componenti di modelli personalizzati per utilizzare modelli personalizzati con i componenti di inferenza e di runtime forniti. AWS Per una soluzione di machine learning completamente personalizzata, è possibile utilizzare i componenti pubblici come modelli per creare componenti personalizzati e utilizzare qualsiasi tipo di runtime, modello o inferenza desiderato.

## Requisiti
<a name="ml-requirements"></a>

Per creare e utilizzare componenti di machine learning, è necessario disporre di quanto segue:
+ Un dispositivo principale Greengrass. Se non lo hai, consultare [Tutorial: Guida introduttiva a AWS IoT Greengrass V2](getting-started.md).
+ Almeno 500 MB di spazio di archiviazione locale per utilizzare i componenti AWS di machine learning di esempio forniti.

## Origini di modello supportate
<a name="ml-model-sources"></a>

AWS IoT Greengrass supporta l'utilizzo di modelli di machine learning personalizzati archiviati in Amazon S3. Puoi anche utilizzare i processi di packaging edge di Amazon SageMaker AI per creare direttamente componenti del modello per i tuoi modelli NEO-compilati con SageMaker AI. Per informazioni sull'utilizzo di SageMaker AI Edge Manager con AWS IoT Greengrass, consulta. [Usa Amazon SageMaker AI Edge Manager sui dispositivi core Greengrass](use-sagemaker-edge-manager.md)

I bucket S3 che contengono i tuoi modelli devono soddisfare i seguenti requisiti:
+ Non devono essere crittografati utilizzando SSE-C. Per i bucket che utilizzano la crittografia lato server, l'inferenza dell'apprendimento AWS IoT Greengrass automatico attualmente supporta solo le opzioni di crittografia SSE-S3 o SSE-KMS. Per ulteriori informazioni sulle opzioni di crittografia lato server, consulta [Protezione dei dati utilizzando la crittografia lato server nella](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) Guida per l'utente di *Amazon Simple Storage Service*.
+ I loro nomi non devono includere periodi (). `.` Per ulteriori informazioni, consulta la regola sull'utilizzo di bucket in stile host virtuale con SSL nelle [Regole per la denominazione dei bucket nella *Amazon* Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules) User Guide.
+ <a name="sr-artifacts-req"></a>I bucket S3 che memorizzano i sorgenti del modello devono trovarsi negli stessi componenti di machine learning. Account AWS Regione AWS 
+ AWS IoT Greengrass deve avere l'`read`autorizzazione alla fonte del modello. Per consentire l'accesso AWS IoT Greengrass ai bucket S3, il [ruolo del dispositivo Greengrass](device-service-role.md) deve consentire l'azione. `s3:GetObject` Per ulteriori informazioni sul ruolo del dispositivo, consulta. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

## Runtime di machine learning supportati
<a name="ml-runtime-libraries"></a>

AWS IoT Greengrass ti consente di creare componenti personalizzati per utilizzare qualsiasi runtime di machine learning di tua scelta per eseguire inferenze di machine learning con i tuoi modelli addestrati su misura. Per informazioni sulla creazione di componenti di machine learning personalizzati, consulta. [Personalizza i tuoi componenti di machine learning](ml-customization.md)

Per rendere più efficiente il processo di introduzione all'apprendimento automatico, AWS IoT Greengrass fornisce esempi di componenti di inferenza, modello e runtime che utilizzano i seguenti runtime di machine learning: 
+  [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) v1.6.0 e v1.3.0
+  [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) v2.5.0 

## AWS-componenti di apprendimento automatico forniti
<a name="ml-components"></a>

La tabella seguente elenca i componenti AWS forniti utilizzati per l'apprendimento automatico. 

**Nota**  <a name="component-nucleus-dependency-update-note"></a>
Diversi componenti AWS forniti dipendono da versioni minori specifiche del nucleo Greengrass. A causa di questa dipendenza, è necessario aggiornare questi componenti quando si aggiorna il nucleo di Greengrass a una nuova versione secondaria. Per informazioni sulle versioni specifiche del nucleo da cui dipende ogni componente, consultate l'argomento relativo ai componenti. Per ulteriori informazioni sull'aggiornamento del nucleo, vedere. [Aggiornamento del software AWS IoT Greengrass Core (OTA)](update-greengrass-core-v2.md)


| Componente | Description | [Tipo di componente](develop-greengrass-components.md#component-types) | Sistema operativo supportato | [Open source](open-source.md) | 
| --- | --- | --- | --- | --- | 
| [SageMaker Gestione AI Edge](sagemaker-edge-manager-component.md) | Implementa l'agente Amazon SageMaker AI Edge Manager sul dispositivo principale Greengrass. | Generico | Linux, Windows | No | 
| [Classificazione delle immagini DLR](dlr-image-classification-component.md) | Componente di inferenza che utilizza l'archivio del modello di classificazione delle immagini DLR e il componente runtime DLR come dipendenze per installare DLR, scaricare modelli di classificazione delle immagini di esempio ed eseguire inferenze di classificazione delle immagini sui dispositivi supportati. | Generico | Linux, Windows | No | 
| [Rilevamento di oggetti DLR](dlr-object-detection-component.md) | Componente di inferenza che utilizza l'archivio del modello di rilevamento degli oggetti DLR e il componente runtime DLR come dipendenze per installare DLR, scaricare modelli di rilevamento di oggetti di esempio ed eseguire inferenze per il rilevamento degli oggetti sui dispositivi supportati. | Generico | Linux, Windows | No | 
| [Archivio modelli di classificazione delle immagini DLR](dlr-image-classification-model-store-component.md) | Componente del modello che contiene esempi di modelli di classificazione delle immagini ResNet -50 come artefatti Greengrass. | Generico | Linux, Windows | No | 
| [Archivio modelli DLR per il rilevamento di oggetti](dlr-object-detection-model-store-component.md) | Componente del modello che contiene modelli di rilevamento di YOLOv3 oggetti di esempio come artefatti Greengrass. | Generico | Linux, Windows | No | 
| [Runtime DLR](dlr-component.md) | Componente di runtime che contiene uno script di installazione utilizzato per installare DLR e le sue dipendenze sul dispositivo principale Greengrass. | Generico | Linux, Windows | No | 
| [TensorFlow Classificazione delle immagini Lite](tensorflow-lite-image-classification-component.md) | Componente di inferenza che utilizza l' TensorFlow archivio del modello di classificazione delle immagini TensorFlow Lite e il componente runtime Lite come dipendenze per installare TensorFlow Lite, scaricare modelli di classificazione delle immagini di esempio ed eseguire inferenze di classificazione delle immagini sui dispositivi supportati. | Generico | Linux, Windows | No | 
| [TensorFlow Rilevamento di oggetti Lite](tensorflow-lite-object-detection-component.md) | Componente di inferenza che utilizza l'archivio del modello di rilevamento degli oggetti TensorFlow Lite e il componente runtime TensorFlow Lite come dipendenze per installare TensorFlow Lite, scaricare modelli di rilevamento di oggetti di esempio ed eseguire inferenze per il rilevamento degli oggetti sui dispositivi supportati. | Generico | Linux, Windows | No | 
| [TensorFlow Archivio di modelli di classificazione delle immagini Lite](tensorflow-lite-image-classification-model-store-component.md) | Componente del modello che contiene un modello MobileNet v1 di esempio come artefatto Greengrass. | Generico | Linux, Windows | No | 
| [TensorFlow Archivio di modelli Lite per il rilevamento di oggetti](tensorflow-lite-object-detection-model-store-component.md) | Componente del modello che contiene un MobileNet modello di Single Shot Detection (SSD) di esempio come artefatto Greengrass. | Generico | Linux, Windows | No | 
| [TensorFlow Runtime Lite](tensorflow-lite-component.md) | Componente di runtime che contiene uno script di installazione utilizzato per installare TensorFlow Lite e le sue dipendenze sul dispositivo principale Greengrass. | Generico | Linux, Windows | No | 

# Usa Amazon SageMaker AI Edge Manager sui dispositivi core Greengrass
<a name="use-sagemaker-edge-manager"></a>

**Importante**  
SageMaker AI Edge Manager è stato interrotto il 26 aprile 2024. Per ulteriori informazioni su come continuare a distribuire i modelli sui dispositivi edge, consulta la sezione End of life di [SageMaker AI Edge Manager](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html).

Amazon SageMaker AI Edge Manager è un agente software che funziona su dispositivi edge. SageMaker AI Edge Manager fornisce la gestione dei modelli per i dispositivi edge in modo da poter impacchettare e utilizzare i modelli compilati da Amazon SageMaker AI NEO direttamente sui dispositivi core di Greengrass. Utilizzando SageMaker AI Edge Manager, puoi anche campionare i dati di input e output del modello dai tuoi dispositivi principali e inviarli a loro Cloud AWS per il monitoraggio e l'analisi. Poiché SageMaker AI Edge Manager utilizza SageMaker AI Neo per ottimizzare i modelli per l'hardware di destinazione, non è necessario installare il runtime DLR direttamente sul dispositivo. Sui dispositivi Greengrass, SageMaker AI Edge Manager non carica AWS IoT certificati locali né chiama direttamente l'endpoint del fornitore di AWS IoT credenziali. Invece, SageMaker AI Edge Manager utilizza il [servizio di scambio di token](token-exchange-service-component.md) per recuperare credenziali temporanee da un endpoint TES. 

Questa sezione descrive come funziona SageMaker AI Edge Manager sui dispositivi core Greengrass.



## Come funziona SageMaker AI Edge Manager sui dispositivi Greengrass
<a name="how-to-use-sdge-manager-with-greengrass"></a>

Per distribuire l'agente SageMaker AI Edge Manager sui tuoi dispositivi principali, crea una distribuzione che includa il `aws.greengrass.SageMakerEdgeManager` componente. AWS IoT Greengrass gestisce l'installazione e il ciclo di vita dell'agente Edge Manager sui tuoi dispositivi. Quando è disponibile una nuova versione dell'agente binario, distribuisci la versione aggiornata del `aws.greengrass.SageMakerEdgeManager` componente per aggiornare la versione dell'agente installata sul tuo dispositivo. 

Quando utilizzi SageMaker AI Edge Manager con AWS IoT Greengrass, il tuo flusso di lavoro include i seguenti passaggi di alto livello:

1. Compila modelli con SageMaker AI Neo.

1. Package dei modelli compilati da SageMaker AI NEO utilizzando processi di packaging SageMaker AI edge. Quando esegui un processo di edge packaging per il tuo modello, puoi scegliere di creare un componente del modello con il modello confezionato come artefatto che può essere distribuito sul tuo dispositivo principale Greengrass. 

1. Crea un componente di inferenza personalizzato. Questo componente di inferenza viene utilizzato per interagire con l'agente Edge Manager per eseguire l'inferenza sul dispositivo principale. Queste operazioni includono il caricamento dei modelli, l'invocazione di richieste di previsione per eseguire l'inferenza e lo scaricamento dei modelli quando il componente si spegne. 

1. Implementa il componente SageMaker AI Edge Manager, il componente del modello in pacchetto e il componente di inferenza per eseguire il modello sul motore di inferenza SageMaker AI (agente Edge Manager) sul tuo dispositivo.

Per ulteriori informazioni sulla creazione di processi di edge packaging e componenti di inferenza compatibili con SageMaker AI Edge Manager, consulta [Deploy Model Package and Edge Manager Agent with AWS IoT Greengrass](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-greengrass.html) nella *Amazon SageMaker AI Developer Guide*.

Il [Tutorial: Inizia a usare SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md) tutorial mostra come configurare e utilizzare l'agente SageMaker AI Edge Manager su un dispositivo core Greengrass esistente, utilizzando il codice di esempio AWS fornito che è possibile utilizzare per creare componenti di inferenza e modello di esempio. 

Quando utilizzi SageMaker AI Edge Manager sui dispositivi principali Greengrass, puoi anche utilizzare la funzione di acquisizione dati per caricare dati di esempio su. Cloud AWS Capture data è una funzionalità di SageMaker intelligenza artificiale che utilizzi per caricare input di inferenza, risultati di inferenza e dati di inferenza aggiuntivi su un bucket S3 o una directory locale per analisi future. Per ulteriori informazioni sull'utilizzo dei dati di acquisizione con SageMaker AI Edge Manager, consulta [Manage Model](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manage-model.html#edge-manage-model-capturedata) nella *Amazon SageMaker AI Developer Guide*.

## Requisiti
<a name="greengrass-edge-manager-agent-requirements"></a>

È necessario soddisfare i seguenti requisiti per utilizzare l'agente SageMaker AI Edge Manager sui dispositivi principali Greengrass.<a name="sm-edge-manager-component-reqs"></a>
+ <a name="sm-req-core-device"></a>Un dispositivo core Greengrass in esecuzione su Amazon Linux 2, una piattaforma Linux basata su Debian (x86\$164 o Armv8) o Windows (x86\$164). Se non lo hai, consultare [Tutorial: Guida introduttiva a AWS IoT Greengrass V2](getting-started.md).
+ <a name="sm-req-python"></a>[Python](https://www.python.org/downloads/) 3.6 o versione successiva, inclusa `pip` la tua versione di Python, installato sul tuo dispositivo principale.
+ Il [ruolo del dispositivo Greengrass](device-service-role.md) è configurato con quanto segue: 
  + <a name="sm-req-iam-trust-relationship"></a>Una relazione di fiducia che consente `credentials.iot.amazonaws.com` e consente `sagemaker.amazonaws.com` di assumere il ruolo, come illustrato nel seguente esempio di policy IAM.

    ```
    { 
      "Version": "2012-10-17",		 	 	 
      "Statement": [ 
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "credentials.iot.amazonaws.com"
           }, 
          "Action": "sts:AssumeRole" 
        },
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          }, 
          "Action": "sts:AssumeRole" 
        } 
      ] 
    }
    ```
  + <a name="sm-req-iam-sagemanakeredgedevicefleetpolicy"></a>La politica gestita da [AmazonSageMakerEdgeDeviceFleetPolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy)IAM.
  + <a name="sm-req-iam-s3-putobject"></a>L'`s3:PutObject`azione, come illustrato nel seguente esempio di policy IAM.

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": [
            "s3:PutObject"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow"
        }
      ]
    }
    ```
+ <a name="sm-req-s3-bucket"></a>Un bucket Amazon S3 creato nello stesso Regione AWS dispositivo Account AWS principale Greengrass. SageMaker AI Edge Manager richiede un bucket S3 per creare una flotta di dispositivi edge e per archiviare dati di esempio derivanti dall'esecuzione dell'inferenza sul dispositivo. Per informazioni sulla creazione di bucket S3, consulta [Guida introduttiva ad Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html).
+ <a name="sm-req-edge-device-fleet"></a>Una flotta di dispositivi edge SageMaker AI che utilizza lo stesso alias di AWS IoT ruolo del dispositivo principale Greengrass. Per ulteriori informazioni, consulta [Crea una flotta di dispositivi edge](get-started-with-edge-manager-on-greengrass.md#create-edge-device-fleet-for-greengrass).
+ <a name="sm-req-edge-device"></a>Il tuo dispositivo principale Greengrass è stato registrato come dispositivo edge nella tua flotta di dispositivi SageMaker AI Edge. Il nome del dispositivo edge deve corrispondere al nome dell' AWS IoT oggetto del dispositivo principale. Per ulteriori informazioni, consulta [Registra il tuo dispositivo Greengrass core](get-started-with-edge-manager-on-greengrass.md#register-greengrass-core-device-in-sme).

## Inizia con SageMaker AI Edge Manager
<a name="use-sm-edge-manager"></a>

Puoi completare un tutorial per iniziare a utilizzare SageMaker AI Edge Manager. Il tutorial mostra come iniziare a utilizzare SageMaker AI Edge Manager con componenti AWS di esempio forniti su un dispositivo principale esistente. Questi componenti di esempio utilizzano il componente SageMaker AI Edge Manager come dipendenza per distribuire l'agente Edge Manager ed eseguire l'inferenza utilizzando modelli preaddestrati compilati utilizzando AI Neo. SageMaker Per ulteriori informazioni, consulta [Tutorial: Inizia a usare SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md).

# Personalizza i tuoi componenti di machine learning
<a name="ml-customization"></a>

In AWS IoT Greengrass, puoi configurare [componenti di machine learning](perform-machine-learning-inference.md#ml-components) di esempio per personalizzare il modo in cui esegui l'inferenza di machine learning sui tuoi dispositivi utilizzando i componenti di inferenza, modello e runtime come elementi costitutivi. AWS IoT Greengrass offre inoltre la flessibilità necessaria per utilizzare i componenti di esempio come modelli e creare componenti personalizzati in base alle esigenze. È possibile combinare questo approccio modulare per personalizzare i componenti di inferenza dell'apprendimento automatico nei seguenti modi:

**Utilizzo di componenti di inferenza di esempio**  
+ Modifica la configurazione dei componenti di inferenza quando li distribuisci.
+ Utilizzate un modello personalizzato con il componente di inferenza del campione sostituendo il componente sample model store con un componente del modello personalizzato. Il modello personalizzato deve essere addestrato utilizzando lo stesso runtime del modello di esempio.

**Utilizzo di componenti di inferenza personalizzati**  
+ Usa codice di inferenza personalizzato con i modelli e i runtime di esempio aggiungendo componenti del modello pubblico e componenti di runtime come dipendenze dei componenti di inferenza personalizzati.
+ Crea e aggiungi componenti di modello personalizzati o componenti di runtime come dipendenze di componenti di inferenza personalizzati. È necessario utilizzare componenti personalizzati se si desidera utilizzare un codice di inferenza personalizzato o un runtime per il quale AWS IoT Greengrass non è disponibile un componente di esempio. 

**Topics**
+ [Modifica la configurazione di un componente di inferenza pubblica](#modify-ml-component-config)
+ [Utilizza un modello personalizzato con il componente di inferenza del campione](#override-public-model-store)
+ [Crea componenti di machine learning personalizzati](#create-private-ml-components)
+ [Crea un componente di inferenza personalizzato](#create-inference-component)

## Modifica la configurazione di un componente di inferenza pubblica
<a name="modify-ml-component-config"></a>

Nella [AWS IoT Greengrass console](https://console.aws.amazon.com/greengrass), la pagina del componente mostra la configurazione predefinita di quel componente. Ad esempio, la configurazione predefinita del componente di classificazione delle immagini TensorFlow Lite è simile alla seguente:

```
{
  "accessControl": {
    "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": {
        "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.",
        "operations": [
          "aws.greengrass#PublishToIoTCore"
        ],
        "resources": [
          "ml/tflite/image-classification"
        ]
      }
    }
  },
  "PublishResultsOnTopic": "ml/tflite/image-classification",
  "ImageName": "cat.jpeg",
  "InferenceInterval": 3600,
  "ModelResourceKey": {
    "model": "TensorFlowLite-Mobilenet"
  }
}
```

Quando si distribuisce un componente di inferenza pubblica, è possibile modificare la configurazione predefinita per personalizzare la distribuzione. Per informazioni sui parametri di configurazione disponibili per ogni componente di inferenza pubblica, consulta l'argomento relativo al componente in. [AWS-componenti di apprendimento automatico forniti](perform-machine-learning-inference.md#ml-components)

Questa sezione descrive come distribuire un componente modificato dalla AWS IoT Greengrass console. Per informazioni sulla distribuzione dei componenti utilizzando il AWS CLI, vedere. [Creare distribuzione](create-deployments.md)<a name="modify-ml-component-config-console"></a>

**Per distribuire un componente di inferenza pubblica modificato (console)**

1. Accedi alla [console AWS IoT Greengrass](https://console.aws.amazon.com/greengrass).

1. **Nel menu di navigazione, scegli Componenti.**

1. Nella pagina **Componenti**, nella scheda **Componenti pubblici**, scegli il componente che desideri distribuire.

1. Nella pagina del componente, scegli **Distribuisci**.

1. <a name="add-deployment"></a>Da **Aggiungi alla distribuzione**, scegli una delle seguenti opzioni:

   1. Per unire questo componente a una distribuzione esistente sul dispositivo di destinazione, scegli **Aggiungi alla distribuzione esistente**, quindi seleziona la distribuzione che desideri modificare.

   1. Per creare una nuova distribuzione sul dispositivo di destinazione, scegli **Crea nuova distribuzione**. Se hai un’implementazione esistente sul tuo dispositivo, la scelta di questa fase sostituisce l’implementazione esistente. 

1. <a name="specify-deployment-target"></a>Nella pagina **Specifica destinazione**, procedi come segue: 

   1. In **Informazioni sulla distribuzione**, inserisci o modifica il nome descrittivo della distribuzione.

   1. In **Destinazione della distribuzione**, seleziona una destinazione della distribuzione e scegli **Avanti**. Non è possibile modificare la destinazione della distribuzione se si sta revisionando una distribuzione esistente.

1. Nella pagina **Seleziona componenti**, in **Componenti pubblici**, verifica che sia selezionato il componente di inferenza con la configurazione modificata e scegli **Avanti**.

1. Nella pagina **Configura componenti**, procedi come segue: 

   1. Selezionate il componente di inferenza e scegliete **Configura componente**.

   1. In **Aggiornamento della configurazione**, inserisci i valori di configurazione che desideri aggiornare. Ad esempio, inserisci il seguente aggiornamento di **configurazione nella casella Configurazione da unire** per modificare l'intervallo di inferenza a 15 secondi e chiedi al componente di cercare l'immagine denominata `custom.jpg` nella cartella. `/custom-ml-inference/images/` 

      ```
      {
        "InferenceInterval": "15",
        "ImageName": "custom.jpg",
        "ImageDirectory": "/custom-ml-inference/images/"
      }
      ```

      **Per ripristinare l'intera configurazione di un componente ai valori predefiniti, specificate una singola stringa vuota `""` nella casella Reimposta percorsi.** 

   1. Seleziona **Conferma** e scegli **Avanti**.

1. Nella pagina **Configura impostazioni avanzate**, mantieni le impostazioni di configurazione predefinite e scegli **Avanti**.

1. Nella pagina di **revisione**, scegli **Distribuisci**

## Utilizza un modello personalizzato con il componente di inferenza del campione
<a name="override-public-model-store"></a>

Se desideri utilizzare il componente di inferenza del campione con i tuoi modelli di machine learning per un runtime che AWS IoT Greengrass fornisce un componente di runtime di esempio, devi sostituire i componenti del modello pubblico con componenti che utilizzano tali modelli come artefatti. A un livello elevato, completate i seguenti passaggi per utilizzare un modello personalizzato con il componente di inferenza di esempio:

1. Crea un componente del modello che utilizza un modello personalizzato in un bucket S3 come artefatto. Il modello personalizzato deve essere addestrato utilizzando lo stesso runtime del modello che si desidera sostituire.

1. Modifica il parametro `ModelResourceKey` di configurazione nel componente di inferenza per utilizzare il modello personalizzato. Per informazioni sull'aggiornamento della configurazione del componente di inferenza, vedere [Modifica la configurazione di un componente di inferenza pubblica](#modify-ml-component-config)

Quando si distribuisce il componente di inferenza, AWS IoT Greengrass cerca la versione più recente delle dipendenze dei componenti. Sostituisce il componente del modello pubblico dipendente se nello stesso e è presente una versione personalizzata successiva del componente. Account AWS Regione AWS

### Crea un componente del modello personalizzato (console)
<a name="create-model-store-component-console"></a>

1. Carica il tuo modello in un bucket S3. *Per informazioni sul caricamento dei modelli in un bucket S3, consulta [Working with Amazon S3 Buckets nella Amazon Simple Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Service User Guide.*
**Nota**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>È necessario archiviare gli artefatti in bucket S3 che si trovano negli stessi componenti. Account AWS Regione AWS Per consentire l'accesso AWS IoT Greengrass a questi artefatti, il [ruolo del dispositivo Greengrass](device-service-role.md) deve consentire l'azione. `s3:GetObject` Per ulteriori informazioni sul ruolo del dispositivo, vedere. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

1. Nel menu di navigazione della [AWS IoT Greengrass console](https://console.aws.amazon.com/greengrass), scegli **Componenti**.

1. Recupera la ricetta del componente Public Model Store.

   1. Nella pagina **Componenti**, nella scheda **Componenti pubblici**, cercate e scegliete il componente del modello pubblico per il quale desiderate creare una nuova versione. Ad esempio, `variant.DLR.ImageClassification.ModelStore`.

   1. Nella pagina del componente, scegli **Visualizza ricetta** e copia la ricetta JSON visualizzata.

1. Nella pagina **Componenti**, nella scheda I **miei componenti**, scegli **Crea componente**.

1. Nella pagina **Crea componente**, in **Informazioni sui componenti**, seleziona **Inserisci la ricetta come JSON** come origine del componente.

1. Nella casella **Ricetta**, incolla la ricetta del componente che hai copiato in precedenza.

1. <a name="override-model-recipe-config"></a>Nella ricetta, aggiorna i seguenti valori:
   + `ComponentVersion`: Incrementa la versione secondaria del componente. 

     Quando create un componente personalizzato per sostituire un componente del modello pubblico, dovete aggiornare solo la versione secondaria della versione del componente esistente. Ad esempio, se la versione del componente pubblico è`2.1.0`, puoi creare un componente personalizzato con version`2.1.1`.
   + `Manifests.Artifacts.Uri`: aggiorna ogni valore URI all'URI Amazon S3 del modello che desideri utilizzare.
**Nota**  
Non modificare il nome del componente.

1. Scegliete **Crea componente**.

### Crea un componente del modello personalizzato (AWS CLI)
<a name="create-model-store-component-cli"></a>

1. Carica il tuo modello in un bucket S3. *Per informazioni sul caricamento dei modelli in un bucket S3, consulta [Working with Amazon S3 Buckets nella Amazon Simple Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Service User Guide.*
**Nota**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>È necessario archiviare gli artefatti in bucket S3 che si trovano negli stessi componenti. Account AWS Regione AWS Per consentire l'accesso AWS IoT Greengrass a questi artefatti, il [ruolo del dispositivo Greengrass](device-service-role.md) deve consentire l'azione. `s3:GetObject` Per ulteriori informazioni sul ruolo del dispositivo, vedere. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

1. Eseguite il comando seguente per recuperare la ricetta del componente pubblico. Questo comando scrive la ricetta del componente nel file di output fornito nel comando. Convertite la stringa recuperata con codifica base64 in JSON o YAML, se necessario.

------
#### [ Linux, macOS, or Unix ]

   ```
   aws greengrassv2 get-component \
       --arn <arn> \
       --recipe-output-format <recipe-format> \
       --query recipe \
       --output text | base64 --decode > <recipe-file>
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws greengrassv2 get-component ^
       --arn <arn> ^
       --recipe-output-format <recipe-format> ^
       --query recipe ^
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------
#### [ PowerShell ]

   ```
   aws greengrassv2 get-component `
       --arn <arn> `
       --recipe-output-format <recipe-format> `
       --query recipe `
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------

1. Aggiorna il nome del file di ricetta in`<component-name>-<component-version>`, dove la versione del componente è la versione di destinazione del nuovo componente. Ad esempio, `variant.DLR.ImageClassification.ModelStore-2.1.1.yaml`. 

1. <a name="override-model-recipe-config"></a>Nella ricetta, aggiorna i seguenti valori:
   + `ComponentVersion`: Incrementa la versione secondaria del componente. 

     Quando create un componente personalizzato per sostituire un componente del modello pubblico, dovete aggiornare solo la versione secondaria della versione del componente esistente. Ad esempio, se la versione del componente pubblico è`2.1.0`, puoi creare un componente personalizzato con version`2.1.1`.
   + `Manifests.Artifacts.Uri`: aggiorna ogni valore URI all'URI Amazon S3 del modello che desideri utilizzare.
**Nota**  
Non modificare il nome del componente.

1. Esegui il seguente comando per creare un nuovo componente utilizzando la ricetta che hai recuperato e modificato.

   ```
   aws greengrassv2 create-component-version \
       --inline-recipe fileb://path/to/component/recipe
   ```
**Nota**  
Questo passaggio crea il componente nel AWS IoT Greengrass servizio in. Cloud AWS Puoi utilizzare la Greengrass CLI per sviluppare, testare e distribuire il componente localmente prima di caricarlo sul cloud. Per ulteriori informazioni, consulta [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md).

Per ulteriori informazioni sulla creazione di componenti, vedere. [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md)

## Crea componenti di machine learning personalizzati
<a name="create-private-ml-components"></a>

È necessario creare componenti personalizzati se si desidera utilizzare un codice di inferenza personalizzato o un runtime per il quale AWS IoT Greengrass non è disponibile un componente di esempio. È possibile utilizzare il codice di inferenza personalizzato con i modelli e i runtime di apprendimento automatico di esempio AWS forniti oppure sviluppare una soluzione di inferenza di machine learning completamente personalizzata con modelli e runtime propri. Se i modelli utilizzano un runtime per il quale AWS IoT Greengrass è disponibile un componente di runtime di esempio, è possibile utilizzare tale componente di runtime e creare componenti personalizzati solo per il codice di inferenza e i modelli che si desidera utilizzare. 

**Topics**
+ [Recuperate la ricetta per un componente pubblico](#get-ml-component-recipes)
+ [Recupera gli artefatti dei componenti di esempio](#get-ml-component-artifacts)
+ [Carica gli artefatti dei componenti in un bucket S3](#upload-ml-component-artifacts)
+ [Creare componenti personalizzati](#create-ml-components)

### Recuperate la ricetta per un componente pubblico
<a name="get-ml-component-recipes"></a>

È possibile utilizzare la ricetta di un componente pubblico di apprendimento automatico esistente come modello per creare un componente personalizzato. Per visualizzare la ricetta del componente per la versione più recente di un componente pubblico, usa la console o AWS CLI quanto segue:
+ **Utilizzo della console**

  1. Nella pagina **Componenti**, nella scheda **Componenti pubblici**, cerca e scegli il componente pubblico.

  1. Nella pagina del componente, scegli **Visualizza ricetta**.
+ **Usando AWS CLI**

  Eseguite il comando seguente per recuperare la ricetta del componente della variante pubblica. Questo comando scrive la ricetta del componente nel file di ricetta JSON o YAML fornito nel comando. 

------
#### [ Linux, macOS, or Unix ]

  ```
  aws greengrassv2 get-component \
      --arn <arn> \
      --recipe-output-format <recipe-format> \
      --query recipe \
      --output text | base64 --decode > <recipe-file>
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  aws greengrassv2 get-component ^
      --arn <arn> ^
      --recipe-output-format <recipe-format> ^
      --query recipe ^
      --output text > <recipe-file>.base64
  
  certutil -decode <recipe-file>.base64 <recipe-file>
  ```

------
#### [ PowerShell ]

  ```
  aws greengrassv2 get-component `
      --arn <arn> `
      --recipe-output-format <recipe-format> `
      --query recipe `
      --output text > <recipe-file>.base64
  
  certutil -decode <recipe-file>.base64 <recipe-file>
  ```

------

  Sostituisci i valori nel tuo comando come segue:
  + `<arn>`. L'Amazon Resource Name (ARN) del componente pubblico. 
  + `<recipe-format>`. Il formato in cui si desidera creare il file delle ricette. I valori supportati sono `JSON` e `YAML`.
  + `<recipe-file>`. Il nome della ricetta nel formato`<component-name>-<component-version>`. 

### Recupera gli artefatti dei componenti di esempio
<a name="get-ml-component-artifacts"></a>

È possibile utilizzare gli artefatti utilizzati dai componenti pubblici di machine learning come modelli per creare artefatti di componenti personalizzati, come codice di inferenza o script di installazione in fase di esecuzione. 

Per visualizzare gli artefatti di esempio inclusi nei componenti pubblici di machine learning, distribuisci il componente di inferenza pubblica e quindi visualizza gli artefatti sul tuo dispositivo nella cartella. `/greengrass/v2/packages/artifacts-unarchived/component-name/component-version/` 

### Carica gli artefatti dei componenti in un bucket S3
<a name="upload-ml-component-artifacts"></a>

Prima di poter creare un componente personalizzato, devi caricare gli artefatti del componente in un bucket S3 e utilizzare S3 nella ricetta del componente. URIs Ad esempio, per utilizzare un codice di inferenza personalizzato nel componente di inferenza, carica il codice in un bucket S3. Puoi quindi utilizzare l'URI Amazon S3 del tuo codice di inferenza come artefatto nel tuo componente. 

*Per informazioni sul caricamento di contenuti in un bucket S3, consulta [Working with Amazon S3 Bucket nella Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Storage Service User Guide.*

**Nota**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>È necessario archiviare gli artefatti in bucket S3 che si trovano negli stessi componenti. Account AWS Regione AWS Per consentire l'accesso AWS IoT Greengrass a questi artefatti, il [ruolo del dispositivo Greengrass](device-service-role.md) deve consentire l'azione. `s3:GetObject` Per ulteriori informazioni sul ruolo del dispositivo, vedere. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

### Creare componenti personalizzati
<a name="create-ml-components"></a>

Puoi utilizzare gli artefatti e le ricette recuperati per creare componenti di machine learning personalizzati. Per vedere un esempio, consulta [Crea un componente di inferenza personalizzato](#create-inference-component).

Per informazioni dettagliate sulla creazione e la distribuzione di componenti sui dispositivi Greengrass, [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md) vedere e. [Implementazione AWS IoT Greengrass dei componenti sui dispositivi](manage-deployments.md)

## Crea un componente di inferenza personalizzato
<a name="create-inference-component"></a>

Questa sezione mostra come creare un componente di inferenza personalizzato utilizzando il componente di classificazione delle immagini DLR come modello.

**Topics**
+ [Carica il tuo codice di inferenza in un bucket Amazon S3](#create-inference-code)
+ [Crea una ricetta per il tuo componente di inferenza](#create-inference-component-recipe)
+ [Create il componente di inferenza](#create-private-inference-component)

### Carica il tuo codice di inferenza in un bucket Amazon S3
<a name="create-inference-code"></a>

Crea il tuo codice di inferenza e poi caricalo in un bucket S3. *Per informazioni sul caricamento di contenuti in un bucket S3, consulta [Working with Amazon S3 Bucket nella Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Storage Service User Guide.*

**Nota**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>È necessario archiviare gli artefatti in bucket S3 che si trovano negli stessi componenti. Account AWS Regione AWS Per consentire l'accesso AWS IoT Greengrass a questi artefatti, il [ruolo del dispositivo Greengrass](device-service-role.md) deve consentire l'azione. `s3:GetObject` Per ulteriori informazioni sul ruolo del dispositivo, vedere. [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)

### Crea una ricetta per il tuo componente di inferenza
<a name="create-inference-component-recipe"></a>

1. Eseguite il comando seguente per recuperare la ricetta del componente di classificazione delle immagini DLR. Questo comando scrive la ricetta del componente nel file di ricetta JSON o YAML fornito nel comando. 

------
#### [ Linux, macOS, or Unix ]

   ```
   aws greengrassv2 get-component \
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version \
       --recipe-output-format JSON | YAML \
       --query recipe \
       --output text | base64 --decode > <recipe-file>
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws greengrassv2 get-component ^
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ^
       --recipe-output-format JSON | YAML ^
       --query recipe ^
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------
#### [ PowerShell ]

   ```
   aws greengrassv2 get-component `
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version `
       --recipe-output-format JSON | YAML `
       --query recipe `
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------

   Sostituisci *<recipe-file>* con il nome della ricetta nel formato. `<component-name>-<component-version>` 

1. `ComponentDependencies`Nell'oggetto della ricetta, effettuate una o più delle seguenti operazioni a seconda del modello e dei componenti di runtime che desiderate utilizzare:
   + Mantieni la dipendenza dai componenti DLR se desideri utilizzare modelli compilati con DLR. Potete anche sostituirlo con una dipendenza da un componente di runtime personalizzato, come illustrato nell'esempio seguente.

     **Componente di runtime**

------
#### [ JSON ]

     ```
     { 
         "<runtime-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <runtime-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------
   + Mantieni la dipendenza dall'archivio del modello di classificazione delle immagini DLR per utilizzare i modelli ResNet -50 preaddestrati che AWS fornisce o modificalo per utilizzare un componente del modello personalizzato. Quando includete una dipendenza per un componente del modello pubblico, se nello stesso Account AWS componente esiste una versione personalizzata successiva Regione AWS, il componente di inferenza utilizza quel componente personalizzato. Specificate la dipendenza del componente del modello come illustrato negli esempi seguenti.

     **Componente del modello pubblico**

------
#### [ JSON ]

     ```
     {
         "variant.DLR.ImageClassification.ModelStore": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     variant.DLR.ImageClassification.ModelStore:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------

     **Componente del modello personalizzato**

------
#### [ JSON ]

     ```
     {
         "<custom-model-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <custom-model-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------

1. Nell'`ComponentConfiguration`oggetto, aggiungete la configurazione di default per questo componente. È possibile modificare questa configurazione in un secondo momento quando si distribuisce il componente. Il seguente estratto mostra la configurazione dei componenti per il componente di classificazione delle immagini DLR. 

   Ad esempio, se utilizzate un componente del modello personalizzato come dipendenza per il componente di inferenza personalizzato, modificatelo per `ModelResourceKey` fornire i nomi dei modelli che state utilizzando.

------
#### [ JSON ]

   ```
   {
     "accessControl": {
       "aws.greengrass.ipc.mqttproxy": {
         "aws.greengrass.ImageClassification:mqttproxy:1": {
           "policyDescription": "Allows access to publish via topic ml/dlr/image-classification.",
           "operations": [
             "aws.greengrass#PublishToIoTCore"
           ],
           "resources": [
             "ml/dlr/image-classification"
           ]
         }
       }
     },
     "PublishResultsOnTopic": "ml/dlr/image-classification",
     "ImageName": "cat.jpeg",
     "InferenceInterval": 3600,
     "ModelResourceKey": {
       "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification",
       "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification",
       "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification"
     }
   }
   ```

------
#### [ YAML ]

   ```
   accessControl:
       aws.greengrass.ipc.mqttproxy:
           'aws.greengrass.ImageClassification:mqttproxy:1':
               policyDescription: 'Allows access to publish via topic ml/dlr/image-classification.'
               operations:
                   - 'aws.greengrass#PublishToIoTCore'
               resources:
                   - ml/dlr/image-classification
   PublishResultsOnTopic: ml/dlr/image-classification
   ImageName: cat.jpeg
   InferenceInterval: 3600
   ModelResourceKey:
       armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification"
       x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification"
       aarch64: "DLR-resnet50-aarch64-cpu-ImageClassification"
   ```

------

1. Nell'`Manifests`oggetto, fornite informazioni sugli artefatti e sulla configurazione di questo componente che vengono utilizzati quando il componente viene distribuito su piattaforme diverse e qualsiasi altra informazione necessaria per eseguire correttamente il componente. Il seguente estratto mostra la configurazione dell'`Manifests`oggetto per la piattaforma Linux nel componente di classificazione delle immagini DLR.

------
#### [ JSON ]

   ```
   {
     "Manifests": [
       {
         "Platform": {
           "os": "linux",
           "architecture": "arm"
         },
         "Name": "32-bit armv7l - Linux (raspberry pi)",
         "Artifacts": [
           {
             "URI": "s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip",
             "Unarchive": "ZIP"
           }
         ],
         "Lifecycle": {
           "Setenv": {
             "DLR_IC_MODEL_DIR": "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}",
             "DEFAULT_DLR_IC_IMAGE_DIR": "{artifacts:decompressedPath}/image_classification/sample_images/"
           },
           "Run": {
             "RequiresPrivilege": true,
             "script": ". {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate\npython3 {artifacts:decompressedPath}/image_classification/inference.py"
           }
         }
       }
     ]
   }
   ```

------
#### [ YAML ]

   ```
   Manifests:
     - Platform:
         os: linux
         architecture: arm
       Name: 32-bit armv7l - Linux (raspberry pi)
       Artifacts:
         - URI: s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip
           Unarchive: ZIP
       Lifecycle:
         SetEnv:
           DLR_IC_MODEL_DIR: "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}"
           DEFAULT_DLR_IC_IMAGE_DIR: "{artifacts:decompressedPath}/image_classification/sample_images/"
         Run:
           RequiresPrivilege: true
           script: |-
             . {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate
             python3 {artifacts:decompressedPath}/image_classification/inference.py
   ```

------

 Per informazioni dettagliate sulla creazione delle ricette dei componenti, vedere. [AWS IoT Greengrass riferimento alla ricetta del componente](component-recipe-reference.md)

### Create il componente di inferenza
<a name="create-private-inference-component"></a>

Usa la AWS IoT Greengrass console o il AWS CLI per creare un componente usando la ricetta che hai appena definito. Dopo aver creato il componente, puoi distribuirlo per eseguire inferenze sul tuo dispositivo. Per un esempio di come implementare un componente di inferenza, vedi. [Tutorial: eseguire l'inferenza della classificazione delle immagini di esempio utilizzando TensorFlow Lite](ml-tutorial-image-classification.md)

#### Crea un componente di inferenza personalizzato (console)
<a name="create-inference-component-console"></a>

1. Accedi alla [console AWS IoT Greengrass](https://console.aws.amazon.com/greengrass).

1. Nel menu di navigazione, scegli **Componenti**.

1. Nella pagina **Componenti**, nella scheda I **miei componenti**, scegli **Crea componente**.

1. Nella pagina **Crea componente**, in **Informazioni sui componenti**, seleziona **Inserisci la ricetta come JSON** o **Inserisci la ricetta come YAML come** origine del componente.

1. Nella casella **Ricetta**, inserisci la ricetta personalizzata che hai creato. 

1. Fate clic su **Crea componente**.

#### Crea un componente di inferenza personalizzato ()AWS CLI
<a name="create-inference-component-cli"></a>

Esegui il comando seguente per creare un nuovo componente personalizzato utilizzando la ricetta che hai creato.

```
aws greengrassv2 create-component-version \
    --inline-recipe fileb://path/to/recipe/file
```

**Nota**  
Questo passaggio crea il componente nel AWS IoT Greengrass servizio in Cloud AWS. Puoi utilizzare la Greengrass CLI per sviluppare, testare e distribuire il componente localmente prima di caricarlo sul cloud. Per ulteriori informazioni, consulta [Sviluppa AWS IoT Greengrass componenti](develop-greengrass-components.md).

# Risoluzione dei problemi relativi all'inferenza dell'apprendimento automatico
<a name="ml-troubleshooting"></a>

Utilizza le informazioni e le soluzioni per la risoluzione dei problemi contenute in questa sezione per risolvere i problemi relativi ai componenti di machine learning. Per i componenti pubblici di inferenza dell'apprendimento automatico, consulta i messaggi di errore nei seguenti log dei componenti:

------
#### [ Linux or Unix ]
+ `/greengrass/v2/logs/aws.greengrass.DLRImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log`

------
#### [ Windows ]
+ `C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log`

------

Se un componente è installato correttamente, il registro dei componenti contiene la posizione della libreria utilizzata per l'inferenza.

**Topics**
+ [Impossibile recuperare la libreria](#rpi-update-error)
+ [Cannot open shared object file](#rpi-import-cv-error)
+ [Error: ModuleNotFoundError: No module named '<library>'](#troubleshooting-venv-errors-not-found)
+ [Non viene rilevato alcun dispositivo compatibile con CUDA](#troubleshooting-cuda-error)
+ [Nessun file o directory di questo tipo](#troubleshooting-venv-errors-no-such-file)
+ [RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>](#troubleshooting-rpi-numpy-version-error)
+ [picamera.exc.PiCameraError: Camera is not enabled](#troubleshooting-rpi-camera-stack-error)
+ [Errori di memoria](#troubleshooting-memory-errors)
+ [Errori di spazio su disco](#troubleshooting-disk-space-errors)
+ [Errori di timeout](#troubleshooting-timeout-errors)

## Impossibile recuperare la libreria
<a name="rpi-update-error"></a>

Il seguente errore si verifica quando lo script di installazione non riesce a scaricare una libreria richiesta durante la distribuzione su un dispositivo Raspberry Pi.

```
Err:2 http://raspbian.raspberrypi.org/raspbian buster/main armhf python3.7-dev armhf 3.7.3-2+deb10u1
404 Not Found [IP: 93.93.128.193 80] 
E: Failed to fetch http://raspbian.raspberrypi.org/raspbian/pool/main/p/python3.7/libpython3.7-dev_3.7.3-2+deb10u1_armhf.deb 404 Not Found [IP: 93.93.128.193 80]
```

Esegui `sudo apt-get update` e distribuisci nuovamente il componente.

## Cannot open shared object file
<a name="rpi-import-cv-error"></a>

Potresti visualizzare errori simili ai seguenti quando lo script di installazione non riesce a scaricare una dipendenza richiesta `opencv-python` durante la distribuzione su un dispositivo Raspberry Pi.

```
ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory
```

Esegui il comando seguente per installare manualmente le dipendenze per: `opencv-python`

```
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
```

## Error: ModuleNotFoundError: No module named '<library>'
<a name="troubleshooting-venv-errors-not-found"></a>

È possibile che questo errore venga visualizzato nei registri dei componenti di runtime ML (`variant.DLR.log`o`variant.TensorFlowLite.log`) quando la libreria di runtime ML o le relative dipendenze non sono installate correttamente. Questo errore può verificarsi nei seguenti casi:
+ Se si utilizza l'`UseInstaller`opzione, abilitata per impostazione predefinita, questo errore indica che il componente di runtime ML non è riuscito a installare il runtime o le sue dipendenze. Esegui questa operazione:

  1. Configurate il componente di runtime ML per disabilitare l'`UseInstaller`opzione.

  1. Installa il runtime ML e le sue dipendenze e rendili disponibili all'utente di sistema che esegue i componenti ML. Per ulteriori informazioni, consulta gli argomenti seguenti:
     + [Opzione di runtime DLR UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowOpzione di runtime UseInstaller Lite](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)
+ Se non si utilizza l'`UseInstaller`opzione, questo errore indica che il runtime ML o le relative dipendenze non sono installati per l'utente di sistema che esegue i componenti ML. Esegui questa operazione:

  1. Verificate che la libreria sia installata per l'utente di sistema che esegue i componenti ML. Sostituitelo *ggc\$1user* con il nome dell'utente di sistema e *tflite\$1runtime* sostituitelo con il nome della libreria da controllare.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -c 'import tflite_runtime'"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -c \"import tflite_runtime\""
     ```

------

  1. Se la libreria non è installata, installala per quell'utente. Sostituiscila *ggc\$1user* con il nome dell'utente di sistema e sostituiscila *tflite\$1runtime* con il nome della libreria.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -m pip install --user tflite_runtime"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -m pip install --user tflite_runtime"
     ```

------

     Per ulteriori informazioni sulle dipendenze per ogni runtime ML, consultate quanto segue:
     + [Opzione di runtime DLR UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowOpzione di runtime UseInstaller Lite](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)

  1. Se il problema persiste, installa la libreria per un altro utente per confermare se il dispositivo è in grado di installare la libreria. L'utente potrebbe essere, ad esempio, il tuo utente, l'utente root o un utente amministratore. Se non riesci a installare correttamente la libreria per nessun utente, il tuo dispositivo potrebbe non supportare la libreria. Consulta la documentazione della libreria per esaminare i requisiti e risolvere i problemi di installazione.

## Non viene rilevato alcun dispositivo compatibile con CUDA
<a name="troubleshooting-cuda-error"></a>

È possibile che venga visualizzato il seguente errore quando si utilizza l'accelerazione GPU. Esegui il comando seguente per abilitare l'accesso alla GPU per l'utente Greengrass.

```
sudo usermod -a -G video ggc_user
```

## Nessun file o directory di questo tipo
<a name="troubleshooting-venv-errors-no-such-file"></a>

I seguenti errori indicano che il componente runtime non è stato in grado di configurare correttamente l'ambiente virtuale:
+ `MLRootPath/greengrass_ml_dlr_conda/bin/conda: No such file or directory `
+ `MLRootPath/greengrass_ml_dlr_venv/bin/activate: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_conda/bin/conda: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_venv/bin/activate: No such file or directory `

Controlla i log per assicurarti che tutte le dipendenze di runtime siano state installate correttamente. Per ulteriori informazioni sulle librerie installate dallo script di installazione, consultate i seguenti argomenti:
+ [Runtime DLR](dlr-component.md)
+ [TensorFlow Runtime Lite](tensorflow-lite-component.md)

Per impostazione predefinita, *MLRootPath* è impostato su. `/greengrass/v2/work/component-name/greengrass_ml` Per modificare questa posizione, includi il componente [Runtime DLR](dlr-component.md) o [TensorFlow Runtime Lite](tensorflow-lite-component.md) runtime direttamente nella distribuzione e specifica un valore modificato per il `MLRootPath` parametro in un aggiornamento di fusione della configurazione. Per ulteriori informazioni sulla configurazione del componente, vedere. [Aggiornamento delle configurazioni dei componenti](update-component-configurations.md)

**Nota**  
Per il componente DLR v1.3.x, si imposta il `MLRootPath` parametro nella configurazione del componente di inferenza e il valore predefinito è. `$HOME/greengrass_ml`

## RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>
<a name="troubleshooting-rpi-numpy-version-error"></a>

È possibile che vengano visualizzati i seguenti errori quando si esegue l'inferenza dell'apprendimento automatico su un Raspberry Pi con sistema operativo Raspberry Pi Bullseye.

```
RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd
ImportError: numpy.core.multiarray failed to import
```

Questo errore si verifica perché il sistema operativo Raspberry Pi Bullseye include una versione precedente NumPy a quella richiesta da OpenCV. Per risolvere questo problema, esegui il seguente comando per eseguire l'aggiornamento alla versione NumPy più recente.

```
pip3 install --upgrade numpy
```

## picamera.exc.PiCameraError: Camera is not enabled
<a name="troubleshooting-rpi-camera-stack-error"></a>

Potresti visualizzare il seguente errore quando esegui l'inferenza dell'apprendimento automatico su un Raspberry Pi che esegue Raspberry Pi OS Bullseye.

```
picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.
```

Questo errore si verifica perché Raspberry Pi OS Bullseye include un nuovo stack di fotocamere che non è compatibile con i componenti ML. Per risolvere questo problema, abilita lo stack di fotocamere precedente.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**Per abilitare lo stack di telecamere precedente**

1. Esegui il seguente comando per aprire lo strumento di configurazione Raspberry Pi.

   ```
   sudo raspi-config
   ```

1. Seleziona **Opzioni di interfaccia**.

1. Seleziona **Legacy camera** per abilitare lo stack di telecamere legacy.

1. Riavvia il dispositivo Raspberry Pi.

## Errori di memoria
<a name="troubleshooting-memory-errors"></a>

I seguenti errori si verificano in genere quando il dispositivo non dispone di memoria sufficiente e il processo del componente viene interrotto.
+ `stderr. Killed.`
+ `exitCode=137`

Si consiglia un minimo di 500 MB di memoria per distribuire un componente di inferenza pubblico per l'apprendimento automatico.

## Errori di spazio su disco
<a name="troubleshooting-disk-space-errors"></a>

L'`no space left on device`errore si verifica in genere quando un dispositivo non dispone di spazio di archiviazione sufficiente. Assicurati che ci sia abbastanza spazio su disco disponibile sul tuo dispositivo prima di distribuire nuovamente il componente. Consigliamo un minimo di 500 MB di spazio libero su disco per distribuire un componente di inferenza pubblico per l'apprendimento automatico.

## Errori di timeout
<a name="troubleshooting-timeout-errors"></a>

I componenti di machine learning pubblici scaricano file di modelli di machine learning di grandi dimensioni che superano i 200 MB. Se il download scade durante la distribuzione, controlla la velocità della tua connessione Internet e riprova a eseguire la distribuzione.