Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Enabling DevOps for Machine Learning with Azure Pipelines Luca Milan @fewbit luca.milan@gmail.com Alberto Dallagiacoma @albertodall alberto@albertodallagiacoma.it www.albertodallagiacoma.it 1
Cosa vedrete oggi ? Come realizzare una strategia di «Continuous Deployment» per il rilascio di modelli ML applicando i principi DevOps ed Agile Luca & Alberto #DOH19 4
Agenda • Machine Learning • ML.NET Framework • CICD per Machine Learning • Azure DevOps Pipelines • Demo: Vediamo il codice in azione ☺ #DOH19 5
La Sfida Applicazioni (+) Intelligenti misura in scala “Big Data” di exabyte “Modelli di ML” #DOH19 7
Un’opportunità per tanti Community Microsoft “Production Ready for Everyone” #DOH19 8
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 #DOH19 9
Come Programmare l’Improgrammabile 10
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 #DOH19 11
Machine Learning «End to End» Dati Raw Features Apprendimento Predizione re-training & performance feedback Feature: rappresentazione numerica del dato di input #DOH19 12
Come funziona la Classificazione ? Fase Apprendimento Miglior algoritmo TRAINING SET «Eccitante e Stimolante», Sì INPUT o FEATURES LABEL ( ) «Deluso e annoiato», No Fase Predizione ( «Bravi, mi ispirate», ? ) = ì Modello (Features) = Label OUTPUT #DOH19 13
C# Machine Learning senza Python/R :) 14
Framework for .NET Standard Machine Learning Cross Open Platform Source 15
Come usare ML.NET ? Api & Tools API CLI UI C# / F# Auto-ML engine VS Model Builder (by code) (by tool) (by wizard) #DOH19 16
ML.NET Extensions https://www.nuget.org/profiles/MLNET #DOH19 17
Cosa produce ML.NET ? Assets Model Training Prediction Pipeline Code Serializzato su *.zip Codice C# per Codice C# da includere Algoritmo trainato in generare il modello nelle applicazioni base al task finali #DOH19 18
CD4ML “DevOps is a culture, a movement, a philosophy—A way to bring together the best of software development and IT operations” 19
Continuous «Delivery» «Portare in produzione qualsiasi cambiamento del software in maniera rapida, sicura, affidabile e sostenibile» Applicazione Infrastruttura #DOH19 20
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 #DOH19 21
Obiettivi Organizzativi Amalgamare persone con competenze differenti che lavorano con strumenti e processi distinti. Data Operations Development #DOH19 22
Ciclo di vita di un progetto di ML Analisi Apprendimento * Distribuzione * Prediction Training Pipelines Trained Models Training / Test Dataset #DOH19 24
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. #DOH19 25
Approccio GIT-centrico (1) 1. Codice ✓ Applicazione ✓ Training Pipeline ✓ CI/CD Pipelines ✓ Provisioning 2. Dati ✓ Dataset Training ✓ Dataset Test 3. Modelli ✓ Release ✓ Versioning (SemVer) #DOH19 26
Approccio GIT-centrico (2) Tuning Algoritmo Approvazione & Modifiche al Dataset (T/S) Merge della PR Debugging e Valutazione metriche Cambio Algoritmo Feature/Experiment Master Invio PULL-REQUEST Nuovo «Esperimento» Tests (Unit/Integration) #DOH19 27
Approccio GIT-centrico (3) Numero di Versione MAJOR.MINOR.PATCH-SHACOMMIT Valori Metriche Commits Modello di ML https://github.com/lucamilan/doh2019/releases/tag/0.1.1-644382c #DOH19 28
Azure DevOps Pipelines 29
“Classic” Pipeline (Build) Build Pipeline Job Task Task Task #DOH19 30
“Classic” Pipeline (Release) Stage Stage Stage Job Task Task Task #DOH19 31
“Classic” Pipeline (Build + Release) Build Pipeline Job Job Task Task Release Pipeline Task Task Job Job Job Artifacts Stage Stage Task Task Task YAML Build Pipeline Task Task Task Job Job Task Task Task Task #DOH19 32
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. #DOH19 33
YAML Pipeline Multi-Stage YAML Pipeline Job Job Job Job Stage Stage Task Task Task Task Task Task Task Task Stage Job Job Job Stage Task Task Task Task Task Task #DOH19 34
Abilitare le Multi-Stage Pipelines #DOH19 35
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. #DOH19 36
DEMO Show me the code! ☺ 37
Organizzazione della Solution .NET Core Model Data Serving Model Trainer Trainer Tests Model Building Model Release Prediction Trainer Tools Training #DOH19 38
THANK YOU! #DOH19
Puoi anche leggere