Cosa c'è di nuovo in Core ML 2?

L'anno scorso, Apple ha lanciato Core ML: un seguito nel mondo del machine learning per gli sviluppatori Apple. Prima di questo, stavamo già utilizzando l'apprendimento automatico con tecnologie come AutoCorrect, Siri e una tastiera predittiva, ma Core ML ha portato un nuovo livello di potenza e flessibilità nelle mani degli sviluppatori. Durante WWDC 18, Apple ha annunciato Core ML 2, e in questo articolo imparerai cosa c'è di nuovo.

A prima vista

Prima di immergerci nei cambiamenti introdotti da Core ML 2, discutiamo brevemente di cosa sia realmente il Core ML. Più in particolare, impariamo un po 'sulle sfumature dell'apprendimento automatico. Core ML è un framework che consente agli sviluppatori iOS e macOS di implementare in modo semplice ed efficiente l'apprendimento automatico nelle proprie app.

Che cos'è l'apprendimento automatico?

L'apprendimento automatico è l'uso dell'analisi statistica per aiutare i computer a prendere decisioni e previsioni basate sulle caratteristiche trovate in quei dati. In altre parole, è l'atto di avere un computer in una comprensione astratta di un set di dati esistente (chiamato "modello") e di utilizzare quel modello per analizzare i dati più recenti.

Come funziona?

Utilizzando tecnologie di basso livello nelle piattaforme Apple, Core ML è in grado di offrire strumenti di apprendimento automatico rapidi ed efficienti da implementare nelle tue app. Funziona utilizzando Metal e Accelerate per sfruttare appieno la GPU e la CPU sul dispositivo, garantendo velocità senza interruzioni. Ciò consente anche all'apprendimento automatico di lavorare sul dispositivo anziché richiedere l'accesso a Internet per ogni richiesta.

1. Batch Prediction

Esprime i valori delle funzioni di output dal dato un batch di valori delle funzioni di input. - Documentazione Apple

La previsione dei lotti è degna di nota poiché Apple non l'ha avuta nella prima versione di Core ML. A prima vista, la previsione batch consente di eseguire il modello su un set di dati e ottenere un set di output.

Se avessi un modello Core ML per classificare le immagini sul fatto che contenessero fiori o alberi e volessi classificare più immagini, diciamo 300, dovresti scrivere un for-loop per scorrere tutte le immagini e classificarle regolarmente utilizzando il modello.

In Core ML 2, tuttavia, otteniamo ciò che Apple chiama API Batch Predict. Questo ci permette di fare previsioni multiple su un set di dati senza dover usare for-loops. Se volessi usarlo, chiameresti semplicemente:

modelOutputs = model.prediction (da: modelInputs, opzioni: opzioni)

modelInputs, in questo esempio, è l'insieme di input su cui vorresti eseguire il tuo modello, ma non copriremo ciò che opzioni sono in questo articolo Se vuoi saperne di più su come utilizzare l'API Batch Predict, sentiti libero di consultare la documentazione di Apple. Sebbene questo all'inizio non sembri un grosso problema, in realtà migliora le prestazioni del modello di un enorme 30%!

2. Modelli di allenamento

Usa Crea ML con strumenti familiari come i campi da gioco Swift e macOS per creare e addestrare modelli di apprendimento automatico personalizzati sul tuo Mac. È possibile addestrare i modelli per eseguire attività come riconoscere le immagini, estrarre il significato dal testo o trovare relazioni tra valori numerici. - Documentazione Apple 

Mentre Core ML è sempre stata una piattaforma potente, non è sempre stato facile creare i propri modelli. In passato, era quasi necessario avere familiarità con Python per creare anche i modelli più basilari. Con Core ML 2, abbiamo creato anche ML, un modo semplice per creare i tuoi modelli Core ML.

Creare ML non è solo limitato ai modelli basati sull'immagine, però. Senza nemmeno creare un vero progetto Xcode, puoi allenare diversi tipi di modelli in un parco giochi. Inoltre, è anche possibile testare questi modelli ed esportarli per l'utilizzo in qualsiasi applicazione.

Classificatore di immagini

Con un modello come una rete neurale convoluzionale, Crea ML può aiutarti a creare un classificatore di immagini personalizzato per identificare determinate caratteristiche da una determinata immagine. Ad esempio, potresti addestrarlo per distinguere tra un albero e un fiore. 

Oppure potresti usarlo per applicazioni più complesse come l'identificazione del tipo di pianta o di una specifica razza di cane. In base al numero di immagini, la precisione aumenta, come con qualsiasi modello di apprendimento automatico.

Controlla il mio post qui su Envato Tuts + per imparare come creare un classificatore di immagini in Crea ML.

Text Classifier (NLP)

Oltre a essere uno strumento per la classificazione delle immagini, Create ML può anche aiutarti a creare modelli di apprendimento automatico basati su testo. Ad esempio, è possibile creare un modello che indichi il sentimento in una frase particolare. Oppure puoi creare un filtro antispam che usi caratteristiche del testo (cioè le parole usate) per verificare se una stringa è "spam" o "non spam".

Classificatore di dati tabulari 

Talvolta, diversi dati o funzionalità possono essere utili quando si tenta di classificare i dati. I fogli di calcolo sono un esempio molto forte di questo e Crea ML può creare modelli Core ML basati su CSV file pure.

Ora, i fogli di calcolo Excel possono essere utilizzati per creare un modello che prevede il mercato azionario in base all'acquisto e alla vendita di modelli; o forse, prevede il genere del libro basato sul nome dell'autore, il titolo e il numero di pagine.

3. Riduzioni delle dimensioni del modello

Raggruppare il tuo modello di apprendimento automatico nella tua app è il modo più semplice per iniziare con Core ML. Man mano che i modelli diventano più avanzati, possono diventare grandi e occupare uno spazio di archiviazione significativo. Per un modello basato sulla rete neurale, prendere in considerazione la riduzione del suo ingombro utilizzando una rappresentazione di precisione inferiore per i relativi parametri di peso. - Documentazione Apple

Con l'introduzione di Core ML 2 e iOS 12, gli sviluppatori sono ora in grado di ridurre le dimensioni dei loro modelli già formati di oltre il 70% rispetto alle dimensioni originali. Le dimensioni del modello possono essere un problema reale: potresti aver notato che alcune delle tue app diventano sempre più grandi ad ogni aggiornamento!

Ciò non sorprende perché gli sviluppatori stanno costantemente migliorando i loro modelli di apprendimento automatico e, come affermato nella documentazione per sviluppatori, i modelli più avanzati occupano più spazio di archiviazione, rendendo l'app effettiva più grande. Se l'app diventa troppo grande, alcuni utenti potrebbero interrompere il download degli aggiornamenti e potrebbero interrompere l'utilizzo di queste app.

Fortunatamente, ora hai la possibilità di farlo in quantontize un modello, che consente alle sue dimensioni di diminuire in modo significativo, in base alla quantità di qualità che sei disposto a rinunciare. La quantizzazione non è l'unico modo per andare; ci sono anche altri modi!

Converti in Half-Precision

Gli strumenti Core ML offrono agli sviluppatori un modo per ridurre i pesi a metà dimensione. Se non sai cosa pesi sono ancora, va bene; tutto quello che devi sapere è che sono direttamente correlati alla precisione del modello. Come avrai intuito, la mezza misura equivale alla mezza precisione.

Modelli prima che Core ML 2 avesse solo l'opzione di essere rappresentato con 32 bit, il che è ottimo per la precisione, ma non ideale per le dimensioni di archiviazione. La precisione a metà riduce questo a soli 16 bit e può ridurre notevolmente le dimensioni del modello. Se vuoi farlo ai tuoi modelli, visita la documentazione per una guida completa.

Scarica e compila

È fantastico avere i tuoi modelli sul tuo dispositivo perché aumenta la sicurezza e le prestazioni e non dipende da una solida connessione Internet. Tuttavia, se la tua app utilizza più modelli per creare un'esperienza senza interruzioni per l'utente, tutti questi modelli potrebbero non essere necessari contemporaneamente.

Puoi anche scaricare questi modelli in base alle necessità e compilarli sul posto anziché raggrupparli con la tua app e aumentare la quantità di spazio che l'app occupa sul dispositivo dell'utente. È anche possibile scaricare questi modelli e memorizzarli temporaneamente sul dispositivo dell'utente per evitare di scaricare più volte lo stesso modello.

Conclusione

In questo articolo, hai imparato a conoscere le ultime e migliori tecnologie in Core ML e come si confronta con la versione precedente dell'API dell'anno precedente. Mentre sei qui su Envato Tuts +, dai un'occhiata ad altri nostri fantastici contenuti di apprendimento automatico!