Le Pipelines in Azure Machine Learning

Machine learning pipeline

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
pipeline azure machine learning
pipeline azure machine learning

 

Principali Vantaggi

L’utilizzo della pipeline in Azure machine learning comporta dei vantaggi:

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.

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.

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.

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à.

 

SDK di Azure Machine Learning per Python

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 si può ottimizzare il 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, si rende necessario un fine-tuning intorno al ciclo di addestramento della pipeline.

Quando si esegue nuovamente una pipeline, si saltano i passaggi che non devono essere eseguiti, e viene eseguito solo quello che è stato cambiato.

Lo stesso paradigma si applica agli script invariati utilizzati per l’esecuzione.

Alla scoperta di FPGA e Project Brainwave

Con questo articolo diamo un’infarinatura di quello che sono le FPGA e l’architettura Project Brainwave in Azure, entrambi elementi utili, talvolta fondamentali, per velocizzare tutto il sistema di AI su cui lavoriamo.

Scusatemi per la semplificazione utilizzata nell’introduzione. 😉

 

 

FPGA

Parliamo di un dispositivo che 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.

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à.

 

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.

ML.NET Concepts – MLContext

Here is other article about ML.NET concepts.

Today i write about MLContext.

MLContext

ML.NET has a lot of component and for the developer navigate it in the middle, could be complicated.

MLContext it’s the object that seems Caronte. It drive our soul in all ML.NET’s objects.
In fact It give us the visibility of all components and operations.

Let see:

MLContext.Data that contains the methods about the creation of IDataView interface:
– Load/Save data in file.
– Save memory data in cache.
– Filter data.

MLContext.Model thath contains the methods about the models or the transformer:
– Save and load
– Create prediction function

MLContext.Transforms that contains estimatorsfor the non-prevision operations.
– Categorical
– Text for natural language processing
– Conversion
– Vectorial Prediction
– Normalization
– Column operation (rename, delete, clone, concatenate, etc.)

MLContext.BinaryClassification, MulticlassClassification, Ranking and others, that are catalogues of learning algorithm for specific machine learning tasks:
– TrainTestSplit e CrossValidate
– Trainers that containing various specific trainers for activities.

MLContext.Log that’s a stream of text messages on long-running processes ML.NET is running.

 

References:

ML.NET Tutorial

ML.NET Concepts – Prediction function

Hi guys!

For your happyness i write other article about  ML.NET concept for you!

Today i write about the Prediction function.

Prediction function

You can see the Prediction function like a tool that take a row and apply to it a Transformer.

Once that we obtain the model we could use it for make some prediction using the api model.Transform. We must remember that the model obtained before is a Transformertrained by the api Fit(), or  a model we have load in some place.

Usually, in real life, we don’t have a batch where we could make prediction, but we have  scattered examples and we need to make fast prediciton on the fly or immediately.

we can reduce this to the batch prediction:

  • Create a data view with exactly one row.
  • Call model.Transform(data) to obtain the ‘predicted data view’.
  • Get a cursor over the resulting data.
  • Advance the cursor one step to get to the first (and only) row.
  • Extract the predicted values out of it.

 

The above algorithm can be implemented using the schema comprehension  with two user-defined objects InputExampleand OutputPrediction as follows:

predictive functionpredictive function

But this would be cumbersome, and would incur performance costs. Instead, we have a ‘prediction function’ object that performs the same work, but faster and more convenient, via an extension method MakePredictionFunction:

MakePredictionFunction
MakePredictionFunction

 

The same predictionFunc can (and should!) be used multiple times, thus amortizing the initial cost of MakePredictionFunction call.

Prediction function is not re-entrant / thread-safe,  so if you want to maker simultaneous prediction with more thread, you need a function prediction for every thread.

References:

ML.NET Tutorial

Schema comprehension

 

ML.NET Concepts – Estimator

Hi guys!

For your happyness i write other article about  ML.NET concept for you!

Today is the turn of Estimator.

Estimator

the Estimator is an object that learn by data. The result of training is a Transformer

Let’s see the IEstimator interface.

IEstimator
Interfaccia IEstimator

 

Yes as you thought you can create sequences of Estimator and you can thik about it as a single Estimator.

This property is the Append(). With this you can concatenate a lot of Estimator.Concatenation of Estimator

Sequence of Estimator 

Lazy Data? So Lazy Transformer!But Data reader? Lazy too!! And Estimator? Eager!

 

References:

ML.NET Tutorial

Transformer

ML.NET Concepts – DataReader

Here is other article about ML.NET concepts.

Today i write about DataReader.

DataReader

The DataReader component have one job: create the Data.

As you can understand from interface above, it take a T generic object as input and return same type of Data.

IDataReader
Interface IDataReader

 

As you can see, DataReader could read data, but the results will be always the same schema descripted in the method GetOutputSchema.

Yeah! you can concatenate a DataReader with a Transformer and the keyword is always the same: Append()

var newReader = reader.Append(transformer1).Append(transformer2)

Like  Transformer the DataReader are Lazy!

Lazy Data? So Lazy Transformer! But Data reader? Lazy too!!

 

 

Riferiments:

ML.NET Tutorial

Data

Transformer

ML.NET Concepts – Transformer

Continuous series of articles dealing with the fundamental concepts to learn the ML.NET framework.

 

Today we try to understand the Transformer

Transformer

Transformer are component the pick some data, make some work about it, and return new data, that is modified or transformed.

ITransformer
Interface ITransformer

 

We have two api:

Transform that return data modified and GetOutputSchema that accept a parameter of ISchema.

This is a propagation mechanism that can help us to see the data transformation without make real transformation on theese.

Some Transformer work one column at time. This because they have to create the column trasformed and usually the two columns have the same name.

All transformer that create a new view Data  when they call method Transform

Remember DataView are not mutable.

Lazy Data? So Lazy Transformer!

var newLazyData= transformer.Transform(oldData)

Transformer Chain

Data as others Api can use Append() method, that has role of cuncatenate all method in the pipeline.

var fullTransformer = transformer1.Append(transformer2).Append(transformer3);

 

 

References:

ML.NET Tutorial

ML.NET Concepts – Data

ML.NET Concepts – Data

Hi Guys! That’s the first of articles series where i write about ML.NET framework

Today i write about Data

Data

Data is rappresented by IDataView interface. If you think about Data you can imagine it like a Sql View.

Data is a lazily-evaluated, cursorable, heterogenous, schematized dataset.

Data have two instances:

Schema

A instance of ISchema interface. It contains al the information about the Data view column.

Every column have its name, its type and its metadata.

Use vector<T,N> where T is type and N is size of Data for the rappresentation of the data associated to a row

Cursors

The data view are source of Cursors. Think about Cursors as cursors SQL: a cursors is an object that flowing in the data, one row at time and show data available.

We can have infinite Cursors, because data are immutable.

Nota bene: usually the cursors access a subset of columns, where for efficiency the columns that do not serve the cursor are not calculated.

Data are Lazy!

 

 

References:

ML.NET Tutorial

IDataView Design Principles

Cursori Transact-SQL

Il Workflow di Azure Machine Learning Service

Il WorkFlow

In questo articolo descriverò l’architettura di Azure Machine Learning Service.

Partiamo dallo schema qui sotto, che ci da una visione di tutte le componenti del flusso di lavoro del service.

 

 

 

 

 

 

 

 

 

 

 

 

 

Il workflow di lavoro di Azure Machine Learning Service è il seguente

  • Lo sviluppo di script di training in python
  • Creare e configurare il compute target
  • Inviare gli script al target configurato. Durante il training, il target immagazzina record in un datastore. Tutti questi record vengono salvati in un experiment.
  • Eseguire delle query sull’experiment e nel caso in cui il risultato non sia quello sperato (se le metriche non indicano un risultato corretto) tornare al punto 1.
  • Quando si raggiunge un livello di metrica soddisfacente, si può registrare eil modello nel model registry.
  • Sviluppare uno script per calcolare il punteggio
  • Creare una image e registrarla nell’image registry
  • Deploiare l’image come webservice in azure

Ma ora partiamo dal Workspace

 

WorkSpace

WorkSpace è la risorsa più in evidenza di Azure Machine Learning Service, ci offre infatti un posto di lavoro centralizzato per lavorare con tutti gli artefatti che creiamo attraverso il nostro service.

Al suo interno mantiene una lista di target pche possono essere utilizzati per eseguire il training del nostro modello. Mantiene lo storico di tutti i run delle nostre training, permettendoci di tenere traccia di

  1. logs
  2. metriche
  3. output
  4. snapshot dei nostri script

Questo per fornirci le informazioni necessarie per capire quale run training ci fornisce il modello migliore.

I Modelli sono registrati nella workspace e assieme agli script di scoring sono usati per creare l’image. La stessa Image può venire deployata in vari container come:

  • Azure container
  • Azure Kubernetes Service
  • Field-programmable gate array
  • Rest-base HTTP endpoint (webservice)

Si possono creare multipli workspace, ed ognuno di quelli può essere condiviso con varie persone.  Quando vengono condivise, bisogna assegnare i ruoi agli utenti. Questi sono:

  1. Owner
  2. Contributor
  3. Reader

Ogni qualvolta vengono create nuove WorkSpace, vengono chiaramente allocate nuove risorse che vengono utilizzare dalla Workspace:

Nei prossimi articoli vedremo gli altri livelli dell’infrastruttura di Azure Machine Learning Service che sono:

  • Model
  • Image
  • Deployment

Azure Machine Learning Service

Cosa è Azure Machine Learning Service

Azure machine learning service è un servizio cloud che ci permette di sviluppare e distribuire modelli di Machine Learning.

Questa definizione, per quanto banale possa sembrare, non è da dare per scontata.  Infatti lo sforzo che sta facendo Microsoft sul mondo della AI è assolutamente importante

Questo per gli appassionati come me è fonte di motivazione e di entusiasmo.

Inizio l’articolo con una definizione cercando cosi di dare spazio anche ai meno “esperti”.

Cosa è l’apprendimento automatico

E’ una tecnica scientifica dei dati che permette ai computer di utilizzare dei dati esistenti per prevedere dei comportamenti o delle tendenze o anche degli eventi futuri. Questo vuole dire che i computer senza essere continuamente programmati dall’uomo, possono, utilizzando dei particolari algoritmi, apprendere delle cose. Ne consegue che i computer possono avere intelligenza propria.

L’ambiente di Azure Machine Learning Service

Parola d’ordine Cloud quindi azure. Questo ci permette una vastità di strumenti impressionante e ci da la possibilità inoltre di ragionare su vasta scala.

 

Come vediamo dall’immagine sopra le operazione di gestione del nostro modello percorrono tre fasi solitamente:

La preparazione: è il momento in cui prepariamo i nostri dataset. Per fare questo Microsoft ci mette a disposzione una marea di tecnologie open source, permettendoci di utilizzare migliaia di pacchetit python con i componenti di apprendimento di Tensorflow ad esempio oppure di scikit-learn.

L’esperimento: è la parte in cui strumenti avanzati come i notebook di jupyter o ppure Visual Studio Code AI semplificano tutto il processo di costruzione del modello aiutandoci nell’interattività dei dati, nella loro trasformazione ed infine nello sviluppo e il test del modello elaborato.

Col mondo Azure non possiamo che essere poi agevolati in quello che è l’automatizzazione dei processi. In questo caso il processo riguarda la generazione e lìottimizzazione dei modelli, per rendere efficente e accurata la produzione di modelli accurati.

Il punto di forza rimane la scalabilità. Chiaramente ci viene permesso di eseguire il training del modello anche in locale per poi scalare orizzontalmente su azure. Questo ci viene permesso grazie ai batch per AI e grazie agli strumenti di ottimizzazione dei parametri hyper avanzati

Il Deploy: Non poteva mancare Docker! Ebbane potremo distribuire il nostro modello in un container per Azure o nel servizio Kubernetes di Azure. Possiamo anche non utilizzare un cloud container e distribuircelo in locale, se volessimo.

 

I Componenti di apprendimento automatico

Per avere un modello in ordine, potremmo ad esempio utilizzare Azure Machine Learning che ci può generare un modello ottimizzato e pronto per essere usato. Oppure potremmo utilizzare l’SDK di Azure Machine Learning per python, assieme ai pacchetti appunto di python. Attraverso i pacchetti open source possiamo infatti creare modelli di apprendimento molto precisi e avanzati.

Alcuni dei pacchetti sono elencati qui sotto:

  1. Scikit-learn
  2. Tensorflow
  3. PyTorch
  4. CNTK
  5. MXNet

Azure Container e Kubernetes di Azure

Successivamente il nostro modello necessita di essere distribuito e qui entra in gioco Docker.  Questo ci permette di poter gestire comodamente i vari ambienti di sviluppo.

Diventa quindi il momento della gestione dei modelli distribuiti. Qui entra in gioco il portale di Azure o l’estensione per riga di comando di Azure Machine Learning. Così facendo controliamo metriche del modello e giochiamo tenendo traccia di tutti gli esperimenti fatti col modello.

 

Ma la domanda che sorge spontanea è:

Quali sono le differenze tra il servizio Azure Machine Learning e Azure Machine Learning Studio?

What’s the difference?

Azure Machine Learning Studio è un area di lavoro grafica, con degli elementi visivi che,  selezionandoli e trascinandoli, ci aiutano a creare e distribuire soluzioni dei apprendimento automatico.

Azure Machine Learning Studio è adatto a sperimentare in maniera fast e easy, quelli che vengono definiti algoritmi predefiniti per le soluzioni dell’utente.

Azure Machine Learning Service è adatto agli ambienti dove è necessario il maggior controllo possibile sugli algoritmi di apprendimento, oppure si voglio usare libreire open source. E’ adatto al mondo Python.

 

Attenzione però

I modelli creati in Azure Machine Learning Studio non possono essere distribuiti né gestiti dal servizio Azure Machine Learning.