Slides dell'evento DevOps Heroes 2019 a Parma.
Al giorno d'oggi il "Machine Learning" (ML) estende le capacità di tanti software in centinaia di campi applicativi, dalla medicina agli istituti finanziari. Creare modelli predittivi realistici richiede però uno sforzo, da parte di tante persone con differenti background: da una parte, infatti, ci sono i team di sviluppo (Developers / DevOps) e dall'altra i team di "Data Science".
Per questa ragione, la vera sfida che abbiamo di fronte oggi, consiste nel saper rilasciare gli "Artefatti di ML" in maniera automatizzata, riproducibile ed affidabile sfruttando tutte le pratiche DevOps.
In questo talk illustreremo, con l'ausilio di una demo realizzata con il framework ML.NET, i passi che portano alla creazione di pipelines ad "altissima automazione" in grado di gestire le più comuni operazioni di un progetto di ML: dal training alla distribuzione del modello di apprendimento ai diversi "Consumers".
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
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 ☺
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
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
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
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.
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.
37. #DOH19 38
Organizzazione della Solution .NET Core
Trainer
Trainer Tests
Trainer Tools
Data
Model
Model
Release Prediction
Training
Model
Serving
Model
Building