Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Enabling DevOps for Machine Learning with Azure Pipelines

Luca Milan
October 26, 2019

Enabling DevOps for Machine Learning with Azure Pipelines

Al giorno d'oggi il "Machine Learning" (ML) estende le capacità di tanti software in centinaia di campi applicativi, dalla medicina agli istituti finanziari. Creare modelli predittivi realistici richiede però uno sforzo, da parte di tante persone con differenti background: da una parte, infatti, ci sono i team di sviluppo (Developers / DevOps) e dall'altra i team di "Data Science".
Per questa ragione, la vera sfida che abbiamo di fronte oggi, consiste nel saper rilasciare gli "Artefatti di ML" in maniera automatizzata, riproducibile ed affidabile sfruttando tutte le pratiche DevOps.
In questo talk illustreremo, con l'ausilio di una demo realizzata con il framework ML.NET, i passi che portano alla creazione di pipelines ad "altissima automazione" in grado di gestire le più comuni operazioni di un progetto di ML: dal training alla distribuzione del modello di apprendimento ai diversi "Consumers".

Luca Milan

October 26, 2019
Tweet

More Decks by Luca Milan

Other Decks in Technology

Transcript

  1. 1 Enabling DevOps for Machine Learning with Azure Pipelines Luca

    Milan @fewbit [email protected] Alberto Dallagiacoma @albertodall [email protected] www.albertodallagiacoma.it
  2. #DOH19 3 About us • Luca Milan • Technical Manager

    @ Yoox Net-A-Porter Group • Automation Addicted <3 Code Junkie • Alberto Dallagiacoma • Software Architect R&D @ iSolutions (https://labs.isolutions.it) • Sviluppatore su .NET dalla versione 1.0 • TFS dalla versione 2010 (e ora Azure DevOps) • PowerShell and F# fan!
  3. #DOH19 4 Cosa vedrete oggi ? Come realizzare una strategia

    di «Continuous Deployment» per il rilascio di modelli ML applicando i principi DevOps ed Agile Luca & Alberto
  4. #DOH19 5 Agenda • Machine Learning • ML.NET Framework •

    CICD per Machine Learning • Azure DevOps Pipelines • Demo: Vediamo il codice in azione ☺
  5. #DOH19 9 Le peculiarità dei progetti di ML E' collegato

    alla "Scienza dei Dati", servono "Specialisti" con conoscenze matematiche e statistiche approfondite Possiede metodologie di sviluppo e strumenti dedicati non sempre allineati con gli approcci "DevOps" Gli step del ciclo di vita di un progetto di ML sono profondamente differenti da quelli del software tradizionale I modelli di ML vengono distribuiti come servizi a sé stanti (Black Box) e non sono "integrabili" nel codice delle applicazioni
  6. #DOH19 11 Definizione «Una macchina apprende con l'esperienza se la

    sua performance a svolgere un compito migliora nel corso del tempo dopo averlo svolto più volte» Tom Michael Mitchell Il comportamento dell’algoritmo non è pre-programmato, ma è «appreso» dai dati
  7. #DOH19 12 Machine Learning «End to End» Features Apprendimento Predizione

    Dati Raw Feature: rappresentazione numerica del dato di input re-training & performance feedback
  8. #DOH19 13 Come funziona la Classificazione ? Fase Apprendimento Fase

    Predizione INPUT o FEATURES LABEL «Eccitante e Stimolante», Sì «Deluso e annoiato», No TRAINING SET «Bravi, mi ispirate», ? ( ) = ì OUTPUT Modello (Features) = Label () Miglior algoritmo
  9. #DOH19 16 Come usare ML.NET ? Api & Tools API

    C# / F# (by code) CLI Auto-ML engine (by tool) UI VS Model Builder (by wizard)
  10. #DOH19 18 Cosa produce ML.NET ? Assets Model Serializzato su

    *.zip Algoritmo trainato in base al task Training Pipeline Codice C# per generare il modello Prediction Code Codice C# da includere nelle applicazioni finali
  11. 19 CD4ML “DevOps is a culture, a movement, a philosophy—A

    way to bring together the best of software development and IT operations”
  12. #DOH19 20 Continuous «Delivery» «Portare in produzione qualsiasi cambiamento del

    software in maniera rapida, sicura, affidabile e sostenibile» Infrastruttura Applicazione
  13. #DOH19 21 Continuous Delivery per «ML» Team cross-funzionali producono artefatti

    di ML tramite un processo automatizzato e riproducibile basato su cicli di sviluppo rapidi e incrementali
  14. #DOH19 22 Obiettivi Organizzativi Amalgamare persone con competenze differenti che

    lavorano con strumenti e processi distinti. Development Data Operations
  15. #DOH19 24 Ciclo di vita di un progetto di ML

    Analisi Apprendimento * Distribuzione * Training Pipelines Trained Models Training / Test Dataset Prediction
  16. #DOH19 25 Distribuzione del Modello • Modello come «allegato» Il

    modello è distribuito insieme all’applicazione ad esempio all’interno container docker. • Modello come «servizio» Il modello è distribuito come servizio e accessibile all’applicazione tramite chiamate REST o RPC. • Modello come «pacchetto» Il modello è distribuito in maniera indipendente e l’applicazione a runtime carica ed utilizza il modello.
  17. #DOH19 26 Approccio GIT-centrico (1) 1. Codice ✓ Applicazione ✓

    Training Pipeline ✓ CI/CD Pipelines ✓ Provisioning 2. Dati ✓ Dataset Training ✓ Dataset Test 3. Modelli ✓ Release ✓ Versioning (SemVer)
  18. #DOH19 27 Approccio GIT-centrico (2) Master Feature/Experiment Modifiche al Dataset

    (T/S) Cambio Algoritmo Tuning Algoritmo Debugging e Valutazione metriche Tests (Unit/Integration) Approvazione & Merge della PR Nuovo «Esperimento» Invio PULL-REQUEST
  19. #DOH19 28 Approccio GIT-centrico (3) Valori Metriche Commits Modello di

    ML Numero di Versione MAJOR.MINOR.PATCH-SHACOMMIT https://github.com/lucamilan/doh2019/releases/tag/0.1.1-644382c
  20. #DOH19 32 “Classic” Pipeline (Build + Release) YAML Build Pipeline

    Job Job Task Task Task Task Release Pipeline Stage Job Task Task Stage Job Task Task Job Task Task Job Job Task Task Task Task Build Pipeline Artifacts
  21. #DOH19 33 Introducing YAML Pipelines • Unificazione di Build e

    Release in un’unica pipeline • Attualmente in preview. • Fa parte del repository • Può evolvere insieme al codice. • Può essere composta da uno o più files .yml. • E’ possibile applicare alla pipeline le stesse branching policies del codice. • Anche una pipeline può essere soggetta a Pull Request. • Non e’ possibile convertire in formato YAML una pipeline esistente • Export dei singoli task + edit manuale. • Piccolo supporto da parte dell’editor visuale.
  22. #DOH19 34 YAML Pipeline Multi-Stage YAML Pipeline Stage Job Job

    Task Task Task Task Stage Job Task Task Stage Job Task Task Stage Job Task Task Job Task Task Job Task Task
  23. #DOH19 36 Azure Pipelines Tips And Tricks • Checkout del

    branch • Di default, ogni job esegue il checkout del branch. • Può impattare sui tempi di esecuzione in caso di codebase grandi. • checkout: none • Publish Pipeline Artifacts • Artefatti prodotti dalla fase di build disponibili ad altri job/stages della pipeline. • Don’t Repeat Yourself (DRY) • Dove possible, riutilizzare parti di pipeline tramite template. • Variabili • Definire i parametri «globali» della pipeline in un template a parte. • Singolo punto dove applicare modifiche. • Definire a livello di job le variabili utilizzate da uno specifico job.
  24. #DOH19 38 Organizzazione della Solution .NET Core Trainer Trainer Tests

    Trainer Tools Data Model Model Release Prediction Training Model Serving Model Building