2. #azuresatpn
Cosa è Machine Learning
Machine Learning è una tecnica di analisi scientifica dei dati che
consente ai computer di usare i dati esistenti per prevedere
comportamenti, tendenze e risultati futuri.
Con Machine Learning, i computer «apprendono» senza essere
programmati in modo esplicito.
3. #azuresatpn
Cosa è Azure Machine Learning Service
Azure Machine Learning Service è un servizio cloud usato per
sviluppare e distribuire modelli di Machine Learning.
Ci permette di tenere traccia dei modelli durante le fasi di
compilazione, training, distribuzione e gestione.
5. #azuresatpn
Cosa è Azure Machine Learning Service
Supporta tecnologie open source
• TensorFlow
• Scikit-learn
Possiamo utilizzare strumenti avanzati come:
• Notebook di Jupyter
• Visual studio Code Tools for AI
6. #azuresatpn
Cosa è Azure Machine Learning Service
• Il servizio Azure Machine Learning include anche funzionalità
per automatizzare la generazione e l'ottimizzazione dei modelli, per
creare modelli in modo semplice, efficiente e accurato.
• Consente anche di avviare il training sul computer locale per poi
scalare orizzontalmente nel cloud.
• E’ possibile compilare modelli migliori in tempi più rapidi, sfruttando
le potenzialità offerte dal cloud.
7. #azuresatpn
Cosa è Azure Machine Learning Service
Dopo aver ottenuto il modello più idoneo, è possibile distribuirlo in un
contenitore come Docker.
Permettendoci di distribuire container:
• Azure
• Kubernetes di Azure
• usare il contenitore nelle proprie distribuzioni, in locale o nel cloud.
È possibile gestire i modelli distribuiti e tenere traccia delle diverse
esecuzioni sperimentate per individuare la soluzione migliore.
8. #azuresatpn
Le operazioni di Azure Machine Learning
Azure Machine Learning può generare e ottimizzare automaticamente
un modello per l'utente.
Oppure, usando l'SDK di Azure Machine Learning per Python insieme ai
pacchetti Python open source, è possibile compilare ed eseguire
autonomamente il training di modelli di apprendimento automatico
estremamente precisi e avanzati in un'area di lavoro di Azure Machine
Learning
9. #azuresatpn
Le operazioni di Azure Machine Learning
Ci sono molti componenti di apprendimento automatico disponibili
come pacchetti Python open source, ad esempio:
• Scikit-learn
• Tensorflow
• PyTorch
• CNTK
• MXNet
10. #azuresatpn
Le operazioni di Azure Machine Learning
Dopo la creazione, il modello può essere usato per creare un
contenitore (ad esempio Docker)
E’ possibile distribuirlo su:
Istanze di contenitore di Azure
servizio Kubernetes di Azure.
11. #azuresatpn
Le operazioni di Azure Machine Learning
Successivamente che i modelli sono distribuiti è possibile:
• valutarne le metriche
• ripetere il training
• ridistribuire le nuove versioni del modello, tenendo al contempo
traccia degli esperimenti del modello.
12. #azuresatpn
Azure Machine Learning Service vs Azure Machine Learning Studio
Azure Machine Learning Studio è un'area di lavoro collaborativa e
grafica con selezione e trascinamento degli elementi, in cui è possibile
compilare, testare e distribuire soluzioni di apprendimento automatico
senza dover scrivere codice.
Usa algoritmi di apprendimento automatico e moduli di gestione dei
dati precompilati e preconfigurati.
E’ adatta a sperimentare modelli di apprendimento automatico in
modo semplice e rapido quando gli algoritmi di apprendimento
automatico predefiniti sono sufficienti per le soluzioni dell'utente.
13. #azuresatpn
Azure Machine Learning Service vs Azure Machine Learning Studio
Il servizio Azure Machine Learning è adatto agli ambienti Python,
quando è necessario:
• disporre di maggior controllo sugli algoritmi di apprendimento
automatico
• usare le librerie di apprendimento automatico open source.
14. #azuresatpn
Azure Machine Learning Service vs Azure Machine Learning Studio
BUT
I modelli creati in Azure Machine Learning Studio non possono essere
distribuiti né gestiti dal servizio Azure Machine Learning.
15. #azuresatpn
WorkBench in Azure Machine Larning Cosa è cambiato?
La Workbench e altre funzionalità hanno lasciato il posto a un
miglioramento dell'architettura.
Questa versione contiene molti aggiornamenti significativi derivanti dal
feedback dei clienti per migliorare l'esperienza dell'utente.
Le funzionalità di base, dalle esecuzioni sperimentali alla distribuzione
del modello, ma ora è possibile usare le solide
funzionalità SDK e CLI per portare a termine attività di apprendimento
automatico e pipeline.
16. #azuresatpn
Gli altri prodotti di apprendimento automatico
Microsoft offre varie altre opzioni per la compilazione, la distribuzione
e la gestione di modelli di Machine Learning.
• SQL Server Machine Learning Services
• Microsoft Machine Learning Server
• Macchina virtuale di data science di Azure
• Spark MLLib in HDInsight
• Servizio Batch AI Training
• Microsoft Cognitive Toolkit (CNTK)
• Servizi cognitivi di Azure
17. #azuresatpn
SQL Server Machine Learning Services
I Servizi Microsoft Machine Learning di SQL Server consentono di
eseguire, eseguire il training e distribuire modelli di Machine Learning
tramite R o Python.
È possibile usare dati in locale e in database di SQL Server.
• Si usano i Servizi Microsoft Machine Learning quando è necessario
eseguire il training o distribuire modelli in locale o in Microsoft SQL
Server.
I modelli creati con i Servizi Machine Learning possono essere
distribuiti usando Gestione modelli di Azure Machine Learning.
18. #azuresatpn
Microsoft Machine Learning Server
Microsoft Machine Learning Server è un server aziendale per l'hosting e la gestione di carichi di
lavoro paralleli e distribuiti di processi R e Python.
Viene eseguito su Linux, Windows, Hadoop e Apache Spark. È anche disponibile in HDInsight.
Fornisce un motore di esecuzione per le soluzione create tramite pacchetti di Microsoft Machine
Learning ed estende R e Python open source con il supporto per gli scenari seguenti:
• Analisi ad alte prestazioni
• Analisi statistiche
• Machine learning
• Set di dati di grandi dimensioni
• Le funzionalità aggiuntive vengono fornite tramite pacchetti proprietari installati insieme al
server. Per lo sviluppo è possibile usare IDE come R Tools per Visual Studio e Python Tools for
Visual Studio.
Solitamente si usa Microsoft Machine Learning Server quando è necessario eseguire operazioni di
creazione e distribuzione di modelli creati con R e Python in un server, oppure con operazioni di
distribuzione di training R e Python su larga scala in un cluster Hadoop o Spark
19. #azuresatpn
Macchina virtuale di data science di Azure
La macchina virtuale di data science è un ambiente VM personalizzato nel
cloud di Microsoft Azure, creato in modo specifico per l'analisi scientifica dei
dati. Include diversi strumenti comuni per l'analisi scientifica dei dati e altri
strumenti preinstallati e preconfigurati per implementare rapidamente la
creazione di applicazioni intelligenti per l'analisi avanzata. La macchina
virtuale di data science è disponibile nelle versioni 2016 e 2012 di Windows
Server, in una VM Linux su Ubuntu 16.04 LTS e nelle distribuzioni basate su
OpenLogic CentOS 7.4.
• Si usa solitamente la macchina virtuale di data science quando è necessario
eseguire oppure ospitare processi in un singolo nodo o se è necessario
aumentare in modo remoto le prestazioni di elaborazione in un singolo
computer.
20. #azuresatpn
Spark MLLib in HDInsight
Spark MLLib in HDInsight consente di creare modelli come parte dei
processi Spark in esecuzione su Big Data. Spark consente di trasformare
e preparare con facilità i dati e quindi di aumentare la creazione di
modelli in un singolo processo. I modelli creati tramite Spark MLLib
possono essere distribuiti, gestiti e monitorati tramite Gestione modelli
di Azure Machine Learning. Spark può essere usato anche per
aumentare le prestazioni dei processi di preparazione dei dati creati in
Machine Learning Workbench.
• Si utilizza Spark quando è necessario aumentare le prestazioni
dell'elaborazione dei dati e creare modelli come parte di una pipeline
di dati. È possibile creare processi Spark in Scala, Java, Python o R.
21. #azuresatpn
Servizio Batch AI Training
Azure Batch AI Training consente di sperimentare in parallelo con i modelli di
intelligenza artificiale, usando qualsiasi framework, e quindi esegue il training dei
modelli su larga scala in GPU cluster. Descrivere i requisiti del processo e la
configurazione da eseguire. Il resto della procedura verrà gestito automaticamente.
Batch AI Training consente di aumentare le prestazioni dei processi di Deep
Learning in GPU cluster, usando frameworks quali:
• Cognitive Toolkit
• Caffe
• Chainer
• TensorFlow
Solitamente può essere usato per accettare modelli da Batch AI Training e quindi
distribuirli, gestirli e monitorarli.
Batch AI Training verrà integrato in Sperimentazione di Azure Machine Learning in
futuro.
22. #azuresatpn
Microsoft Cognitive Toolkit (CNTK)
Microsoft Cognitive Toolkit è un toolkit unificato per Deep Learning che
descrive le reti neurali come passaggi di calcolo in un grafo orientato. In
questo grafo orientato i nodi foglia rappresentano i valori di input o i
parametri di rete, mentre gli altri nodi rappresentano operazioni della
matrice sui relativi input. Cognitive Toolkit consente di realizzare e
combinare con facilità i tipi di modello più diffusi, ad esempio DNN di inoltro
del feed, reti convoluzionali (CNN) e reti ricorrenti (RNN/LSTM). Implementa
l'apprendimento basato su discesa del gradiente stocastico (SGD,
backpropagation degli errori) con la differenziazione automatica e la
parallelizzazione tra più GPU e server.
• Si tende a utilizzare Cognitive Toolkit quando si vuole creare un modello
tramite Deep Learning. Cognitive Toolkit può essere usato in tutti i servizi
indicati in precedenza.
23. #azuresatpn
Servizi cognitivi di Azure
Servizi cognitivi di Azure è un set di circa 30 API che consente di creare app che
usano metodi di comunicazione naturali. Queste API consentono alle app di vedere,
sentire, parlare, comprendere e interpretare le esigenze degli utenti con poche
righe di codice. È possibile aggiungere con facilità funzionalità intelligenti alle app,
ad esempio:
• Rilevamento di emozioni e sentiment
• Riconoscimento visivo e vocale
• Comprensione del linguaggio (LUIS, Language Understanding)
• Conoscenza e ricerca
I Servizi cognitivi possono essere usati per sviluppare app in diversi dispositivi e
diverse piattaforme. Le API vengono migliorate continuamente e sono facili da
installare.
24. #azuresatpn
Azure Machine Learning Service, come funziona?
Workflow
1. Sviluppare script di training per l'apprendimento automatico in Python.
2. Creare e configurare una destinazione di calcolo.
3. Inviare gli script alla destinazione di calcolo configurata per l'esecuzione in
tale ambiente. Durante il training, la destinazione di calcolo archivia i record
di esecuzione in un archivio dati. Qui, i record vengono salvati in
un esperimento.
4. Eseguire una query sull'esperimento per le metriche registrate dalle
esecuzioni correnti e precedenti. Se le metriche non indicano un risultato
desiderato, tornare al passaggio 1 ed eseguire l'iterazione sugli script.
5. Una volta trovata un'esecuzione soddisfacente, registrare il modello
persistente nel registro di modello.
6. Sviluppare uno script di punteggio.
7. Creare un'immagine e registrarla nel registro delle immagini.
8. Distribuire l'immagine come un servizio Web in Azure.
25. #azuresatpn
Nel dettaglio: L’area di lavoro
• L'area di lavoro è la risorsa di primo livello per il servizio di Azure
Machine Learning. Fornisce una posizione centralizzata per lavorare
con tutti gli artefatti creati durante l'uso di Azure Machine Learning.
• L'area di lavoro mantiene un elenco di destinazioni di calcolo che può
essere usato per il training del modello. Inoltre, mantiene una
cronologia di esecuzioni di training che include i registri, le metriche,
gli output e uno snapshot degli script. Queste informazioni
consentono di determinare il training che produce il modello migliore.
26. #azuresatpn
Nel dettaglio: L’area di lavoro
È possibile creare più aree di lavoro, ciascuna delle quali può essere condivisa da più
utenti. Quando si condivide un'area di lavoro, è possibile controllarne l'accesso assegnando
agli utenti i ruoli di seguito:
• Proprietario
• Collaboratore
• Reader
Quando si crea una nuova area di lavoro, vengono create automaticamente diverse risorse
di Azure usate dall'area di lavoro:
• Registro contenitori di Azure: registra contenitori Docker che vengono usati durante il
training e durante la distribuzione di un modello.
• Archiviazione di Azure: usata come archivio dati predefinito per l'area di lavoro.
• Application Insights di Azure: archivia le informazioni di monitoraggio sui modelli.
• Azure Key Vault: conserva segreti usati dalle destinazioni di calcolo e altre informazioni
riservate richieste dall'area di lavoro.
28. #azuresatpn
Nel dettaglio: Il modello
Nella forma più semplice, un modello è un frammento di codice che accetta un
input e produce output. La creazione di un modello di Machine Learning prevede di
selezionare un algoritmo, fornirgli dei dati e ottimizzare gli iperparametri. Il training
è un processo iterativo che produce un modello con training, che racchiude ciò che
il modello ha appreso durante il processo di training.
Un modello è prodotto da un'esecuzione in Azure Machine Learning. È anche
possibile usare un modello il cui training sia stato eseguito all'esterno di Azure
Machine Learning. È possibile registrare un modello in un'area di lavoro di Azure
Machine Learning.
Azure Machine Learning è indipendente dal framework. Durante la creazione di un
modello è possibile usare un qualsiasi framework di apprendimento automatico
comune, ad esempio scikit-learn, xgboost, PyTorch, TensorFlow, Chainer e Cognitive
Toolkit.
29. #azuresatpn
Nel dettaglio: Image
Le immagini consentono di distribuire in modo affidabile un modello e tutti i componenti
necessari per il suo utilizzo. Un'immagine contiene i seguenti elementi:
• Un modello.
• Uno script di punteggio o applicazione. Questo script viene usato per passare l'input al
modello e per restituire l'output del modello.
• Dipendenze necessarie per il modello o lo script di punteggio/applicazione. Ad esempio,
è possibile includere un file di ambiente Conda che elenca le dipendenze dei pacchetti
Python.
Esistono due tipi di immagini che possono essere create tramite Azure Machine Learning:
• Immagine FPGA: usata durante la distribuzione in una matrice FPGA nel cloud di Azure.
• Immagine Docker: usata durante la distribuzione in destinazioni di calcolo diverse da
FPGA. Ad esempio, le istanze di contenitore di Azure e il servizio Kubernetes di Azure.
30. #azuresatpn
Nel dettaglio: La distribuzione
La distribuzione è la creazione di un'istanza dell'immagine in
• un servizio Web che può essere ospitato nel cloud
• un modulo IoT per le distribuzioni integrate nei dispositivi.
31. #azuresatpn
Nel dettaglio: La distribuzione
Servizio Web
Un servizio Web distribuito può usare le istanze di contenitore di Azure, il
servizio Kubernetes di Azure o le matrici FPGA. Il servizio viene creato da
un'immagine che racchiude il modello, lo script e i file associati. L'immagine
presenta un endpoint HTTP con bilanciamento del carico, che riceve le
richieste di punteggio inviate al servizio Web.
Azure aiuta a monitorare la distribuzione del servizio Web raccogliendo i dati
di telemetria di Application Insights e, se questa funzionalità è stata abilitata,
i dati di telemetria del modello. I dati di telemetria sono accessibili solo per
l'utente e archiviati in Application Insights e nelle istanze dell'account di
archiviazione.
32. #azuresatpn
Nel dettaglio: La distribuzione
Modulo IoT
Un modulo IoT distribuito è un contenitore Docker che include il
modello, lo script/associazione associato e qualsiasi ulteriore
dipendenza. Questi moduli vengono distribuiti tramite Azure IoT Edge
nei dispositivi perimetrali.
Se il monitoraggio è abilitato, Azure raccoglie i dati di telemetria dal
modello all'interno del modulo Azure IoT Edge. I dati di telemetria sono
accessibili solo per l'utente e archiviati nell'istanza dell'account di
archiviazione.
33. #azuresatpn
Nel dettaglio: L’archivio dati
Un archivio dati è un'astrazione dell'archiviazione su un account di
archiviazione di Azure.
L'archivio dati può usare un contenitore BLOB o una condivisione file di
Azure come risorsa di archiviazione back-end.
Ogni area di lavoro presenta un archivio dati predefinito, ma è possibile
registrare ulteriori archivi dati.
34. #azuresatpn
Nel dettaglio: L’esegui
Un'esecuzione è un record contenente le seguenti informazioni:
• Metadati sull'esecuzione (timestamp, durata e così via)
• Metriche registrate dallo script
• File di output raccolti automaticamente dall'esperimento o caricati in
modo esplicito dall'utente.
• Uno snapshot della directory che contiene gli script, precedente
all'esecuzione
Un'esecuzione viene generata quando si invia uno script per eseguire il
training di un modello.
35. #azuresatpn
Nel dettaglio: L’esperimento
Un esperimento è un raggruppamento di più esecuzioni da uno script
specifico. Appartiene sempre a un'area di lavoro. Quando si invia
un'esecuzione, si fornisce un nome dell'esperimento. Le informazioni
per l'esecuzione vengono archiviate in tale esperimento. Se si invia
un'esecuzione e si specifica un nome dell'esperimento che non esiste,
viene creato automaticamente un nuovo esperimento con lo stesso
nome.
36. #azuresatpn
Nel dettaglio: Le destinazioni di calcolo
Una destinazione di calcolo è la risorsa di calcolo usata per eseguire lo script
di training o per ospitare la distribuzione del servizio Web. Le destinazioni di
calcolo supportate sono:
• Il computer locale
• Una macchina virtuale Linux in Azure (come ad esempio Data Science
Virtual Machine)
• Il cluster Batch per intelligenza artificiale
• Apache Spark per HDInsight
• Istanza di contenitore di Azure
• Azure Kubernetes Service
37. #azuresatpn
Nel dettaglio: La configurazione di esecuzione
Una configurazione di esecuzione è un set di istruzioni che definisce
come uno script deve essere eseguito in una destinazione di calcolo
specificata. Include un'ampia serie di definizioni di comportamento, ad
esempio se usare un ambiente Python esistente oppure un ambiente
Conda compilato dalla specifica.
38. #azuresatpn
Nel dettaglio: Lo script di training
Per eseguire il training di un modello si specifica la directory che
contiene lo script di training e i file associati.
Si specifica inoltre un nome per l'esperimento, che viene usato per
archiviare le informazioni raccolte durante il training.
Durante il training l'intera directory viene copiata nell'ambiente di
training (destinazione di calcolo) e lo script specificato per la
configurazione di esecuzione viene avviato. Uno snapshot della
directory viene archiviato anche nell'esperimento nell'area di lavoro.
39. #azuresatpn
Nel dettaglio: La registrazione
Quando si sviluppa la soluzione, usare il Python SDK Python di Azure
Machine Learning nello script di Python per registrare metriche
arbitrarie. Dopo l'esecuzione, eseguire query sulle metriche per
determinare se l'esecuzione ha prodotto il modello che si desidera
distribuire.
40. #azuresatpn
Nel dettaglio: Lo snapshot
Quando si invia un'esecuzione, Azure Machine Learning consente di
comprimere la directory che contiene lo script come file ZIP e lo invia
alla destinazione di calcolo.
Il file ZIP viene quindi espanso; lo script viene eseguito in questa
posizione.
Azure Machine Learning archivia inoltre il file ZIP come snapshot come
parte del record di esecuzione.
Chiunque abbia accesso all'area di lavoro può esplorare un record di
esecuzione e scaricare lo snapshot.
41. #azuresatpn
Nel dettaglio: Le attività
Un'attività rappresenta un'operazione a esecuzione prolungata. Le
operazioni seguenti sono esempi di attività:
• Creazione o eliminazione di una destinazione di calcolo
• Esecuzione di uno script su una destinazione di calcolo
Le attività possono fornire notifiche tramite l'SDK o l'interfaccia utente
Web in modo da poter facilmente monitorare l'avanzamento di queste
operazioni.
42. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli
Azure machine learning service ti permette di gestire gestire, distribuire
e controllare i tuoi modelli attraverso 4 step:
• Registra il modello in un registro ospitato nell'area di lavoro di azure
machine learning service
• Registra un'immagine che accoppia un modello con uno script di
punteggio e dipendenze in un container portabile
• Distribuire l'immagine come servizio Web nel cloud o su dispositivi
periferici
• Monitorare e raccogliere dati
44. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli
Ogni passaggio può essere eseguito
indipendentemente o come parte di un singolo
comando di distribuzione.
Inoltre, è possibile integrare la distribuzione in un
flusso di lavoro CI / CD come illustrato in questo
grafico.
45. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli – STEP 1
Il registro modello tiene traccia di tutti i modelli nell'area di lavoro di
Azure Machine Learning.
I modelli sono identificati per nome e versione.
Ogni volta che si registra un modello con lo stesso nome di uno
esistente, il registro incrementa la versione.
È inoltre possibile fornire tag di metadati aggiuntivi durante la
registrazione che possono essere utilizzati durante la ricerca di modelli.
Non è possibile eliminare i modelli utilizzati da un'immagine.
46. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli – STEP 2
Le immagini consentono una distribuzione affidabile del modello, insieme a tutti i
componenti necessari per utilizzare il modello.
Un'immagine contiene i seguenti elementi:
• Il modello
• Il motore di punteggio
• Il file di punteggio o l'applicazione
• Qualsiasi dipendenza necessaria per segnare il modello
L'immagine può anche includere componenti SDK per la registrazione e il
monitoraggio.
Azure Machine Learning supporta i framework più popolari, ma in generale
qualsiasi framework che può essere installato tramite pip può funzionare.
47. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli – STEP 3
È possibile distribuire immagini registrate nel cloud o su dispositivi periferici.
Il processo di distribuzione crea tutte le risorse necessarie per monitorare,
bilanciare il carico e ridimensionare automaticamente il modello.
L'accesso ai servizi distribuiti può essere protetto con l'autenticazione basata
su certificato fornendo le risorse di sicurezza durante la distribuzione.
È inoltre possibile aggiornare una distribuzione esistente per utilizzare
un'immagine più recente.
48. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli – STEP 3
Puoi deployare le tue immagini ai seguenti target nel cloud
• Azure Container Instance
• Azure Kubernetes Service
• Azure FPGA machines
• Azure IoT Edge devices
Quando il servizio viene distribuito, la richiesta di inferenza viene
automaticamente bilanciata in base al carico e il cluster viene
ridimensionato per soddisfare eventuali picchi su richiesta.
La telemetria del servizio può essere acquisita nel servizio Azure
Application Insights associato al tuo spazio di lavoro.
49. #azuresatpn
Gestisci, distribuisci e controlla i tuoi modelli – STEP 4
Un SDK per la registrazione del modello e l'acquisizione dei dati è disponibile in
modo da poter monitorare input, output e altri dati rilevanti dal modello.
I dati vengono archiviati come un BLOB nell'account di archiviazione di Azure per il
proprio spazio di lavoro.
Per utilizzare l'SDK con il tuo modello, devi importare l'SDK nello script o
nell'applicazione di valutazione.
È quindi possibile utilizzare l'SDK per registrare dati quali parametri, risultati o
dettagli di input.
Se si decide di abilitare la raccolta dei dati del modello ogni volta che si distribuisce
l'immagine, i dati necessari per acquisire i dati, ad esempio le credenziali del
proprio archivio BLOB personale, vengono forniti automaticamente
50. #azuresatpn
Field Programmable Gate Array (FPGA)
Un dispositivo FPGA contiene una matrice di blocchi di logica
programmabile e una gerarchia di interconnessioni riconfigurabili che
consentono di configurare i blocchi in modi diversi dopo la produzione.
51. #azuresatpn
Field Programmable Gate Array (FPGA)
I dispositivi FPGA offrono una combinazione di programmabilità e prestazioni superiore agli altri
chip:
• Le CPU sono processori per utilizzo generico. Le prestazioni delle CPU non sono ideali per
l'elaborazione di video e immagini.
• Le unità di elaborazione grafica (GPU) offrono capacità di elaborazione parallela e rappresentano
una scelta comune per i calcoli di intelligenza artificiale. L'elaborazione parallela con GPU
consente un rendering delle immagine più veloce rispetto alle CPU.
• Gli Application Specific Integrated Circuit (ASIC), come le unità del processore TensorFlow di
Google, sono circuiti personalizzati. Nonostante questi chip offrano la massima efficienza, gli ASIC
non sono flessibili.
• I dispositivi FPGA, ad esempio quelli disponibili in Azure, assicurano prestazioni simili a quelle
degli ASIC e la flessibilità di essere riconfigurati in un secondo momento.
I dispositivi FPGA sono ora presenti in ogni nuovo server Azure. Microsoft sta già utilizzando i
dispositivi FPGA per la classificazione delle ricerche Bing, la valutazione della rete neurale profonda
(DNN) e l'accelerazione SDN. Queste implementazioni FPGA riducono la latenza e mantengono
libere le CPU per altre attività.
52. #azuresatpn
Project Brainwave in Azure
Project Brainwave è un'architettura hardware progettata sui dispositivi
FPGA Intel e usata per accelerare i calcoli AI in tempo reale.
Con questa architettura economica abilitata per FPGA, una rete neurale
con training può essere eseguita alla velocità massima e con una
latenza più bassa.
La tecnologia Project Brainwave è in grado di parallelizzare le reti
neurali profonde con training preliminare tra i dispositivi FPGA, in
modo da ridimensionare il servizio.
53. #azuresatpn
Project Brainwave in Azure
Prestazioni
I dispositivi FPGA consentono di ottenere una bassa latenza per le richieste di inferenza in tempo reale. L'invio in batch significa
suddividere una richiesta in parti più piccole da sottoporre a un processore per migliorare l'utilizzo dell'hardware. L'invio in batch non
è efficiente e può provocare latenza.
Dal momento che Brainwave non richiede l'invio in batch, la latenza è 10 volte inferiore rispetto alle CPU e GPU.
Flessibilità
I dispositivi FPGA possono essere riconfigurati per diversi tipi di modelli di machine learning. Questa flessibilità consente di accelerare
le applicazioni basandosi sul modello ottimale di memoria e precisione numerica utilizzato.
Nuove tecniche di machine learning vengano sviluppate costantemente e la progettazione hardware di Project Brainwave evolve
altrettanto rapidamente.
Dal momento che i dispositivi FPGA sono riconfigurabili, è possibile rimanere al passo della rapida evoluzione dei requisiti degli
algoritmi AI.
Scalabilità
Microsoft Azure ha realizzato l'investimento in dispositivi FPGA per il cloud più importante al mondo. È possibile eseguire Brainwave
sull'infrastruttura scalabile di Azure.
54. #azuresatpn
Project Brainwave in Azure
• Negli scenari seguenti vengono usati i dispositivi FPGA
sull'architettura Project Brainwave:
• Sistema di ispezione ottica automatizzato. Vedere Real-time AI:
Microsoft announces preview of Project Brainwave (AI in tempo reale:
Microsoft annuncia l'anteprima di Project Brainwave).
• Mapping della copertura del suolo. Vedere How to Use FPGAs for
Deep Learning Inference to Perform Land Cover Mapping on
Terabytes of Aerial Images (Come usare i dispositivi FPGA per
inferenze di apprendimento approfondito per eseguire il mapping
della copertura del suolo su terabyte di immagini aeree).
55. #azuresatpn
Pipeline and Azure Machine Learning
Le pipeline di machine learning (ML) sono utilizzate dagli
scienziati dei dati per creare, ottimizzare e gestire i flussi di
lavoro di machine learning.
Una pipeline tipica prevede una sequenza di passaggi che
coprono le seguenti aree:
• Preparazione dei dati, come normalizzazioni e
trasformazioni
• Allenamento del modello, ad esempio ottimizzazione e
convalida dei parametri iper
• Implementazione e valutazione del modello
56. #azuresatpn
Pipeline and Azure Machine Learning
L'SDK di Azure Machine Learning per Python può essere utilizzato per creare pipeline ML e per inviare e
tracciare le singole esecuzioni della pipeline.
Con le pipeline, puoi ottimizzare il tuo flusso di lavoro con semplicità, velocità, portabilità e riutilizzo.
Quando si creano pipeline con Azure Machine Learning, è possibile concentrarsi su ciò che si conosce meglio,
l'apprendimento automatico, piuttosto che l'infrastruttura.
L'utilizzo di passaggi distinti consente di rieseguire solo i passaggi necessari mentre si modifica e si verifica il
flusso di lavoro.
Un passo è un'unità computazionale in cantiere. Il compito di preparare i dati può implicare molti passaggi tra
cui, ma non solo, la normalizzazione, la trasformazione, la validazione e caratterizzazione.
Una volta che la pipeline è stata progettata, c'è spesso più fine-tuning intorno al ciclo di addestramento della
pipeline.
Quando si esegue nuovamente una pipeline, la corsa salta ai passaggi che devono essere rieseguiti, ad esempio
uno script di aggiornamento aggiornato, e salta ciò che non è cambiato.
Lo stesso paradigma si applica agli script invariati utilizzati per l'esecuzione del passo.
57. #azuresatpn
Pipeline and Azure Machine Learning
Esecuzioni inattese
Pianifica alcuni passaggi per eseguire in parallelo o in sequenza in
modo affidabile e incustodito. Poiché la preparazione e la modellazione
dei dati possono durare giorni o settimane, ora puoi concentrarti su
altre attività mentre la tua pipeline è in esecuzione.
58. #azuresatpn
Pipeline and Azure Machine Learning
Computazione mista e diversificata
Utilizzare più pipeline coordinate in modo affidabile su calcoli e archivi
eterogenei e scalabili. Le singole fasi della pipeline possono essere
eseguite su diversi target di calcolo, come HDInsight, GPU Data Science
VM e Databricks, per utilizzare in modo efficiente le opzioni di calcolo
disponibili.
59. #azuresatpn
Pipeline and Azure Machine Learning
Riusabilità
Le pipeline possono essere template per scenari specifici come
riqualificazione e punteggio di lotto. Possono essere attivati da sistemi
esterni tramite semplici chiamate REST.
60. #azuresatpn
Pipeline and Azure Machine Learning
Tracking and versioning
Invece di tracciare manualmente i percorsi dei dati e dei risultati
durante l'iterazione, utilizzare l'SDK delle pipeline per denominare e
eseguire in modo esplicito le origini dati, gli input e gli output e gestire
separatamente script e dati per aumentare la produttività.