Le novità dell'April Update per la Universal Windows Platform

di Matteo Tumiati, Marco Leoncini, in Windows 10,

Anche quest'anno si è tenuta //Build 2018, la più grande conferenza dedicata agli sviluppatori del mondo Microsoft e come tutti gli anni non sono di certo mancate le novità, sia per quanto riguarda la parte consumer, che per quanto riguarda lo sviluppo. Le opportunità per farsi conoscere all'interno del Microsoft Store non mancano, infatti, ad oggi, Windows 10 risulta installato su oltre 700 milioni di device, con un incremento netto di 200 milioni se paragonato a solo un anno fa, in cui però il settore mobile era considerato ancora uno dei punti fondamentali per la piattaforma: considerati i numeri in continua crescita, evidentemente è ancora il desktop a farla da padrone con le numerose applicazioni Win32 che però possono essere migrate con sempre più semplicità con il Desktop Bridge ad applicazioni per la Universal Windows Platform.

Il rilascio del Windows 10 April 2018 Update ha segnato un ulteriore grande passo, in quanto viene confermata ancora una volta l'idea di Microsoft nel proseguire con gli aggiornamenti semi-annuali e di riuscire allo stesso tempo rilasciare grandi novità per quanto riguarda SDK aggiornati, in modo che gli sviluppatori possano prendere contatto con nuove funzionalità, magari tramite il programma Windows Insider in anteprima, ed implementarle all'interno delle loro applicazioni.

Windows Machine Learning (WinML)

Machine Learning consente, tramite l'uso di un set di dati raccolti in passato, di fare analisi predittiva con una serie di algoritmi dedicati. Questi algoritmi consentono di produrre un modello che permetterà, dato un input, di generare un output con la previsione e la eventuale percentuale di accuratezza (che potrà essere verificata sulla base dei dati precedentemente raccolti). Tecnicamente, la fase di costruzione del modello è chiamata training, mentre la fase di consumo del modello è definita valutazione. Cercando di semplificare il più possibile l'argomento, la parte più complessa è sicuramente la parte di training, in quanto per la generazione del modello bisogna effettuare una classificazione, ovvero "tradurre" i dati ricevuti in input e raggrupparli in determinate categorie secondo diversi algoritmi. L'analisi, o valutazione, non farà altro che prendere i dati e capire in quale categoria appartengono.

Una delle novità più importanti del nuovo aggiornamento di Windows 10 è sicuramente il supporto per Machine Learning integrato in Windows. Ad oggi ci sono molte tecnologie che consentono l'elaborazione di modelli per Machine Learning, alcune sono basate sul cloud, come ad esempio Azure Machine Learning, che permette la consumazione dei dati per la generazione di modelli più affidabili e la valutazione degli stessi, altre sono toolkit, come CNTK (Microsoft Cognitive Toolkit) che permettono la visualizzazione dei dati e l'analisi del modello stesso, ma tutte richiedono una componente fondamentale: una connessione ad Internet.

Ci sono molti scenari infatti in cui può servire l'elaborazione del modello direttamente offline, oppure scenari che richiedono risultati in un lasso di tempo molto breve, in cui nemmeno la latenza di una connessione ad Internet sarebbe accettabile, come ad esempio casi di navi disperse nell'oceano, oppure aerei, che non hanno un accesso alla connessione Internet garantito e sicuro, ma che devono comunque fare previsioni su possibili rotture. Altri esempi potrebbero riguardare l'elaborazione di immagini per determinare le persone presenti all'interno di una foto, in cui l'esposizione ad Internet del device sulla quale viene eseguita l'elaborazione potrebbe causare problemi di privacy. Windows 10 con l'SDK 17134 permette proprio questo, ovvero l'elaborazione sul client disconnesso di modelli di machine learning. Poiché il training è la parte più complessa e richiede una grande quantità di dati, il modello viene comunque creato inizialmente nel cloud, ma tutta la valutazione potrà essere fatta direttamente sul client tramite l'introduzione di nuove API dedicate chiamate WinML (contenute nel namespace Windows.AI.MachineLearning), disponibili sia per la Universal Windows Platform, che per le classiche applicazioni desktop Win32. Inoltre, poiché l'elaborazione può richiedere diverso tempo, in proporzione alla complessità del modello stesso, in device che hanno a disposizione DirectX 12, WinML trarrà vantaggio della GPU per velocizzare il processo, senza richiedere agli sviluppatori la scrittura di una singola riga di codice.

Per rendere il processo più semplice possibile per gli sviluppatori, Microsoft ha dovuto lavorare su due aspetti fondamentali: il primo riguarda il supporto ad un formato standard per quanto riguarda il modello, il secondo è l'integrazione con Visual Studio. Se guardiamo il mercato attuale, infatti, ci sono un sacco di framework che consentono di lavorare con algoritmi per machine learning ed ognuno di essi produce un modello con un formato particolare, ma da integrare per uno sviluppatore non è semplice, perché dovrebbe prima mettersi nei panni di un data scientist e capire il modello, per poi prendere i dati di input e fare la valutazione per leggere l'output. Per questo Microsoft ed altre aziende, come Amazon e Facebook, hanno collaborato con le community open-source per produrre uno standard comune chiamato ONNX (Open Neural Network Exchange). Non solo: poiché i framework a disposizione sono decine e decine, hanno anche lavorato con i principali vendor per produrre dei tool per effettuare la conversione da Caffe 2, PyTorch, Chainer e CNTK.

Il risultato di questo processo ha portato ad una grossa semplificazione per gli sviluppatori: una volta generato il modello, ed eventualmente convertito nel formato ONNX, sarà sufficiente trascinarlo come risorsa all'interno dell'applicazione UWP (o Win32) in Visual Studio per vedere tutto il codice relativo al modello generarsi in automatico. Il processo di generazione del codice di WinML crea delle classi wrapper per impostare gli input del modello, fare la valutazione e ricevere gli output ed è attualmente supportato per C# e C++ nei progetti UWP. Nelle applicazioni Win32 invece, è richiesto l'uso del tool rilasciato tramite il Windows SDK chiamato mlgen, disponibile in (SDK_root)\bin\<version>\x<architecture>\mlgen.exe.

6 pagine in totale: 1 2 3 4 5 6
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc