SlideShare a Scribd company logo
18 Febbraio 2021
Machine Learning Models
Continuous Deployment
On Azure Using DevOps
approaches
Luca Milan & Igor Antonacci
Agenda
 Introduzione al Machine Learning – (Luca)
 ML.NET Framework – (Luca)
 Pratiche DevOps & ML Operations – (Igor)
 Tools (Github Actions, Pulumi) – (Igor)
 Demo Time – (Luca, Igor)
 Question Time – (Tutti Insieme)
Continuous Delivery per ML
IT Staff Customer
Top 15 Emerging Jobs U.S.
(by Linkedin)
 #1 Artificial Intelligence Specialist +74%
Skills required: Machine Learning, Deep Learning, TensorFlow, Python, Natural Language Processing
 #2 Robotics Engineer +40%
Skills required: Robotic Process Automation, UiPath, Blue Prism, Automation Anywhere, Robotics
 #3 Data Scientist +37%
Skills required: Machine Learning, Data Science, Python, R, Apache Spark
 #5 Site Reliability Engineer +34%
Amazon Web Services, Ansible, Kubernetes, Docker Products, Terraform
 … Full Stack, JavaScript, Backend Developer, Cybersecurity specialist, etc…
Perché il ML è così
popolare oggi?
Business Case
Modelli e Teorie
Matematiche a supporto
Dati
Potenza di
Calcolo
Peculiarità del Machine Learning
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 moderni di Software Development
Il ciclo di vita di un progetto di ML è differente da quello di un «software
tradizionale»
Generalmente i modelli di ML sono distribuiti come «Black Box» e non
"integrabili" nel codice e nel processo che esegue l’applicazione
Artificial Intelligence
Machine Learning
Deep Learning
AI
Machine
Learning
Deep
Learning
Il ciclo di vita di un progetto ML
Training Prediction
Model Evaluation
Re-Training
Data
Tipologie del Machine Learning
Machine
Learning
Supervised
(labelled)
Regression Classification
Unsupervised
(no labels)
Anomaly
Detection
Clustering
Analysis
y = f(x1,x2,x3,x4,….)
FEATURES
LABEL
Feature = rappresentazione numerica
di una proprietà individuale e
misurabile del dataset
Tecniche del Machine Learning
Fare Machine Learning senza Python
 Nasce da un progetto di Microsoft Research (10 anni fa)
 La prima versione è del Maggio 2018, oggi siamo alla 1.5.4
 E’ scritto in C# e alcune parti in C++
 Open Source, supportato da Microsoft e dalla Community
 Basato su .NET Standard (Mac / Linux / Windows)
 API flessibile (approccio «low code» e tradizionale)
 Supporta il Deep Learning (Transfer Learning / ONNX)
Usare ML.NET
Regole di Ingaggio
API CLI Model Builder
Codificare la pipeline
(basta referenziare il pacchetto nuget e si
può iniziare a codificare la pipeline di
training, fare il training, la predizione,
etc.)
Auto-ML Engine
(strumento da linea di comando per il
“discovery” dei modelli più performanti
partendo dal datase di input e altri
parametri come output abbiamo il
modello trainato e il codice pe usarlo)
low code
(da visual studio in maniera guidata si
procede all’importazione del dataset e
alla scelta dell’algoritmo poi la procedura
produce il codice necessario ad usare il
modello)
Outputs
Training Pipeline Model Prediction Code
Codice C# che rappresenta le fasi di Build
e Training da effettuare su un dataset per
risolvere il task oggetto dell’analisi.
In formato binario è l’artefatto prodotto
della training pipeline. Rappresenta la
descrizione analitica dell’algoritmo
traninato.
Codice C# utilizzato per la fase di
predizione, deve essere incluso nelle
applicazioni finali.
Raccolta
(Load & Transform)
Model Improvement
(Evaluate)
Featuring & Learning
(Append)
Model Training
(Fit)
Salvataggio
(Save)
Caricamento Modello
(Load)
Make Prediction
(PredictionEngine)
SERVING
webapi, webapp, iot, desktop
BULD & TRAINING
Trasformer
Trasformer
DataView
Estimator
Trasformer
Training del Modello
Training del Modello - Test
“Serving” del Modello
”Serving” del Modello – Prediction
”Serving” del Modello – Metriche
“Serving” del Modello – Test
Pulumi & IaC
Igor Antonacci
Obiettivo
organizzativo
All’interno di un Team di sviluppo,
facilitare il dispiegamento di Modelli di IA
attraverso:
• la COOPERAZIONE tra Data Scientists
e IT Operations
• L’AUTOMAZIONE del processo di
Analisi, Sviluppo, Test e rilascio di un
modello
DevOps e MLOps
DevOps
“DevOps (dalla contrazione inglese di development,
"sviluppo", e operations, qui simile a "messa in
produzione" o "deployment") è un metodologia di
sviluppo del software che punta alla
comunicazione, collaborazione e integrazione
tra sviluppatori e addetti alle operations della
information technology (IT). DevOps vuole
rispondere all'interdipendenza tra sviluppo software
e IT operations, puntando ad aiutare
un'organizzazione a sviluppare in modo più rapido
ed efficiente prodotti e servizi software.”
(cit. DevOps - Wikipedia)
DevOps e MLOps
MLOps
“With Machine Learning Model
Operationalization Management (MLOps),
we want to provide an end-to-end machine
learning development process to design,
build and manage reproducible,
testable, and evolvable ML-powered
software.” (cit. ML Ops: Machine Learning
Operations (ml-ops.org))
Continuous Integration /
Continuous Delivery
Continuous Integration:
 Integrazione dei cambiamenti (al codice)
con la baseline esistente
 Build
 Test (Unit, Integration, Security … )
Continuous Delivery:
• Produzione di Artefatti (ML)
POTENZIALMENTE rilasciabili in
produzione in maniera
• Sicura
• Riproducibile
• Affidabile
• Rapida
COMMIT
FEEDBACK – GREEN / RED
COMMIT
 Build
 Test
 Training
 Build
 Test
 Training
The Last Mile - Deploy
 Deploy  portare il valore all’utente attraverso il dispiegamento
degli artefatti sull’infrastruttura
 Riprodicibile
 Automatico
 Idempotente
COMMIT
R
E
L
E
A
S
E
SETUP INFRA
Automatic (Approved) Deploy
“Old” Deploy approach
 Model
(Code)
 Test
 Dataset
 Build
 Test
 Training
 Trained Model
 Dataset
Release 0.1.0-3e82c10
Infrastructure-As-Code
«Infrastructure as code è il processo di gestione e provisioning dei data
center dei computer attraverso file di definizione leggibili dalla macchina,
piuttosto che configurazione hardware fisica o strumenti di
configurazione interattiva»
 Hashicorp Terraform
 Pulumi
SETUP INFRA
PUSH PULL
IaC CI / CD Pipeline
Ciclo di vita di un progetto di ML
Training
Pipelines T
rained
Models
Training / Test
Dataset
Azure
Resources
33
validation
Model Created
Training Pipeline GitHub Release Prediction Pipeline
 Trained Model
 Dataset
Release 0.1.0-3e82c10
Tools – GitHub Actions
 on push
 on pull-request
 …
Job #1 Job #2
Action 1 – Setup .NET Core
Action 2 – Build project
Action 3 – Test project
Action N – …
Action 1 – GitVersion
Action 2 – Create Release
Action 3 – Publish Artifacts
Action N – …
Tools – GitHub Actions
 on push
 on pull-request
 …
Job #1 Job #2
Action 1 – Setup .NET Core
Action 2 – Build project
Action 3 – Test project
Action N – …
Action 1 – GitVersion
Action 2 – Create Release
Action 3 – Publish Artifacts
Action N – …
Depends on
Environment
Tools – GitHub Actions - Environments
 Definiti staticamente all’interno di ogni repo GH
 Definisce una FASE del processo di sviluppo
 Development
 QA
 Production
 Scoped resources
 Protection Rules – Workflow di approvazione
 Branch (è possibile limitare l’uso di un “Environment” a specifici branch)
 Secrets – variabili criptate con validità limitata al singolo Environment
Tools – GitHub Actions - Environments
Ciclo di vita di un progetto di ML –
Training Pipeline in dettaglio – 1
COMMIT
 Model
(Code)
 Test
 Dataset
 Build
 Test
 Training
 Trained Model
 Dataset
Pull-request
 Review
 Approve
 Merge
Dispatch Message
 event_type: model-created
 message: |
{
"ML_MODEL_VERSION": vX.Y.Z-xxxx,
"ML_MODEL_URI":
https://github.com/igoran/.../${{
env.VERSION_NAME }}.zip
}
Approvazione
Promozione
 Review
 Approve
Serving “Environment”
Ciclo di vita di un progetto di ML –
Serving Pipeline in dettaglio
SETUP INFRA
 Build
 Test
Azure
Resources
model-created
 Trained Model
 Dataset
Download Model
Tools – Pulumi – 1
 Infrastructure-as-Code Framework
 Multi-Platform Providers (AWS, Azure, GCP … )
 (Multi-)Language oriented
 C#, Python, Go …
 CLI ed Engine multi piattaforma (pulumi)
 NO YAML 
 Ambienti “sandboxed” Stacks
Tools – Pulumi – 2
 Pulumi Service Backend (Pulumi Servers)
 Self-Managed Service Backend (Pulumi Enterprise)
 Language-Agnostic
 Multi-Cloud Resource Provider
 Multi-platform Engine
 Multi-Platform CLI
 Windows
 Linux
 MacOSX
Tools – Pulumi – State & Stacks
Pulumi State
 metadata dell’Infrastruttura
 Memorizzata in “Backend services”
Pulumi Stack(s)
• Istanza isolata, configurata in maniera indipendente di
un programma Pulumi
• Utilizzata, principalmente, per separare le risorse delle
diverse fasi di sviluppo (Dev, QA, Prod … ) o di diverse
feature
DEMO
Domande e
Risposte

More Related Content

Similar to Machine learning models continuous deployment on azure using devops

Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Codemotion
 
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Codemotion
 
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Federico Feroldi
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 mlMarco Zamana
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkAndrea Valentini
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Andrea Carratta
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017Giulio Vian
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
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
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Gestione corsi con TYPO3
Gestione corsi con TYPO3Gestione corsi con TYPO3
Gestione corsi con TYPO3Ivano Luberti
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?fcrippa
 

Similar to Machine learning models continuous deployment on azure using devops (20)

Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...
 
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...
 
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdk
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017
 
Owasp parte1-rel1.1
Owasp parte1-rel1.1Owasp parte1-rel1.1
Owasp parte1-rel1.1
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Gestione corsi con TYPO3
Gestione corsi con TYPO3Gestione corsi con TYPO3
Gestione corsi con TYPO3
 
Ibm bluemix r pozzi
Ibm bluemix r pozziIbm bluemix r pozzi
Ibm bluemix r pozzi
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
 

Machine learning models continuous deployment on azure using devops

  • 2. Machine Learning Models Continuous Deployment On Azure Using DevOps approaches Luca Milan & Igor Antonacci
  • 3. Agenda  Introduzione al Machine Learning – (Luca)  ML.NET Framework – (Luca)  Pratiche DevOps & ML Operations – (Igor)  Tools (Github Actions, Pulumi) – (Igor)  Demo Time – (Luca, Igor)  Question Time – (Tutti Insieme)
  • 4. Continuous Delivery per ML IT Staff Customer
  • 5. Top 15 Emerging Jobs U.S. (by Linkedin)  #1 Artificial Intelligence Specialist +74% Skills required: Machine Learning, Deep Learning, TensorFlow, Python, Natural Language Processing  #2 Robotics Engineer +40% Skills required: Robotic Process Automation, UiPath, Blue Prism, Automation Anywhere, Robotics  #3 Data Scientist +37% Skills required: Machine Learning, Data Science, Python, R, Apache Spark  #5 Site Reliability Engineer +34% Amazon Web Services, Ansible, Kubernetes, Docker Products, Terraform  … Full Stack, JavaScript, Backend Developer, Cybersecurity specialist, etc…
  • 6. Perché il ML è così popolare oggi? Business Case Modelli e Teorie Matematiche a supporto Dati Potenza di Calcolo
  • 7. Peculiarità del Machine Learning 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 moderni di Software Development Il ciclo di vita di un progetto di ML è differente da quello di un «software tradizionale» Generalmente i modelli di ML sono distribuiti come «Black Box» e non "integrabili" nel codice e nel processo che esegue l’applicazione
  • 8. Artificial Intelligence Machine Learning Deep Learning AI Machine Learning Deep Learning
  • 9. Il ciclo di vita di un progetto ML Training Prediction Model Evaluation Re-Training Data
  • 10. Tipologie del Machine Learning Machine Learning Supervised (labelled) Regression Classification Unsupervised (no labels) Anomaly Detection Clustering Analysis
  • 11. y = f(x1,x2,x3,x4,….) FEATURES LABEL Feature = rappresentazione numerica di una proprietà individuale e misurabile del dataset
  • 13. Fare Machine Learning senza Python  Nasce da un progetto di Microsoft Research (10 anni fa)  La prima versione è del Maggio 2018, oggi siamo alla 1.5.4  E’ scritto in C# e alcune parti in C++  Open Source, supportato da Microsoft e dalla Community  Basato su .NET Standard (Mac / Linux / Windows)  API flessibile (approccio «low code» e tradizionale)  Supporta il Deep Learning (Transfer Learning / ONNX)
  • 14.
  • 15. Usare ML.NET Regole di Ingaggio API CLI Model Builder Codificare la pipeline (basta referenziare il pacchetto nuget e si può iniziare a codificare la pipeline di training, fare il training, la predizione, etc.) Auto-ML Engine (strumento da linea di comando per il “discovery” dei modelli più performanti partendo dal datase di input e altri parametri come output abbiamo il modello trainato e il codice pe usarlo) low code (da visual studio in maniera guidata si procede all’importazione del dataset e alla scelta dell’algoritmo poi la procedura produce il codice necessario ad usare il modello) Outputs Training Pipeline Model Prediction Code Codice C# che rappresenta le fasi di Build e Training da effettuare su un dataset per risolvere il task oggetto dell’analisi. In formato binario è l’artefatto prodotto della training pipeline. Rappresenta la descrizione analitica dell’algoritmo traninato. Codice C# utilizzato per la fase di predizione, deve essere incluso nelle applicazioni finali.
  • 16. Raccolta (Load & Transform) Model Improvement (Evaluate) Featuring & Learning (Append) Model Training (Fit) Salvataggio (Save) Caricamento Modello (Load) Make Prediction (PredictionEngine) SERVING webapi, webapp, iot, desktop BULD & TRAINING Trasformer Trasformer DataView Estimator Trasformer
  • 20. ”Serving” del Modello – Prediction
  • 25. Obiettivo organizzativo All’interno di un Team di sviluppo, facilitare il dispiegamento di Modelli di IA attraverso: • la COOPERAZIONE tra Data Scientists e IT Operations • L’AUTOMAZIONE del processo di Analisi, Sviluppo, Test e rilascio di un modello
  • 26. DevOps e MLOps DevOps “DevOps (dalla contrazione inglese di development, "sviluppo", e operations, qui simile a "messa in produzione" o "deployment") è un metodologia di sviluppo del software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations della information technology (IT). DevOps vuole rispondere all'interdipendenza tra sviluppo software e IT operations, puntando ad aiutare un'organizzazione a sviluppare in modo più rapido ed efficiente prodotti e servizi software.” (cit. DevOps - Wikipedia)
  • 27. DevOps e MLOps MLOps “With Machine Learning Model Operationalization Management (MLOps), we want to provide an end-to-end machine learning development process to design, build and manage reproducible, testable, and evolvable ML-powered software.” (cit. ML Ops: Machine Learning Operations (ml-ops.org))
  • 28. Continuous Integration / Continuous Delivery Continuous Integration:  Integrazione dei cambiamenti (al codice) con la baseline esistente  Build  Test (Unit, Integration, Security … ) Continuous Delivery: • Produzione di Artefatti (ML) POTENZIALMENTE rilasciabili in produzione in maniera • Sicura • Riproducibile • Affidabile • Rapida COMMIT FEEDBACK – GREEN / RED COMMIT  Build  Test  Training  Build  Test  Training
  • 29. The Last Mile - Deploy  Deploy  portare il valore all’utente attraverso il dispiegamento degli artefatti sull’infrastruttura  Riprodicibile  Automatico  Idempotente COMMIT R E L E A S E SETUP INFRA Automatic (Approved) Deploy “Old” Deploy approach  Model (Code)  Test  Dataset  Build  Test  Training  Trained Model  Dataset Release 0.1.0-3e82c10
  • 30. Infrastructure-As-Code «Infrastructure as code è il processo di gestione e provisioning dei data center dei computer attraverso file di definizione leggibili dalla macchina, piuttosto che configurazione hardware fisica o strumenti di configurazione interattiva»  Hashicorp Terraform  Pulumi SETUP INFRA PUSH PULL IaC CI / CD Pipeline
  • 31. Ciclo di vita di un progetto di ML Training Pipelines T rained Models Training / Test Dataset Azure Resources 33 validation Model Created Training Pipeline GitHub Release Prediction Pipeline  Trained Model  Dataset Release 0.1.0-3e82c10
  • 32. Tools – GitHub Actions  on push  on pull-request  … Job #1 Job #2 Action 1 – Setup .NET Core Action 2 – Build project Action 3 – Test project Action N – … Action 1 – GitVersion Action 2 – Create Release Action 3 – Publish Artifacts Action N – …
  • 33. Tools – GitHub Actions  on push  on pull-request  … Job #1 Job #2 Action 1 – Setup .NET Core Action 2 – Build project Action 3 – Test project Action N – … Action 1 – GitVersion Action 2 – Create Release Action 3 – Publish Artifacts Action N – … Depends on Environment
  • 34. Tools – GitHub Actions - Environments  Definiti staticamente all’interno di ogni repo GH  Definisce una FASE del processo di sviluppo  Development  QA  Production  Scoped resources  Protection Rules – Workflow di approvazione  Branch (è possibile limitare l’uso di un “Environment” a specifici branch)  Secrets – variabili criptate con validità limitata al singolo Environment
  • 35. Tools – GitHub Actions - Environments
  • 36. Ciclo di vita di un progetto di ML – Training Pipeline in dettaglio – 1 COMMIT  Model (Code)  Test  Dataset  Build  Test  Training  Trained Model  Dataset Pull-request  Review  Approve  Merge Dispatch Message  event_type: model-created  message: | { "ML_MODEL_VERSION": vX.Y.Z-xxxx, "ML_MODEL_URI": https://github.com/igoran/.../${{ env.VERSION_NAME }}.zip } Approvazione Promozione  Review  Approve Serving “Environment”
  • 37. Ciclo di vita di un progetto di ML – Serving Pipeline in dettaglio SETUP INFRA  Build  Test Azure Resources model-created  Trained Model  Dataset Download Model
  • 38. Tools – Pulumi – 1  Infrastructure-as-Code Framework  Multi-Platform Providers (AWS, Azure, GCP … )  (Multi-)Language oriented  C#, Python, Go …  CLI ed Engine multi piattaforma (pulumi)  NO YAML   Ambienti “sandboxed” Stacks
  • 39. Tools – Pulumi – 2  Pulumi Service Backend (Pulumi Servers)  Self-Managed Service Backend (Pulumi Enterprise)  Language-Agnostic  Multi-Cloud Resource Provider  Multi-platform Engine  Multi-Platform CLI  Windows  Linux  MacOSX
  • 40. Tools – Pulumi – State & Stacks Pulumi State  metadata dell’Infrastruttura  Memorizzata in “Backend services” Pulumi Stack(s) • Istanza isolata, configurata in maniera indipendente di un programma Pulumi • Utilizzata, principalmente, per separare le risorse delle diverse fasi di sviluppo (Dev, QA, Prod … ) o di diverse feature
  • 41. DEMO

Editor's Notes

  1. Sottolineare l’importanza del feedback loop
  2. Nel ML le cose si complicano perché dobbiamo tenere conto di altri fattori per poter gestire in maniera appropriata il processo di CICD: Dati (Volumi e Gestione dello schema e dei suoi cambiamenti) Modello (Algoritmo) Codice (Come prima) Versioning del modello: Chi l’ha creato ? Qual è la versione più aggiornata ? Che performance possiede una specifica versione ? Tracciare le dipendenze tra: Modello (schema) e dati usati per il training Codice di training e Modello trainato Persone ? Verificare il modello tramite test Unit Integration
  3. Contesto attuale. Il mondo del lavoro chiede nuovi profili legati all’intelligenza artificale e la penetrazione nei vari settori industriali è pressochè ubiquitaria.
  4. Applicazioni più intelligenti Sono passati circa 60 anni da quando Alan Turing propose al mondo l’idea di una macchina in grado di apprendere e diventare «intelligente» nel modo in cui noi umani percepiamo l’intelligenza. Ma solo oggi, a discapito di fiction e romanzi, cominciamo a sentire reale l’idea di realizzare «applicazioni più intelligenti». Questo sentimento come sviluppatori ed esperti del settore software possiamo toccarlo con mano perché ad ogni conferenza o meetup tecnico a cui partecipiamo cominciamo a trovare talk su AI, ML o DL. Dati > 10^18 byte = exabyte (milione di terabyte / trilione di byte) Ad oggi abbiamo una mole di dati immensa a cui attingere a cui fino ad ora solo le Big hanno potuto attingere in modo produttivo. Le piccole e medie imprese non hanno ancora budget e conoscenze adatte a sfruttarle. Esiste la tecnologia ma non è ancora alla portato di tutti. Il ML ci fornisce un primo modo per caso d’uso concreto per cominciare a sfruttare questi dati. Machine Learning (Data Mining Predittivo) Se pensiamo al ML possiamo osservare che abbiamo Conoscenza (+50 anni di teorie matematiche e statistiche che lo supportano), Dati e Tecnologie/Strumenti (Cloud) ora quello che rimane da fare è trovare casi d’uso dove utilizzarlo.
  5. 1 > Sfida organizzativa, c’è necessità di creare team cross-funzionali e multi-disciplinari, facendo coesistere skills e persone tra loro distanti. 2 > Sfida tecnica, incanalare il ciclo di vita di un progetto di machine learning verso le pratiche Agili e DevOps tradizionali (Pair Programming, Code Review, PR, pattern di release con A/B, Canary, Feature-Toggling, ecc.) 3 > Dati, Modello, Codice vs Codice e basta 4 > La distribuzione dei modelli di ML (binding e chiamate RPC)
  6. Un ramo della scienza che studia la possibilità di evolvere le macchine a tal punto da riuscire a svolgere, in completa autonomia, compiti che fino ad oggi erano assegnati agli essere umani (guida autonoma, possibilità di riconoscere oggetti o voce, fare diagnosi di problemi medici, etc.). E’ un subset dell’AI ed Usa approcci statistici per migliorare la capacità di apprendimento di algoritmo. Usa dataset di dimensioni ridotte, limitata potenza di calcolo e necessita una fase di feature engineering. Fa parte del ML e Usa dataset di grandi dimensioni e hardware dedicato per fare computazioni intensive (usa algoritmi del ML) tramite reti neurali multi strato. Non richiede la fase di feature engineering. Rendere il processo: osservabile tracciabile e riproducibile in ogni sua parte.
  7. Community Il ML nasce in ambito accademico, la parte teoria di matematica e statistica è stata sviluppato nelle università ed usa Pyton come linguaggio privilegiato. Microsoft MS aveva casi d’uso concreti in cui utilizzare la conoscenza legata al ML quindi ha deciso di creare internamente un framework di ML per creare e distribuire i modelli di ML all’interno di tanti prodotti da Excel a Bing che potesse giare su device / piattaforme diverse da Azure a Xbox a Windows. ML.NET Nasce dall’esperienza di 10 anni di sviluppo di ML e da quella di centinaia di data scientist e developer che hanno lavorato su questi progetti. E’ multipiattaforma, CODE ORIENTED e open source e possiamo far girare i modelli di ML all’interno dei processi delle applicazioni e non come black box separate. Production For Everyone L’idea è quella di rendere il ML più popolare e alla portata di tutti, in questo modo diverrà più facile integrare i modelli all’interno delle applicazioni e anche sostenibile in termini di costi e accessibilità.
  8. curl -L “https://fxappdev6f822e30.azurewebsites.net/api/predict” -d "{ sentimentText:'I recommend this place' }"