SlideShare a Scribd company logo
1 of 38
Download to read offline
1
Enabling DevOps for Machine Learning
with Azure Pipelines
Luca Milan
@fewbit
luca.milan@gmail.com
Alberto Dallagiacoma
@albertodall
alberto@albertodallagiacoma.it
www.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”
misurainscala
diexabyte
#DOH19 8
Un’opportunità per tanti
Community
Microsoft
“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
#DOH19
13
Come funziona la Classificazione ?
Fase Apprendimento
Fase Predizione
INPUT o FEATURES LABEL
«Eccitante e Stimolante», Sì
«Deluso e annoiato», No
TRAININGSET
«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
API
C# / F#
(by code)
CLI
Auto-ML engine
(by tool)
UI
VS 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 *.zip
Algoritmo trainato in
base al task
Training
Pipeline
Codice C# per
generare il modello
Prediction
Code
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 runtime
carica 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 Versione
MAJOR.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
Stage
Job
Task
Task
Stage
Job
Task
Task
Job
Task
Task
Job Job
Task
Task
Task
Task
Build Pipeline
Artifacts
#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
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
#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!

More Related Content

Similar to Enabling DevOps for Machine Learning with Azure Pipelines

MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsEmerasoft, solutions to collaborate
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Srl
 
50 minutes as a DevOps
50 minutes as a DevOps50 minutes as a DevOps
50 minutes as a DevOpsseeweb
 
Smau Milano 2016 - Seeweb, Marco Cristofanilli
Smau Milano 2016 - Seeweb, Marco CristofanilliSmau Milano 2016 - Seeweb, Marco Cristofanilli
Smau Milano 2016 - Seeweb, Marco CristofanilliSMAU
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functionsdotnetcode
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernosparkfabrik
 
Giornata aperta sul web 2017 - Workshop WordPress
Giornata aperta sul web 2017 - Workshop WordPressGiornata aperta sul web 2017 - Workshop WordPress
Giornata aperta sul web 2017 - Workshop WordPressMarco Milesi
 
Iefficiency 2-bernasconi ibm power strategy
Iefficiency 2-bernasconi ibm power strategyIefficiency 2-bernasconi ibm power strategy
Iefficiency 2-bernasconi ibm power strategyAndrea Colombetti
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseRed Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseKiratech
 
Modelli di business open source
Modelli di business open sourceModelli di business open source
Modelli di business open sourceAlex Pagnoni
 
Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Paradisi63
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 

Similar to Enabling DevOps for Machine Learning with Azure Pipelines (20)

MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio Devops
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009
 
50 minutes as a DevOps
50 minutes as a DevOps50 minutes as a DevOps
50 minutes as a DevOps
 
Smau Milano 2016 - Seeweb, Marco Cristofanilli
Smau Milano 2016 - Seeweb, Marco CristofanilliSmau Milano 2016 - Seeweb, Marco Cristofanilli
Smau Milano 2016 - Seeweb, Marco Cristofanilli
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
Containerized Liferay
Containerized LiferayContainerized Liferay
Containerized Liferay
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
 
Giornata aperta sul web 2017 - Workshop WordPress
Giornata aperta sul web 2017 - Workshop WordPressGiornata aperta sul web 2017 - Workshop WordPress
Giornata aperta sul web 2017 - Workshop WordPress
 
Iefficiency 2-bernasconi ibm power strategy
Iefficiency 2-bernasconi ibm power strategyIefficiency 2-bernasconi ibm power strategy
Iefficiency 2-bernasconi ibm power strategy
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native EnterpriseRed Hat OpenShift: l'abilitatore della Cloud Native Enterprise
Red Hat OpenShift: l'abilitatore della Cloud Native Enterprise
 
Tesi8
Tesi8Tesi8
Tesi8
 
Modelli di business open source
Modelli di business open sourceModelli di business open source
Modelli di business open source
 
Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014Flavio ATZENI - SMAU 2014
Flavio ATZENI - SMAU 2014
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 

More from Luca Milan

"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven ArchitectureLuca Milan
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for DevelopersLuca Milan
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.Luca Milan
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulLuca Milan
 
NHibernate Configuration Patterns
NHibernate Configuration PatternsNHibernate Configuration Patterns
NHibernate Configuration PatternsLuca Milan
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della SoluzioneLuca Milan
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignLuca Milan
 

More from Luca Milan (10)

"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
 
NHibernate Configuration Patterns
NHibernate Configuration PatternsNHibernate Configuration Patterns
NHibernate Configuration Patterns
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della Soluzione
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven Design
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 

Enabling DevOps for Machine Learning with Azure Pipelines

  • 1. 1 Enabling DevOps for Machine Learning with Azure Pipelines Luca Milan @fewbit luca.milan@gmail.com Alberto Dallagiacoma @albertodall alberto@albertodallagiacoma.it www.albertodallagiacoma.it
  • 2. #DOH19 2 Organizer & sponsors GetLatestVersion.it
  • 3. #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!
  • 4. #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
  • 5. #DOH19 5 Agenda • Machine Learning • ML.NET Framework • CICD per Machine Learning • Azure DevOps Pipelines • Demo: Vediamo il codice in azione ☺
  • 7. #DOH19 7 La Sfida Applicazioni (+) Intelligenti “Big Data” “Modelli di ML” misurainscala diexabyte
  • 8. #DOH19 8 Un’opportunità per tanti Community Microsoft “Production Ready for Everyone”
  • 9. #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
  • 11. #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
  • 12. #DOH19 12 Machine Learning «End to End» Features Apprendimento Predizione Dati Raw Feature: rappresentazione numerica del dato di input re-training & performance feedback
  • 13. #DOH19 13 Come funziona la Classificazione ? Fase Apprendimento Fase Predizione INPUT o FEATURES LABEL «Eccitante e Stimolante», Sì «Deluso e annoiato», No TRAININGSET «Bravi, mi ispirate», ?𝒇( ) = 𝑺ì OUTPUTModello (Features) = Label 𝒇(𝑥) Miglior algoritmo
  • 15. 15 Framework for Machine Learning .NET Standard Cross PlatformOpen Source
  • 16. #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)
  • 18. #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
  • 19. 19 CD4ML “DevOps is a culture, a movement, a philosophy—A way to bring together the best of software development and IT operations”
  • 20. #DOH19 20 Continuous «Delivery» «Portare in produzione qualsiasi cambiamento del software in maniera rapida, sicura, affidabile e sostenibile» InfrastrutturaApplicazione
  • 21. #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
  • 22. #DOH19 22 Obiettivi Organizzativi Amalgamare persone con competenze differenti che lavorano con strumenti e processi distinti. Development Data Operations
  • 23. #DOH19 24 Ciclo di vita di un progetto di ML Analisi Apprendimento * Distribuzione * Training Pipelines Trained Models Training / Test Dataset Prediction
  • 24. #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.
  • 25. #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)
  • 26. #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
  • 27. #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
  • 29. #DOH19 30 “Classic” Pipeline (Build) Build Pipeline Job Task Task Task
  • 30. #DOH19 31 “Classic” Pipeline (Release) StageStage Stage Job Task Task Task
  • 31. #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
  • 32. #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.
  • 33. #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
  • 34. #DOH19 35 Abilitare le Multi-Stage Pipelines
  • 35. #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.
  • 36. 37 DEMO Show me the code! ☺
  • 37. #DOH19 38 Organizzazione della Solution .NET Core Trainer Trainer Tests Trainer Tools Data Model Model Release Prediction Training Model Serving Model Building