{"id":2517,"date":"2021-02-04T12:49:38","date_gmt":"2021-02-04T11:49:38","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=2517"},"modified":"2021-03-17T15:33:44","modified_gmt":"2021-03-17T14:33:44","slug":"deploy-di-una-pipeline-di-real-time-data-ingestion-e-analytics-con-aws-iot-core-amazon-kinesis-e-amazon-sagemaker","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/deploy-di-una-pipeline-di-real-time-data-ingestion-e-analytics-con-aws-iot-core-amazon-kinesis-e-amazon-sagemaker\/","title":{"rendered":"Deploy di una pipeline di real-time Data Ingestion e Analytics con AWS IoT Core, Amazon Kinesis e Amazon SageMaker"},"content":{"rendered":"\n
Il Machine Learning sta rapidamente entrando a far parte della nostra vita quotidiana. Sempre pi\u00f9 software e dispositivi sono oggi in grado di connettersi ad internet e di gestire autonomamente routine e attivit\u00e0 di tutti i giorni senza l’intervento umano. Si pensi ad esempio alla domotica, alle luci e ai riscaldamenti smart <\/em>o ai robot che puliscono i pavimenti in autonomia senza difficolt\u00e0 alcuna anche in ambienti domestici complessi pieni di ostacoli.<\/p>\n\n\n\n In questo contesto, le informazioni che possiamo raccogliere dai dispositivi connessi sono infinite. Il costo contenuto di acquisizione del dato e della potenza di calcolo necessaria ad elaborare grandi quantit\u00e0 di informazioni hanno reso accessibile l\u2019applicazione del Machine Learning ai pi\u00f9 diversi casi d\u2019uso. Uno dei pi\u00f9 interessanti riguarda sicuramente l\u2019ingestion e l\u2019analisi real-time dei dati provenienti da dispositivi connessi.<\/p>\n\n\n\n In questo articolo, descriveremo una soluzione basata sui servizi gestiti di AWS per l\u2019elaborazione in tempo reale di elevati volumi di dati provenienti da uno o pi\u00f9 dispositivi connessi IoT e mostreremo come realizzare una pipeline completa di real-time Data Ingestion e Analytics. <\/p>\n\n\n\n Esploreremo alcuni concetti chiave relativi all’apprendimento automatico, all\u2019ETL, alla pulizia dei dati e alla preparazione del data lake.<\/p>\n\n\n\n Prima di passare alla progettazione del codice e dell’infrastruttura, per\u00f2, facciamo un breve riepilogo su alcuni concetti chiave relativi a Machine Learning, ETL, pulizia e preparazione dei dati, creazione dei data lake ed IoT. Partiamo!<\/p>\n\n\n\n Internet of Things (IoT) \u00e8 la definizione utilizzata per descrivere un insieme di dispositivi fisici – “things” – interconnessi e dotati di sensori in grado di inviare dati e scambiare informazioni via internet.<\/p>\n\n\n\n L’IoT si \u00e8 evoluto rapidamente grazie alla diminuzione dei costi dei sensori intelligenti e alla diffusione di metodologie come analisi in tempo reale, apprendimento automatico e sistemi integrati.<\/p>\n\n\n\n Naturalmente, anche i settori tradizionali dei sistemi embedded, delle reti di sensori wireless, dei sistemi di controllo e dell’automazione contribuiscono al mondo dell’IoT.<\/p>\n\n\n\n Il Machine Learning \u00e8 nato come un\u2019evoluzione dell’intelligenza artificiale<\/strong>. Il Machine Learning tradizionale richiede ai programmatori di scrivere euristiche complesse e difficili da mantenere per eseguire un compito tradizionalmente umano (ad esempio il riconoscimento del testo nelle immagini) utilizzando un computer.<\/p>\n\n\n\n Grazie al ML, \u00e8 il sistema stesso che impara le relazioni tra i dati.<\/p>\n\n\n\n Per esempio, in un\u2019ipotetica partita di scacchi, baster\u00e0 fornire un set di dati di caratteristiche riguardanti le partite di scacchi e il modello imparer\u00e0 a giocare da solo. In una pipeline di Machine Learning, i dati devono essere uniformi, ovvero standardizzati. Le differenze nei dati possono derivare dalla loro provenienza da fonti eterogenee, da \u201cdatabase schema\u201d differenti o flussi di importazione dei dati diversi.<\/p>\n\n\n\n La trasformazione dei dati o flusso di ETL (Estrazione, Trasformazione, Caricamento) \u00e8 quindi un passaggio essenziale in tutte le pipeline di ML. I dati standardizzati non sono solo essenziali nell’addestramento del modello di ML, ma sono anche molto pi\u00f9 facili da analizzare e visualizzare nella fase preliminare di data discovery<\/strong>.<\/p>\n\n\n\n Per le attivit\u00e0 di pulizia e formattazione del dato sono generalmente utilizzate librerie come Scipy Pandas o simili.<\/p>\n\n\n\n – NumPy<\/strong>: <\/em>libreria utilizzata per la gestione di array multidimensionali. Generalmente utilizzata per le fasi di import e lettura di un dataset.<\/p>\n\n\n\n – Pandas<\/strong> Dataframe<\/strong>: libreria utilizzata per la gestione di dati in formato tabulare. Colleziona data point da file di tipo CSV<\/strong>, JSON<\/strong>, Excel<\/strong>, e pickle <\/strong>e li trasforma in tabelle.<\/p>\n\n\n\n – SciKit-Learn<\/strong>: libreria utilizzata per la manipolazione e il training finale dei dati.<\/p>\n\n\n\n Pulire e formattare i dati \u00e8 essenziale per ottenere un modello performante in grado di convergere <\/strong>alla soluzione che si vuole ottenere.<\/p>\n\n\n\n Per la soluzione che andremo a realizzare faremo largo uso dei servizi gestiti messi a disposizione da AWS. Ecco un semplice schema infrastrutturale raffigurante gli attori principali nella nostra Pipeline di ML:<\/p>\n\n\n\nIoT, Machine Learning e Data Transformation: concetti chiave<\/h2>\n\n\n\n
IoT<\/h3>\n\n\n\n
Machine Learning<\/h3>\n\n\n\n
Tutto ci\u00f2 acquista ancora pi\u00f9 rilevanza se lo si pensa in un contesto distribuito<\/strong> dove la previsione dovr\u00e0 scalare<\/strong>.<\/p>\n\n\n\nData Transformation<\/h3>\n\n\n\n
La Pipeline<\/h2>\n\n\n\n