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 ML Feedback
avvertimento
Questo connettore è entrato nella fase di vita prolungata e AWS IoT Greengrass non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta AWS IoT Greengrass Version 1politica di manutenzione.
Il connettore ML Feedback semplifica l'accesso ai dati del modello di machine learning (ML) per la riqualificazione e l'analisi dei modelli. Il connettore:
Carica i dati di input (esempi) utilizzati dal tuo modello ML su 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, puoi utilizzare SageMaker AI Ground Truth per etichettare i tuoi campioni e l'SageMaker intelligenza artificiale per 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 metriche sui caricamenti e sui dati di esempio su Amazon. CloudWatch
Per configurare questo connettore, descrivi le configurazioni di feedback supportate in formato JSON. Una configurazione di feedback definisce proprietà come il bucket Amazon S3 di destinazione, il tipo di contenuto e la strategia 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 il Machine AWS IoT Greengrass Learning SDK per richiamare questo connettore e trasmettere la configurazione del feedback di destinazione, l'input e l'output del modello (risultati di previsione). Per vedere un esempio, consulta Esempio di utilizzo.
-
Con il connettore ML Image Classification (v2). Per utilizzare questo connettore con il connettore ML Image Classification, configura il
MLFeedbackConnectorConfigId
parametro per il connettore ML Image Classification. -
Con il connettore ML Object Detection. Per utilizzare questo connettore con il connettore ML Object Detection, configura il
MLFeedbackConnectorConfigId
parametro per il connettore ML Object Detection.
ARN: arn:aws:greengrass:
region
::/connectors/MLFeedback/versions/1
Requisiti
Questo connettore presenta i seguenti requisiti:
-
AWS IoT Greengrass Core Software v1.9.3 o versione successiva.
-
Python
versione 3.7 o 3.8 installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH. Nota
Per usare Python 3.8, esegui 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.7Questo 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.
-
Il ruolo del gruppo Greengrass è configurato per consentire l'
s3:PutObject
azione sugli oggetti nel bucket Amazon S3 di destinazione, come illustrato nel seguente esempio di 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 Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).
-
Il connettore CloudWatch Metrics è stato aggiunto al gruppo Greengrass e configurato. Questo è obbligatorio solo se desideri utilizzare la funzionalità di creazione di report dei parametri.
-
AWS IoT Greengrass Per interagire con questo connettore è necessario Machine Learning SDK v1.1.0.
Parametri
FeedbackConfigurationMap
-
Un set di una o più configurazioni di feedback che il connettore può utilizzare per caricare campioni su 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 o il connettore Lambda chiamante specifica una configurazione di feedback di destinazione.
Nome visualizzato nella AWS IoT console: mappa di configurazione del feedback
Obbligatorio:
true
Tipo: una stringa JSON ben formata che definisce l'insieme di configurazioni di feedback supportate. Per vedere un esempio, consulta FeedbackConfigurationMap esempio.
-
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.
Obbligatorio:
true
Tipo:
string
Schema 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 Requisiti.Obbligatorio:
true
Tipo:
string
Schema 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.
Richiesto:
true
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, consulta la chiave dell'oggetto e i metadati nella Guida per l'utente di Amazon Simple Storage Service.
Obbligatorio:
false
Tipo:
string
file-ext
-
L'estensione da utilizzare per i campioni caricati. Deve essere un'estensione file valida per il tipo di contenuti.
Richiesto:
false
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.
Richiesto:
false
Tipo: una stringa JSON ben formata che contiene le seguenti proprietà.
strategy-name
-
Il nome della strategia di campionamento.
Obbligatorio:
true
Tipo:
string
Valori validi:
RANDOM_SAMPLING
,LEAST_CONFIDENCE
,MARGIN
oENTROPY
rate
-
La velocità della strategia di campionamento causale.
Obbligatorio:
true
se lostrategy-name
èRANDOM_SAMPLING
.Tipo:
number
Valori validi:
0.0 - 1.0
threshold
-
La soglia per la strategia di campionamento Fiducia minima, Margine o Entropia.
Obbligatorio:
true
sestrategy-name
èLEAST_CONFIDENCE
MARGIN
, oENTROPY
.Tipo:
number
Valori validi:
-
0.0 - 1.0
per la strategiaLEAST_CONFIDENCE
oMARGIN
. -
0.0 - no limit
per la strategiaENTROPY
.
-
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 AWS IoT console: Request limit
Obbligatorio:
false
Tipo:
string
Valori validi:
0 - 999
Schema valido:
^$|^[0-9]{1,3}$
Esempio di creazione di un connettore (AWS CLI)
Il seguente comando CLI crea un file ConnectorDefinition
con 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" } } ] }'
FeedbackConfigurationMap esempio
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 publish
la funzione del client feedback
nel Machine AWS IoT Greengrass Learning SDK per richiamare il connettore. Per vedere un esempio, consulta 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. Questo deve corrispondere all'ID di una configurazione di feedback definita nel FeedbackConfigurationMapparametro 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 della previsione del 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 di
float
valori - Metadati
-
Metadati specifici dell'applicazione definiti dal cliente collegati al campione caricato e pubblicati nell'argomento
/feedback/message/prediction
. Il connettore inserisce inoltre una chiavepublish-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 all' CloudWatch
cloudwatch/metric/put
argomento.
È necessario configurare le sottoscrizioni per consentire al connettore di comunicare su argomenti MQTT. Per ulteriori informazioni, consulta 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 i
key
campibucket
e alla risposta di Amazon S3. Per ulteriori informazioni sulla risposta di Amazon S3, consulta l'oggetto PUT nel riferimento all'API di Amazon Simple Storage Service. - Output di esempio: campione rimosso 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 valoreerror
.{ "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 dei modelli vengono pubblicate su questo argomento solo se i dati vengono caricati correttamente su 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 connettore IoT Analytics per iscriverti a questo argomento e inviare le informazioni a AWS IoT Analytics per ulteriori analisi o analisi cronologiche.
- Filtro di argomenti:
cloudwatch/metric/put
-
Questo è l'argomento di output utilizzato per pubblicare i parametri in CloudWatch. Questa funzionalità richiede l'installazione e la configurazione del connettore CloudWatch Metrics.
I parametri includono:
Il numero di campioni caricati.
Le dimensioni dei campioni caricati.
Il numero di errori causati dai caricamenti su 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 rimosso 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 Machine AWS IoT Greengrass Learning SDK per inviare dati al connettore ML Feedback.
Nota
Puoi scaricare il AWS IoT Greengrass Machine Learning SDK dalla pagina dei AWS IoT Greengrass download.
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 i seguenti software/licenze di terze parti:
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
six
/MIT
Questo connettore è rilasciato ai sensi del contratto di licenza del software Greengrass Core