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à.
Esempio: identificazione degli oggetti nei flussi video con SageMaker
Questo esempio dimostra come creare una soluzione che SageMaker
L'esempio include un container Docker
Il modello AWS CloudFormation crea le seguenti risorse:
-
Un cluster Amazon Elastic Container Service (Amazon ECS)
che utilizza il motore di calcolo AWSFargate che esegue il software della libreria. -
Una tabella Amazon DynamoDB
che mantiene i checkpoint e lo stato correlato tra i lavoratori che eseguono le attività di Fargate. -
Un flusso di dati Kinesis
che acquisisce gli output di inferenza generati da SageMaker. -
Una AWS Lambdafunzione
che analizza l'output da SageMaker. -
Risorse AWS Identity and Access Management (IAM)
per consentire l'accesso tra i servizi. -
CloudWatchRisorse Amazon
per il monitoraggio dell'applicazione.
L'applicazione è compatibile con qualsiasi SageMaker endpoint che elabora i dati. Questo esempio contiene istruzioni per creare un SageMaker endpoint che utilizza un modello di algoritmo di identificazione degli oggetti di esempio. Puoi modificare o sostituire l'algoritmo in base ai casi d'uso e ai requisiti dell'applicazione.
Argomenti
Prerequisiti
L'applicazione di esempio include i seguenti prerequisiti:
SageMaker
Questo esempio richiede un SageMaker notebook. Per informazioni sulla creazione di un notebook, consulta Creating a Notebook Instance nella Amazon SageMaker Developer Guide. Durante la creazione del notebook, prendi nota di quanto segue:
-
Aggiungi l'
Amazon_JumpStart_Object_Detection.ipynb
esempio (dalla sezione Introduzione agli algoritmi di Amazon nella scheda SageMaker Esempi della console Jupyter) al notebook. -
Crea un bucket Amazon Simple Storage Service (Amazon Simple Storage Service (Amazon Simple Storage Service) e fornisci il nome nella fase Prerequisiti quando aggiungi l'esempio.
-
Dopo aver creato il notebook, scegli Configurazione dell'endpoint sulla SageMaker console e prendi nota del nome dell'endpoint.
Kinesis
Questo esempio richiede uno o più stream video Kinesis con dati video in tempo reale. Per informazioni sulla creazione di un flusso video Kinesis e sull'invio di dati da una videocamera, consultaGStreamer. Prendere nota Kinesis del flusso video
Ruolo collegato ai servizi
Questo esempio richiede che il tuo account abbia un ruolo collegato al servizio per le operazioni di Fargate. Questo ruolo è abilitato per impostazione predefinita nei nuoviAWS account. Se viene visualizzato il seguente errore al momento della creazione dell'applicazione, è necessario abilitare il ruolo collegato ai servizi:
Unable to assume the service linked role. Please verify that the ECS service linked role exists
Per abilitare il ruolo collegato ai servizi, eseguire il seguente comando:
aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
Creazione dell'applicazione
Per creare l'applicazione di esempio, si utilizza AWS CloudFormation e i modelli forniti.
Per utilizzare AWS CloudFormation per creare l'applicazione
-
Accedere a AWS Management Console e aprire la console AWS CloudFormation utilizzando uno dei seguenti collegamenti delle regioni AWS. Il collegamento avvia lo stack corretto per la regione:
-
Nella pagina Create Stack (Crea stack), specificare i seguenti valori:
-
Assegnare allo stack un nome univoco (ad esempio,
nome utente
-KVS-SageMaker). -
Fornisci il nome dell' SageMaker endpoint (non l'ARN dell'endpoint) che hai creato nella sezione precedente.
-
Fornire il Kinesis flusso video Se disponi di più di un flusso video Kinesis, fornisci i nomi degli stream tra virgolette e separati da virgole.
-
Lasciare inalterate le altre impostazioni.
Seleziona Successivo.
-
-
Nella pagina Options (Opzioni), non modificare le impostazioni.
-
Seleziona la casella di controllo Riconosco cheAWS CloudFormation potrebbe creare risorse IAM. Seleziona Successivo.
AWS CloudFormation crea l'applicazione.
La tabella seguente elenca i diversi parametri utilizzati dal container Docker al momento della creazione di uno stack con questo modello AWS CloudFormation. I valori sono predefiniti nella risorsa SSM
del modello, ma è possibile personalizzarli in base alle esigenze.
Nome risorsa | Valore predefinito | Descrizione |
inferenceInterval | 6 | The sampling ratio for video frames that are sent to the SageMaker endpoint. Currently, we only support inferencing on I-Frames. The default value of 6 means that 1 out of every 6 I-Frames is sent to the SageMaker endpoint. |
sageMakerTaskQueueSize | 5000 | The size of the queue that maintains the pending requests to the SageMaker endpoint. The size of the queue is affected by ‘inferenceInternval’ and ‘sageMakerTaskTimeoutInMilli’. If SageMaker inference takes longer, requests are buffered in this queue. |
sageMakerTaskThreadPoolSize | 20 | Number of threads that is used to concurrently execute SageMaker requests. |
sageMakerTaskTimeoutInMilli | 20000 | The maximum duration allowed for a single request (or a retry request) that is sent to the SageMaker endpoint. |
sageMakerTaskThreadPoolName | SageMakerThreadPool-%d | The name of the threadpool that is sending requests to the SageMaker endpoint. |
Per personalizzare i valori di questi parametri, scarica il AWS CloudFormation modello scegliendo l’URL nella pagina Crea stack e quindi individua i parametri nella sezione Params
del modello che è come il seguente:
Params: Type: AWS::SSM::Parameter Properties: Name: Ref: AppName Description: "Configuration for SageMaker app" Type: String Value: Fn::Sub: | {"streamNames":[${StreamNames}], "tagFilters":[${TagFilters}],"sageMakerEndpoint":"${SageMakerEndpoint}", "endPointAcceptContentType": "${EndPointAcceptContentType}", "kdsStreamName":"${Kds}","inferenceInterval":6,"sageMakerTaskQueueSize":5000, "sageMakerTaskThreadPoolSize":20,"sageMakerTaskTimeoutInMilli":20000, "sageMakerTaskThreadPoolName":"SageMakerThreadPool-%d"}
Monitoraggio dell'applicazione
L'applicazione creata dalAWS CloudFormation modello include una CloudWatch dashboard Amazon e un flusso di CloudWatch log che utilizzi per monitorare le metriche e gli eventi dell'applicazione.
Pannello di controllo dell'applicazione
L'applicazione include una CloudWatch dashboard per il monitoraggio delle metriche dell'applicazione. Per visualizzare la dashboard dell'applicazione, apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
Scegli la dashboard KVS-SageMaker -Driver-KvsSageMakerIntegration - aws-region
. Il pannello di controllo mostra le seguenti informazioni:
-
Metriche dei frame: metriche per l'elaborazione del flusso video, l'invio di frame all' SageMaker endpoint e la scrittura nel flusso di dati Kinesis che collega il SageMaker notebook allaAWS Lambda funzione che elabora i risultati dell' SageMaker inferenza in uscita.
-
IngestToProcessLatency: la differenza di tempo tra il momento in cui un fotogramma video viene inserito nel servizio Kinesis Video Streams e il momento in cui l'applicazione riceve il frame.
-
Totale del contratto di locazione attuale: all'applicazione vengono concesse le autorizzazioni per leggere dal flusso video Kinesis utilizzando un contratto di locazione. Questo parametro mostra il numero di lease attivi. L'applicazione utilizza un lease per flusso video Kinesis e un lease per la sincronizzazione tra gli stream.
-
Parametri di sincronizzazione lease: la frequenza e la durata della sincronizzazione dei lease di autorizzazione.
-
LeaseCount per lavoratore: la distribuzione dei contratti di locazione tra i thread SageMaker dei lavoratori.
-
Numero di lavoratori: il numero di lavoratori SageMaker che elaborano i flussi. Ogni attività in un cluster Amazon ECS ha un lavoratore in esecuzione. Un lavoratore può elaborare più flussi.
-
Utilizzo del servizio ECS: metriche di utilizzo per il cluster Amazon ECS.
-
KinesisDataStream: metriche di utilizzo del flusso di dati Kinesis.
-
SageMaker: operazioni eseguite dal SageMaker notebook.
-
Lambda: numero e durata della funzione Lambda che elabora l'output dal SageMaker notebook.
Se una qualsiasi delle informazioni di questi grafici indica un problema operativo (ad esempio un valore costantemente in aumento anziché stabile), consulta la sezione seguente per informazioni su come leggere i log delle applicazioni per determinare il problema.
CloudWatch Registri
L'applicazione include due CloudWatch registri:
Log dell'applicazione
Puoi utilizzare il log dell'applicazione per monitorare gli eventi e le condizioni di errore dell'applicazione. Questo log è utile se devi contattare il supporto del prodotto relativamente a un problema.
Per leggere il log dell'applicazione
-
Apri la console di Amazon ECS all'indirizzo https://console.aws.amazon.com/ecs
. -
Scegliere il cluster KVS-Sagemaker-Driver.
-
Scegli lo
stack-name
-SageMakerDriverService service nella scheda Servizi. -
Scegliere la scheda Logs (Registri).
Il log dell'applicazione mostra eventi quali l'inizializzazione, la configurazione e le attività dei lease.
Il registro delle funzioni Lambda
È possibile utilizzare il registro delle funzioni Lambda per tenere traccia delle identificazioni corrette degli oggetti.
Per leggere il log Lambda
-
Apri laAWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda
. -
Scegli la funzione Lambda per la tua applicazione. Il formato del nome della funzione Lambda è il seguente:
stack-name
-LambdaFunction-A1B2C3D4E5F6G -
Scegliere il riquadro Monitoring (Monitoraggio).
-
Scegli Visualizza accessi CloudWatch.
Il CloudWatch registro dell'applicazione mostra le identificazioni riuscite degli oggetti nel flusso video Kinesis e in altri eventi dell'applicazione.
Ampliamento dell'applicazione
Puoi aggiungere funzionalità personalizzate all'applicazione modificando i valori forniti nella finestra del modello AWS CloudFormation, come indicato di seguito:
-
EndPointAcceptContentType: puoi modificare questo valore se il tuo SageMaker endpoint non accetta fotogrammi in formato JPG. Sono supportati i formati seguenti:
-
image/jpeg
-
image/png
-
image/bmp
-
image/gif
-
application/x-image
-
-
LambdaFunctionBucket, LambdaFunctionKey: Le impostazioni fornite utilizzano unaAWS Lambda funzione che elabora l' SageMakeroutput e lo scrive in CloudWatch Logs. Se desideri inviare l' SageMaker output altrove, puoi fornire la tua funzione Lambda.
-
Filtri tag: se disponi di flussi contrassegnati da tag mediante l'operazione TagStream, puoi specificare i tag dei flussi da elaborare. Ad esempio, se disponi di due flussi con la chiave
Location
con i valoriFront
eParking
, potresti applicare filtri per utilizzare solo quei flussi immettendo quanto segue:{"key":"Location","values":["Front","Parking"]}
Pulizia dell'applicazione
Al termine dell'utilizzo dell'applicazione creata per questo tutorial, ti consigliamo di eliminare le risorse che non desideri conservare per evitare l'addebito di spese aggiuntive.
-
SageMaker endpoint: se hai creato l' SageMakerendpoint per questo tutorial anziché utilizzare un endpoint esistente, elimina l'endpoint. Nel pannello SageMaker di controllo, scegli Configurazioni degli endpoint. Scegliere l'endpoint creato, quindi Actions (Operazioni), Delete (Elimina). Confermare l'eliminazione.
-
SageMaker notebook: sulla SageMaker console, scegli Istanze Notebook. Scegliere il notebook creato, quindi Actions (Operazioni), Stop (Arresta). Se lo Status (Stato) del notebook è Stopped (Arrestato), scegliere Actions (Operazioni), Delete (Elimina). Confermare l'eliminazione.
Nota
Per ulteriori informazioni sulla pulizia SageMaker delle risorse, consulta Pulire nella guida per gliSageMaker sviluppatori.
-
SageMaker politica di esecuzione: nella console IAM, nel riquadro di navigazione, scegliere Policy. Scegliere la policy creata per questo tutorial. Il nome della policy è simile al seguente:
AmazonSageMaker-ExecutionPolicy-
timestamp
Scegliere Policy actions (Operazioni policy), Delete (Elimina). Confermare l'eliminazione.
-
SageMaker ruolo di esecuzione: nella console IAM, nel riquadro di navigazione, scegliere Ruoli. Scegliere il ruolo creato per questo tutorial. Il nome del ruolo è simile al seguente:
AmazonSageMaker-ExecutionRole-
timestamp
Scegli Delete role (Elimina ruolo). Confermare l'eliminazione.
-
Stack AWS CloudFormation: nella console AWS CloudFormation, scegliere lo stack creato per questo tutorial. Scegli Actions (Operazioni), quindi Delete Stack (Elimina stack). Confermare l'eliminazione.
-
Bucket Amazon S3: nella console di Amazon S3, scegliere il bucket creato per archiviare gli SageMaker asset. Scegliere Elimina. Immettere il nome del bucket e scegliere Confirm (Conferma) per confermare l'eliminazione.
-
Stream video Kinesis: nella console Kinesis Video Streams, scegli il flusso video che hai creato per l'applicazione. Scegliere Delete (Elimina). Confermare l'eliminazione.