enabling devops for machine learning with azure pipelines · •unificazione di build e release in...
TRANSCRIPT
1
Enabling DevOps for Machine Learningwith Azure Pipelines
Luca [email protected]@gmail.com
Alberto Dallagiacoma@albertodallalberto@albertodallagiacoma.itwww.albertodallagiacoma.it
#DOH19 2
Organizer & sponsors
GetLatestVersion.it
#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!
#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
#DOH19 5
Agenda
• Machine Learning
• ML.NET Framework
• CICD per Machine Learning
• Azure DevOps Pipelines
• Demo: Vediamo il codice in azione ☺
6
Introduzione
#DOH19 7
La Sfida
Applicazioni (+) Intelligenti
“Big Data”
“Modelli di ML”
mis
ura
in s
cala
di e
xabyte
#DOH19 8
Un’opportunità per tanti
CommunityMicrosoft
“Production Ready for Everyone”
#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
10
Come Programmare
l’Improgrammabile
#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
#DOH19 12
Machine Learning «End to End»
Features Apprendimento Predizione
Dati Raw
Feature: rappresentazione numerica del dato di input
re-training & performance
feedback
#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
14
C# Machine Learning
senza Python/R :)
15
Framework for
Machine Learning
.NET Standard
Cross
PlatformOpen
Source
#DOH19 16
Come usare ML.NET ?
Api & Tools
APIC# / F#
(by code)
CLIAuto-ML engine
(by tool)
UIVS Model Builder
(by wizard)
#DOH19 17
ML.NET Extensions
https://www.nuget.org/profiles/MLNET
#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
19
CD4ML“DevOps is a culture, a movement, a philosophy—A way
to bring together the best of software development and
IT operations”
#DOH19 20
Continuous «Delivery»
«Portare in produzione qualsiasi
cambiamento del software in maniera
rapida, sicura, affidabile e sostenibile»
InfrastrutturaApplicazione
#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
#DOH19 22
Obiettivi Organizzativi
Amalgamare persone con
competenze differenti che
lavorano con strumenti e
processi distinti.
Development
Data Operations
#DOH19 24
Ciclo di vita di un progetto di ML
Analisi Apprendimento * Distribuzione *
Training
Pipelines Trained
Models
Training / Test
Dataset
Prediction
#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.
#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)
#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
#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
29
Azure DevOps
Pipelines
#DOH19 30
“Classic” Pipeline (Build)
Build Pipeline
Job
Task
Task
Task
#DOH19 31
“Classic” Pipeline (Release)
StageStage
Stage
Job
Task
Task
Task
#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
#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.
#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
#DOH19 35
Abilitare le Multi-Stage Pipelines
#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.
37
DEMO
Show me the code! ☺
#DOH19 38
Organizzazione della Solution .NET Core
Trainer
Trainer Tests
Trainer Tools
Data
Model
Model
Release Prediction
Training
Model
Serving
Model
Building
#DOH19
THANK YOU!