Connettore di feedback ML - 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à.

Connettore di feedback ML

avvertimento

Questo connettore è stato spostato nelFase di vita prolungata, eAWS IoT Greengrassnon rilascerà aggiornamenti che forniscono funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta la pagina AWS IoT Greengrass Version 1politica di manutenzione .

Il connettore ML Feedback semplifica l'accesso ai dati del modello di machine learning (ML) per il retraining e l'analisi del modello. Il connettore:

  • Carica i dati di input (esempi) utilizzati dal modello ML in Amazon S3. L'input del modello può essere in qualsiasi formato, ad esempio immagini, JSON o audio. Dopo che gli esempi sono stati caricati nel cloud, puoi utilizzarli per eseguire un nuovo training del modello per migliorare l'accuratezza e la precisione delle sue previsioni. Ad esempio, è possibile utilizzareSageMaker Ground Truthper etichettare i campioni eSageMakerper riqualificare il modello.

  • Pubblica i risultati delle previsioni ricevuti dal modello come messaggi MQTT. In questo modo puoi monitorare e analizzare la qualità dell'inferenza del modello in tempo reale. Puoi anche archiviare i risultati delle previsioni e utilizzarli per analizzare le tendenze nel corso del tempo.

  • Pubblica i parametri relativi ai caricamenti di esempio e ai dati di esempio in Amazon CloudWatch.

Per configurare questo connettore, descrivi le configurazioni di feedback supportate in formato JSON. Una configurazione di feedback definisce proprietà quali il bucket Amazon S3 di destinazione, il tipo di contenuti estrategia di campionamento. (Una strategia di campionamento viene utilizzata per determinare quali esempi caricare.)

Puoi utilizzare il connettore ML Feedback nei seguenti scenari:

  • Con funzioni Lambda definite dall'utente. Le funzioni Lambda di inferenza locale utilizzano ilAWS IoT GreengrassSDK di Machine Learning per invocare questo connettore e passare la configurazione del feedback di destinazione, l'input del modello e l'output del modello (risultati delle previsioni). Per un esempio, consultare Esempio di utilizzo.

  • Con laConnettore di classificazione delle immagini ML(v2). Per utilizzare questo connettore con il connettore ML Image Classification, configura ilMLFeedbackConnectorConfigIdparametro per il connettore ML Image Classification.

  • Con laConnettore di rilevamento oggetti ML. Per utilizzare questo connettore con il connettore ML Object Detection, configura ilMLFeedbackConnectorConfigIdparametro per il connettore ML Object Detection.

ARN: arn:aws:greengrass:region::/connectors/MLFeedback/versions/1

Requisiti

Questo connettore presenta i seguenti requisiti:

  • AWS IoT GreengrassCore Software v1.9.3 o versioni successive.

  • PitoneVersione 3.7 o 3.8 installata sul dispositivo core e aggiunta alla variabile di ambiente PATH.

    Nota

    Per utilizzare Python 3.8, eseguire il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.

  • Uno o più bucket Amazon S3. Il numero di bucket utilizzati dipende dalla strategia di campionamento.

  • LaRuolo del gruppo Greengrassconfigurato per consentire ils3:PutObjectun'operazione su oggetti nel bucket Amazon S3 di destinazione, come mostrato nell'esempio di seguito policy IAM.

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

    La policy deve includere tutti i bucket di destinazione come risorse. Puoi concedere alle risorse un accesso granulare o condizionale (ad esempio, utilizzando uno schema di denominazione con il carattere jolly *).

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta le sezioni Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

  • LaConnettore CloudWatch Metricsaggiunto al gruppo Greengrass e configurato. Questo è obbligatorio solo se desideri utilizzare la funzionalità di creazione di report dei parametri.

  • AWS IoT GreengrassSDK di Machine LearningLa versione v1.1.0 è obbligatoria per interagire con questo connettore.

Parametri

FeedbackConfigurationMap

Un set di una o più configurazioni di feedback utilizzabili dal connettore per caricare esempi in Amazon S3. Una configurazione di feedback definisce proprietà quali il bucket di destinazione, il tipo di contenuti e la strategia di campionamento. Quando questo connettore viene richiamato, la funzione Lambda o il connettore chiamante specifica una configurazione di feedback di destinazione.

Nome visualizzato nella finestra diAWS IoTConsole : Mappa di configurazione del feedback

: campo obbligatoriotrue

Type: Una stringa JSON ben formata che definisce il set di configurazioni di feedback supportate. Per un esempio, consultare Esempio di FeedbackConfigurationMap.

L'ID di un oggetto di configurazione di feedback dispone dei seguenti requisiti.

L'ID:

  • Deve essere univoco tra gli oggetti di configurazione.

  • Deve iniziare con una lettera o un numero. Può contenere lettere minuscole e maiuscole, numeri e trattini.

  • Deve avere una lunghezza compresa tra 2 e 63 caratteri.

: campo obbligatoriotrue

Tipo: string

Modello valido:^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$

Esempi: MyConfig0, config-a, 12id

Il corpo di un oggetto di configurazione di feedback contiene le seguenti proprietà.

s3-bucket-name

Il nome del bucket Amazon S3 di destinazione.

Nota

Il ruolo del gruppo deve consentire l'operazione s3:PutObject su tutti i bucket di destinazione. Per ulteriori informazioni, consulta la pagina Requisiti .

: campo obbligatoriotrue

Tipo: string

Modello valido:^[a-z0-9\.\-]{3,63}$

content-type

Il tipo di contenuto dei campioni da caricare. Tutti i contenuti di una singola configurazione di feedback devono essere dello stesso tipo.

: campo obbligatoriotrue

Tipo: string

Esempi: image/jpeg, application/json, audio/ogg

s3-prefix

Il prefisso della chiave da utilizzare per i campioni caricati. Un prefisso è simile al nome di una directory. Consente di archiviare dati simili nella stessa directory in un bucket. Per ulteriori informazioni, consultaChiavi e metadata degli oggettinellaGuida dell'utente Amazon Simple Storage Service.

: campo obbligatoriofalse

Tipo: string

file-ext

L'estensione da utilizzare per i campioni caricati. Deve essere un'estensione file valida per il tipo di contenuti.

: campo obbligatoriofalse

Tipo: string

Esempi: jpg, json, ogg

sampling-strategy

La strategia di campionamento da utilizzare per filtrare i campioni da caricare. Se omessa, il connettore tenta di caricare tutti i campioni che riceve.

: campo obbligatoriofalse

Type: Una stringa JSON ben formata che contiene le seguenti proprietà.

strategy-name

Il nome della strategia di campionamento.

: campo obbligatoriotrue

Tipo: string

Valori validi: RANDOM_SAMPLING, LEAST_CONFIDENCE, MARGIN o ENTROPY

rate

La velocità della strategia di campionamento causale.

: campo obbligatoriotruesestrategy-nameèRANDOM_SAMPLING.

Tipo: number

Valori validi: 0.0 - 1.0

threshold

La soglia per la strategia di campionamento Fiducia minima, Margine o Entropia.

: campo obbligatoriotruesestrategy-nameèLEAST_CONFIDENCE,MARGIN, oppureENTROPY.

Tipo: number

Valori validi:

  • 0.0 - 1.0 per la strategia LEAST_CONFIDENCE o MARGIN.

  • 0.0 - no limit per la strategia ENTROPY.

RequestLimit

Il numero massimo di richieste che il connettore può elaborare alla volta.

Puoi utilizzare questo parametro per limitare il consumo di memoria limitando il numero di richieste che il connettore elabora nello stesso momento. Le richieste che superano questo limite vengono ignorate.

Nome visualizzato nella finestra diAWS IoTConsole : Limite richieste

: campo obbligatoriofalse

Tipo: string

Valori validi: 0 - 999

Modello valido:^$|^[0-9]{1,3}$

Esempio di creazione di un connettore (AWS CLI)

Il seguente comando CLI crea unConnectorDefinitioncon una versione iniziale che contiene il connettore ML Feedback.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyMLFeedbackConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/MLFeedback/versions/1", "Parameters": { "FeedbackConfigurationMap": "{ \"RandomSamplingConfiguration\": { \"s3-bucket-name\": \"my-aws-bucket-random-sampling\", \"content-type\": \"image/png\", \"file-ext\": \"png\", \"sampling-strategy\": { \"strategy-name\": \"RANDOM_SAMPLING\", \"rate\": 0.5 } }, \"LeastConfidenceConfiguration\": { \"s3-bucket-name\": \"my-aws-bucket-least-confidence-sampling\", \"content-type\": \"image/png\", \"file-ext\": \"png\", \"sampling-strategy\": { \"strategy-name\": \"LEAST_CONFIDENCE\", \"threshold\": 0.4 } } }", "RequestLimit": "10" } } ] }'

Esempio di FeedbackConfigurationMap

Di seguito è riportato un valore di esempio espanso per il parametro FeedbackConfigurationMap. Questo esempio include diverse configurazioni di feedback che utilizzano varie strategie di campionamento.

{ "ConfigID1": { "s3-bucket-name": "my-aws-bucket-random-sampling", "content-type": "image/png", "file-ext": "png", "sampling-strategy": { "strategy-name": "RANDOM_SAMPLING", "rate": 0.5 } }, "ConfigID2": { "s3-bucket-name": "my-aws-bucket-margin-sampling", "content-type": "image/png", "file-ext": "png", "sampling-strategy": { "strategy-name": "MARGIN", "threshold": 0.4 } }, "ConfigID3": { "s3-bucket-name": "my-aws-bucket-least-confidence-sampling", "content-type": "image/png", "file-ext": "png", "sampling-strategy": { "strategy-name": "LEAST_CONFIDENCE", "threshold": 0.4 } }, "ConfigID4": { "s3-bucket-name": "my-aws-bucket-entropy-sampling", "content-type": "image/png", "file-ext": "png", "sampling-strategy": { "strategy-name": "ENTROPY", "threshold": 2 } }, "ConfigID5": { "s3-bucket-name": "my-aws-bucket-no-sampling", "s3-prefix": "DeviceA", "content-type": "application/json" } }

Strategie di campionamento

Il connettore supporta quattro strategie di campionamento che determinano se caricare i campioni che vengono passati al connettore. Gli esempi sono istanze discrete di dati utilizzati da un modello per una previsione. Puoi utilizzare strategie di campionamento per filtrare i campioni che è più probabile migliorino l'accuratezza del modello.

RANDOM_SAMPLING

Carica in modo casuale campioni in base alla velocità fornita. Carica un campione se un valore generato casualmente è inferiore alla velocità. Più alta è la velocità, maggiore è il numero di campioni caricati.

Nota

Questa strategia ignora qualsiasi previsione del modello fornita.

LEAST_CONFIDENCE

Carica esempi la cui probabilità di affidabilità massima scende al di sotto della soglia fornita.

Scenario di esempio:

Soglia: .6

Previsione del modello: [.2, .2, .4, .2]

Probabilità di affidabilità massima: .4

Risultato:

Utilizza il campione perché la probabilità di affidabilità massima (.4) <= soglia (.6).

MARGIN

Carica esempi se il margine tra le prime due probabilità di affidabilità principali rientra nella soglia fornita. Il margine è la differenza tra le prime due probabilità principali.

Scenario di esempio:

Soglia: .02

Previsione del modello: [.3, .35, .34, .01]

Le due probabilità di affidabilità principali: [.35, .34]

Margine: .01 (.35 - .34)

Risultato:

Utilizza il campione perché margine (.01) <= soglia (.02).

ENTROPY

Carica campioni la cui entropia è maggiore della soglia specificata. Utilizza l'entropia normalizzata della previsione del modello.

Scenario di esempio:

Soglia: 0.75

Previsione del modello: [.5, .25, .25]

Entropia per la previsione: 1.03972

Risultato:

Utilizza campione perché entropia (1.03972) > soglia (0.75).

Dati di input

Le funzioni Lambda definite dall'utente utilizzano ilpublishfunzione delfeedbackclient nelAWS IoT GreengrassSDK di Machine Learning per richiamare il connettore. Per un esempio, consultare Esempio di utilizzo.

Nota

Questo connettore non accetta messaggi MQTT come dati di input.

La funzione publish accetta i seguenti argomenti:

ConfigId

L'ID della configurazione di feedback di destinazione. Deve corrispondere all'ID di una configurazione di feedback definita nellaFeedbackConfigurationMapparametro per il connettore ML Feedback.

Obbligatorio: true

Tipo: stringa

ModelInput

I dati di input che sono stati passati a un modello per l'inferenza. Questi dati di input vengono caricati utilizzando la configurazione di destinazione, a meno che non vengano filtrati in base alla strategia di campionamento.

Obbligatorio: true

Tipo: byte

ModelPrediction

I risultati delle previsioni dal modello. Il tipo di risultato può essere un dizionario o un elenco. Ad esempio, i risultati delle previsioni dal connettore ML Image Classification sono un elenco di probabilità (ad esempio:[0.25, 0.60, 0.15]). Questi dati vengono pubblicati nell'argomento /feedback/message/prediction.

Obbligatorio: true

Tipo: dizionario o elenco difloatvalori

Metadati

Metadati specifici dell'applicazione definiti dal cliente collegati al campione caricato e pubblicati nell'argomento /feedback/message/prediction. Il connettore inserisce inoltre una chiave publish-ts con un valore di timestamp nei metadati.

Obbligatorio: false

Tipo: dizionario

Esempio: {"some-key": "some value"}

Dati di output

Questo connettore pubblica i dati in tre argomenti MQTT:

  • Le informazioni sullo stato del connettore nell'argomento feedback/message/status.

  • Risultati delle previsioni nell'argomento feedback/message/prediction.

  • Metriche destinate a CloudWatch sulcloudwatch/metric/putargomento.

È necessario configurare le sottoscrizioni per consentire al connettore di comunicare su argomenti MQTT. Per ulteriori informazioni, consulta la pagina Input e output .

Filtro di argomenti: feedback/message/status

Utilizza questo argomento per monitorare lo stato dei caricamenti di campioni e dei campioni rimossi. Il connettore pubblica in questo argomento ogni volta che riceve una richiesta.

Output di esempio: Caricamento campione riuscito
{ "response": { "status": "success", "s3_response": { "ResponseMetadata": { "HostId": "IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km", "RetryAttempts": 1, "HTTPStatusCode": 200, "RequestId": "79104EXAMPLEB723", "HTTPHeaders": { "content-length": "0", "x-amz-id-2": "lbbqaDVFOhMlyU3gRvAX1ZIdg8P0WkGkCSSFsYFvSwLZk3j7QZhG5EXAMPLEdd4/pEXAMPLEUqU=", "server": "AmazonS3", "x-amz-expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"", "x-amz-request-id": "79104EXAMPLEB723", "etag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"", "date": "Thu, 11 Jul 2019 00:12:50 GMT", "x-amz-server-side-encryption": "AES256" } }, "bucket": "greengrass-feedback-connector-data-us-west-2", "ETag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"", "Expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"", "key": "s3-key-prefix/UUID.file_ext", "ServerSideEncryption": "AES256" } }, "id": "5aaa913f-97a3-48ac-5907-18cd96b89eeb" }

Il connettore aggiunge ilbucketekeycampi alla risposta di Amazon S3. Per ulteriori informazioni sulla risposta di Amazon S3 consultaOggetto PUTnellaDocumentazione di riferimento delle API di Amazon Simple Storage Service.

Output di esempio: Campione eliminato a causa della strategia di campionamento
{ "response": { "status": "sample_dropped_by_strategy" }, "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3" }
Output di esempio: Caricamento campione non riuscito

Uno stato di errore include il messaggio di errore come il valore error_message e la classe di eccezione come il valore error.

{ "response": { "status": "fail", "error_message": "[RequestId: 4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3] Failed to upload model input data due to exception. Model prediction will not be published. Exception type: NoSuchBucket, error: An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist", "error": "NoSuchBucket" }, "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3" }
Output di esempio: Richiesta con throttling a causa del limite di richieste
{ "response": { "status": "fail", "error_message": "Request limit has been reached (max request: 10 ). Dropping request.", "error": "Queue.Full" }, "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3" }
Filtro di argomenti: feedback/message/prediction

Utilizza questo argomento per ascoltare le previsioni in base ai dati campione caricati. Questo consente di analizzare le prestazioni del modello in tempo reale. Le previsioni del modello vengono pubblicate in questo argomento solo se i dati sono stati correttamente caricati in Amazon S3. I messaggi pubblicati in questo argomento sono in formato JSON. Contengono il collegamento all'oggetto dati caricato, la previsione del modello e i metadati inclusi nella richiesta.

Puoi anche archiviare i risultati delle previsioni e utilizzarli per segnalare e analizzare le tendenze nel tempo. Le tendenze possono fornire informazioni preziose. Ad esempio, una tendenza precisione decrescente nel tempo consente di decidere se occorre eseguire un nuovo training del modello.

Output di esempio
{ "source-ref": "s3://greengrass-feedback-connector-data-us-west-2/s3-key-prefix/UUID.file_ext", "model-prediction": [ 0.5, 0.2, 0.2, 0.1 ], "config-id": "ConfigID2", "metadata": { "publish-ts": "2019-07-11 00:12:48.816752" } }
Suggerimento

Puoi configurare il fileConnettore IoT Analyticsper iscriversi a questo argomento e inviare informazioni aAWS IoT Analyticsper ulteriori analisi o storiche.

Filtro di argomenti: cloudwatch/metric/put

Questo è l'argomento di output utilizzato per pubblicare i parametri in CloudWatch. Questa caratteristica richiede l'installazione e la configurazione delConnettore CloudWatch Metrics.

I parametri includono:

  • Il numero di campioni caricati.

  • Le dimensioni dei campioni caricati.

  • Il numero di errori dei caricamenti in Amazon S3.

  • Il numero di campioni rimossi in base alla strategia di campionamento.

  • Il numero di richieste sottoposte a throttling.

Output di esempio: Dimensioni del campione di dati (pubblicato prima del caricamento effettivo)
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 47592, "unit": "Bytes", "metricName": "SampleSize" } } }
Output di esempio: Caricamento campione riuscito
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 1, "unit": "Count", "metricName": "SampleUploadSuccess" } } }
Output di esempio: Caricamento campione riuscito e risultato delle previsioni pubblicato
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 1, "unit": "Count", "metricName": "SampleAndPredictionPublished" } } }
Output di esempio: Caricamento campione non riuscito
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 1, "unit": "Count", "metricName": "SampleUploadFailure" } } }
Output di esempio: Campione eliminato a causa della strategia di campionamento
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 1, "unit": "Count", "metricName": "SampleNotUsed" } } }
Output di esempio: Richiesta con throttling a causa del limite di richieste
{ "request": { "namespace": "GreengrassFeedbackConnector", "metricData": { "value": 1, "unit": "Count", "metricName": "ErrorRequestThrottled" } } }

Esempio di utilizzo

L'esempio seguente è una funzione Lambda definita dall'utente che utilizza laAWS IoT GreengrassSDK di Machine Learningper inviare dati al connettore ML Feedback.

Nota

Puoi scaricare il fileAWS IoT GreengrassSDK di Machine Learning dalAWS IoT Greengrass pagina download di.

import json import logging import os import sys import greengrass_machine_learning_sdk as ml client = ml.client('feedback') try: feedback_config_id = os.environ["FEEDBACK_CONFIG_ID"] model_input_data_dir = os.environ["MODEL_INPUT_DIR"] model_prediction_str = os.environ["MODEL_PREDICTIONS"] model_prediction = json.loads(model_prediction_str) except Exception as e: logging.info("Failed to open environment variables. Failed with exception:{}".format(e)) sys.exit(1) try: with open(os.path.join(model_input_data_dir, os.listdir(model_input_data_dir)[0]), 'rb') as f: content = f.read() except Exception as e: logging.info("Failed to open model input directory. Failed with exception:{}".format(e)) sys.exit(1) def invoke_feedback_connector(): logging.info("Invoking feedback connector.") try: client.publish( ConfigId=feedback_config_id, ModelInput=content, ModelPrediction=model_prediction ) except Exception as e: logging.info("Exception raised when invoking feedback connector:{}".format(e)) sys.exit(1) invoke_feedback_connector() def function_handler(event, context): return

Licenze

Il connettore ML Feedback include il software e le licenze di terze parti indicati di seguito:

Questo connettore viene rilasciato sotto ilAccordo di licenza del software Greengrass Core.

Consultare anche