enabling devops for machine learning with azure pipelines · •unificazione di build e release in...
TRANSCRIPT
![Page 1: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/1.jpg)
1
Enabling DevOps for Machine Learningwith Azure Pipelines
Luca [email protected]@gmail.com
Alberto Dallagiacoma@albertodallalberto@albertodallagiacoma.itwww.albertodallagiacoma.it
![Page 2: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/2.jpg)
#DOH19 2
Organizer & sponsors
GetLatestVersion.it
![Page 3: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/3.jpg)
#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!
![Page 4: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/4.jpg)
#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
![Page 5: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/5.jpg)
#DOH19 5
Agenda
• Machine Learning
• ML.NET Framework
• CICD per Machine Learning
• Azure DevOps Pipelines
• Demo: Vediamo il codice in azione ☺
![Page 6: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/6.jpg)
6
Introduzione
![Page 7: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/7.jpg)
#DOH19 7
La Sfida
Applicazioni (+) Intelligenti
“Big Data”
“Modelli di ML”
mis
ura
in s
cala
di e
xabyte
![Page 8: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/8.jpg)
#DOH19 8
Un’opportunità per tanti
CommunityMicrosoft
“Production Ready for Everyone”
![Page 9: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/9.jpg)
#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
![Page 10: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/10.jpg)
10
Come Programmare
l’Improgrammabile
![Page 11: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/11.jpg)
#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
![Page 12: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/12.jpg)
#DOH19 12
Machine Learning «End to End»
Features Apprendimento Predizione
Dati Raw
Feature: rappresentazione numerica del dato di input
re-training & performance
feedback
![Page 13: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/13.jpg)
#DOH1913
Come funziona la Classificazione ?
Fase Apprendimento
Fase Predizione
INPUT o FEATURES LABEL
«Eccitante e Stimolante», Sì
«Deluso e annoiato», No
TR
AIN
ING
SET
«Bravi, mi ispirate», ?𝒇( ) = 𝑺ìOUTPUTModello (Features) = Label
𝒇(𝑥)Miglior algoritmo
![Page 14: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/14.jpg)
14
C# Machine Learning
senza Python/R :)
![Page 15: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/15.jpg)
15
Framework for
Machine Learning
.NET Standard
Cross
PlatformOpen
Source
![Page 16: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/16.jpg)
#DOH19 16
Come usare ML.NET ?
Api & Tools
APIC# / F#
(by code)
CLIAuto-ML engine
(by tool)
UIVS Model Builder
(by wizard)
![Page 17: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/17.jpg)
#DOH19 17
ML.NET Extensions
https://www.nuget.org/profiles/MLNET
![Page 18: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/18.jpg)
#DOH19 18
Cosa produce ML.NET ?
Assets
Model
Serializzato su *.zipAlgoritmo trainato in
base al task
Training PipelineCodice C# per
generare il modello
PredictionCode
Codice C# da includere nelle applicazioni
finali
![Page 19: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/19.jpg)
19
CD4ML“DevOps is a culture, a movement, a philosophy—A way
to bring together the best of software development and
IT operations”
![Page 20: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/20.jpg)
#DOH19 20
Continuous «Delivery»
«Portare in produzione qualsiasi
cambiamento del software in maniera
rapida, sicura, affidabile e sostenibile»
InfrastrutturaApplicazione
![Page 21: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/21.jpg)
#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
![Page 22: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/22.jpg)
#DOH19 22
Obiettivi Organizzativi
Amalgamare persone con
competenze differenti che
lavorano con strumenti e
processi distinti.
Development
Data Operations
![Page 23: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/23.jpg)
#DOH19 24
Ciclo di vita di un progetto di ML
Analisi Apprendimento * Distribuzione *
Training
Pipelines Trained
Models
Training / Test
Dataset
Prediction
![Page 24: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/24.jpg)
#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 runtimecarica ed utilizza il modello.
![Page 25: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/25.jpg)
#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)
![Page 26: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/26.jpg)
#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
![Page 27: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/27.jpg)
#DOH19 28
Approccio GIT-centrico (3)
Valori Metriche
Commits
Modello di ML
Numero di VersioneMAJOR.MINOR.PATCH-SHACOMMIT
https://github.com/lucamilan/doh2019/releases/tag/0.1.1-644382c
![Page 28: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/28.jpg)
29
Azure DevOps
Pipelines
![Page 29: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/29.jpg)
#DOH19 30
“Classic” Pipeline (Build)
Build Pipeline
Job
Task
Task
Task
![Page 30: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/30.jpg)
#DOH19 31
“Classic” Pipeline (Release)
StageStage
Stage
Job
Task
Task
Task
![Page 31: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/31.jpg)
#DOH19 32
“Classic” Pipeline (Build + Release)
YAML Build Pipeline
Job Job
Task
Task
Task
Task
Release Pipeline
Sta
ge
Job
Task
Task
Sta
ge
Job
Task
Task
Job
Task
Task
Job Job
Task
Task
Task
Task
Build Pipeline
Art
ifacts
![Page 32: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/32.jpg)
#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.
![Page 33: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/33.jpg)
#DOH19 34
YAML Pipeline
Multi-Stage YAML Pipeline
Sta
ge
Job Job
Task
Task
Task
Task
Sta
ge
Job
Task
Task
Sta
ge
Job
Task
Task
Sta
ge
Job
Task
Task
Job
Task
Task
Job
Task
Task
![Page 34: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/34.jpg)
#DOH19 35
Abilitare le Multi-Stage Pipelines
![Page 35: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/35.jpg)
#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.
![Page 36: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/36.jpg)
37
DEMO
Show me the code! ☺
![Page 37: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/37.jpg)
#DOH19 38
Organizzazione della Solution .NET Core
Trainer
Trainer Tests
Trainer Tools
Data
Model
Model
Release Prediction
Training
Model
Serving
Model
Building
![Page 38: Enabling DevOps for Machine Learning with Azure Pipelines · •Unificazione di Build e Release in un’unicapipeline •Attualmente in preview. •Fa parte del repository •Può](https://reader034.vdocuments.us/reader034/viewer/2022042307/5ed2cc6e9c95614861233083/html5/thumbnails/38.jpg)
#DOH19
THANK YOU!