Slide 1

Slide 1 text

1 Enabling DevOps for Machine Learning with Azure Pipelines Luca Milan @fewbit [email protected] Alberto Dallagiacoma @albertodall [email protected] www.albertodallagiacoma.it

Slide 2

Slide 2 text

#DOH19 2 Organizer & sponsors GetLatestVersion.it

Slide 3

Slide 3 text

#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!

Slide 4

Slide 4 text

#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

Slide 5

Slide 5 text

#DOH19 5 Agenda • Machine Learning • ML.NET Framework • CICD per Machine Learning • Azure DevOps Pipelines • Demo: Vediamo il codice in azione ☺

Slide 6

Slide 6 text

6 Introduzione

Slide 7

Slide 7 text

#DOH19 7 La Sfida Applicazioni (+) Intelligenti “Big Data” “Modelli di ML” misura in scala di exabyte

Slide 8

Slide 8 text

#DOH19 8 Un’opportunità per tanti Community Microsoft “Production Ready for Everyone”

Slide 9

Slide 9 text

#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

Slide 10

Slide 10 text

10 Come Programmare l’Improgrammabile

Slide 11

Slide 11 text

#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

Slide 12

Slide 12 text

#DOH19 12 Machine Learning «End to End» Features Apprendimento Predizione Dati Raw Feature: rappresentazione numerica del dato di input re-training & performance feedback

Slide 13

Slide 13 text

#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

Slide 14

Slide 14 text

14 C# Machine Learning senza Python/R :)

Slide 15

Slide 15 text

15 Framework for Machine Learning .NET Standard Cross Platform Open Source

Slide 16

Slide 16 text

#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)

Slide 17

Slide 17 text

#DOH19 17 ML.NET Extensions https://www.nuget.org/profiles/MLNET

Slide 18

Slide 18 text

#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

Slide 19

Slide 19 text

19 CD4ML “DevOps is a culture, a movement, a philosophy—A way to bring together the best of software development and IT operations”

Slide 20

Slide 20 text

#DOH19 20 Continuous «Delivery» «Portare in produzione qualsiasi cambiamento del software in maniera rapida, sicura, affidabile e sostenibile» Infrastruttura Applicazione

Slide 21

Slide 21 text

#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

Slide 22

Slide 22 text

#DOH19 22 Obiettivi Organizzativi Amalgamare persone con competenze differenti che lavorano con strumenti e processi distinti. Development Data Operations

Slide 23

Slide 23 text

#DOH19 24 Ciclo di vita di un progetto di ML Analisi Apprendimento * Distribuzione * Training Pipelines Trained Models Training / Test Dataset Prediction

Slide 24

Slide 24 text

#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.

Slide 25

Slide 25 text

#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)

Slide 26

Slide 26 text

#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

Slide 27

Slide 27 text

#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

Slide 28

Slide 28 text

29 Azure DevOps Pipelines

Slide 29

Slide 29 text

#DOH19 30 “Classic” Pipeline (Build) Build Pipeline Job Task Task Task

Slide 30

Slide 30 text

#DOH19 31 “Classic” Pipeline (Release) Stage Stage Stage Job Task Task Task

Slide 31

Slide 31 text

#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

Slide 32

Slide 32 text

#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.

Slide 33

Slide 33 text

#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

Slide 34

Slide 34 text

#DOH19 35 Abilitare le Multi-Stage Pipelines

Slide 35

Slide 35 text

#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.

Slide 36

Slide 36 text

37 DEMO Show me the code! ☺

Slide 37

Slide 37 text

#DOH19 38 Organizzazione della Solution .NET Core Trainer Trainer Tests Trainer Tools Data Model Model Release Prediction Training Model Serving Model Building

Slide 38

Slide 38 text

#DOH19 THANK YOU!