Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit

Pagina creata da Benedetta Giuliani
 
CONTINUA A LEGGERE
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
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
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
Organizer & sponsors

 GetLatestVersion.it

 #DOH19 2
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
About us

• Luca Milan
 • Technical Manager @ Yoox Net-A-Porter Group
 • Automation Addicted
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
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
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
Agenda

• Machine Learning

• ML.NET Framework

• CICD per Machine Learning

• Azure DevOps Pipelines

• Demo: Vediamo il codice in azione ☺

 #DOH19 5
Enabling DevOps for Machine Learning with Azure Pipelines - Luca Milan @fewbit
Introduzione

 6
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