{"id":3591,"date":"2021-10-01T13:59:00","date_gmt":"2021-10-01T11:59:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=3591"},"modified":"2021-10-01T14:32:21","modified_gmt":"2021-10-01T12:32:21","slug":"mlops-essentials-quattro-principi-fondamentali-per-il-machine-learning-operations-su-aws","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/mlops-essentials-quattro-principi-fondamentali-per-il-machine-learning-operations-su-aws\/","title":{"rendered":"MLOps essentials: quattro principi fondamentali per il Machine Learning Operations su AWS"},"content":{"rendered":"\n
Quando affrontiamo i moderni problemi di Machine Learning in un ambiente AWS, c’\u00e8 molto pi\u00f9 che la tradizionale preparazione dei dati, l’addestramento del modello e le inferenze finali da considerare. Inoltre, la pura potenza di calcolo non \u00e8 l’unica preoccupazione di cui dobbiamo occuparci nella creazione di una soluzione ML.<\/p>\n\n\n\n
Esiste una differenza sostanziale tra la creazione e il test di un modello di Machine Learning<\/strong> all’interno di un notebook Jupyter in locale e il rilascio su un’infrastruttura di produzione in grado di generare valore aziendale.<\/p>\n\n\n\n Le complessit\u00e0 legate all’implementazione di un flusso di lavoro di Machine Learning nel Cloud sono chiamate gap di distribuzione<\/a> e vedremo insieme in questo articolo come affrontarlo combinando velocit\u00e0 e agilit\u00e0 nella modellazione e formazione, con i criteri di solidit\u00e0, scalabilit\u00e0 e resilienza richiesti da ambienti di produzione.<\/p>\n\n\n\n La procedura in cui ci addentreremo \u00e8 simile per molti aspetti al modello DevOps per lo sviluppo software “tradizionale”, e il paradigma MLOps, cos\u00ec chiamato, viene comunemente proposto come “un processo end-to-end per progettare, creare e gestire applicazioni di Machine Learning in modo riproducibile, testabile ed evolutivo<\/a>“.<\/p>\n\n\n\n Per questo motivo, man mano che ci addentreremo nei paragrafi seguenti, approfondiremo le ragioni e i principi alla base del paradigma MLOps e come si collega facilmente all’ecosistema AWS e alle migliori pratiche dell\u2019 AWS Well-Architected Framework.<\/p>\n\n\n\n Allora, iniziamo!<\/p>\n\n\n\n Come detto prima, i carichi di lavoro di Machine Learning possono essere visti essenzialmente come pezzi complessi di software, quindi possiamo ancora applicare pratiche software “tradizionali”. Tuttavia, per la sua natura sperimentale, il Machine Learning mette in gioco alcune differenze essenziali<\/strong>, che richiedono un paradigma di gestione del ciclo di vita fatto su misura per le loro esigenze.<\/p>\n\n\n\n Queste differenze si presentano in tutte le varie fasi di un carico di lavoro e contribuiscono in modo significativo al divario di distribuzione di cui abbiamo parlato, quindi una descrizione generale \u00e8, quantomeno, d\u2019obbligo:<\/p>\n\n\n\n Gestire codice nelle appliance di Machine Learning \u00e8 una questione complessa. Vediamo perch\u00e9!<\/p>\n\n\n\n La collaborazione sugli esperimenti del modello tra i data scientist<\/strong> non \u00e8 facile come la condivisione di file di codice tradizionali: i notebook Jupyter consentono di scrivere ed eseguire codice, rendendo le operazioni git pi\u00f9 complesse per mantenere il codice sincronizzato tra gli utenti, con frequenti conflitti di merge<\/strong>.<\/p>\n\n\n\n Gli sviluppatori devono scrivere codice per diversi sottoprogetti: processi ETL<\/strong>, logica del modello<\/strong>, training e convalida<\/strong>, logica di inferenza<\/strong> e modelli di Infrastructure-as-Code<\/strong>. Tutti questi progetti separati devono essere gestiti centralmente e adeguatamente versionati!<\/p>\n\n\n\n Per le moderne applicazioni software, esistono molte procedure consolidate di controllo di versione<\/strong> come il commit convenzionale<\/a>, il branching delle funzionalit\u00e0, lo squash e rebase<\/a> e l’integrazione continua<\/a>.<\/p>\n\n\n\n Queste tecniche, tuttavia, non sono sempre applicabili ai notebook Jupyter poich\u00e9, come affermato in precedenza, non sono semplici file di testo.<\/p>\n\n\n\n I data scientists devono effettuare molte combinazioni di set di dati, funzionalit\u00e0, tecniche di modellazione, algoritmi e configurazioni di parametri per trovare la soluzione che estrae al meglio il valore aziendale<\/strong>.<\/p>\n\n\n\n Il punto chiave \u00e8 trovare un sistema per tenere traccia di esperimenti riusciti<\/strong> e falliti<\/strong> mantenendo la riproducibilit\u00e0<\/strong> e la riutilizzabilit\u00e0<\/strong> del<\/strong> codice<\/strong>. Perseguire questo obiettivo significa disporre di strumenti che consentano rapidi rollback e un monitoraggio efficiente dei risultati, meglio se con strumenti visivi.<\/p>\n\n\n\n Testare un carico di lavoro di Machine Learning \u00e8 pi\u00f9 complesso<\/strong> rispetto al test di software tradizionali.<\/p>\n\n\n\n Il set di dati richiede una convalida continua<\/strong>. I modelli sviluppati dai data scientist richiedono una valutazione continua della qualit\u00e0<\/strong>, la convalida del training e controlli delle prestazioni<\/strong>.<\/p>\n\n\n\nPerch\u00e8 abbiamo bisogno del MLOps?<\/h1>\n\n\n\n
Codice<\/h3>\n\n\n\n
Sviluppo<\/h3>\n\n\n\n
Test<\/h3>\n\n\n\n