tensorflow
Nel novembre 2015, Google ha rilasciato il suo framework open source per machine learning, TensorFlow. La piattaforma supporta deep learning, reti neurali e calcoli numerici su CPU, GPU e cluster di GPU. Uno dei maggiori vantaggi di TensorFlow è la community open source di sviluppatori, data scientist e data engineer che contribuiscono al suo repository. La versione attuale di TensorFlow è disponibile su GitHub insieme alle note di rilascio. Attualmente TensorFlow è di gran lunga il motore di AI più utilizzato.
Che cos'è TensorFlow?
TensorFlow è una libreria open-source per il calcolo numerico, il machine learning su larga scala, il deep learning e altre attività di analisi statistica e predittiva. Questo tipo di tecnologia l'implementazione di modelli di machine learning più semplice e veloce per gli sviluppatori, assistendoli nel processo di acquisizione dei dati, nella formulazione di previsioni su larga scala e nel successivo affinamento dei risultati.
Cosa fa esattamente TensorFlow? Può addestrare ed eseguire reti neurali profonde per operazioni quali la classificazione delle cifre scritte a mano, il riconoscimento delle immagini, il word embedding (rappresentazione distribuita delle parole) e l'elaborazione del linguaggio naturale (NLP). Il codice contenuto nelle sue librerie software può essere aggiunto a qualsiasi applicazione per aiutarla ad apprendere queste attività.
Le applicazioni TensorFlow possono essere eseguite sia su CPU convenzionali (unità centrali di elaborazione), sia su GPU (unità di elaborazione grafica ad alte prestazioni). Essendo stato sviluppato da Google, TensorFlow funziona anche sulle unità di elaborazione tensoriale (TPU) dell'azienda, progettate appositamente per velocizzare le operazioni di TensorFlow.
Ti starai forse chiedendo in che linguaggio è scritto TensorFlow. Sebbene utilizzi Python come API di front-end per la creazione di applicazioni basate sul framework, in realtà ha wrapper in diversi linguaggi, tra cui C++ e Java. Questo significa che potrai addestrare e implementare il tuo modello di machine learning rapidamente, indipendentemente dal linguaggio o dalla piattaforma che utilizzi.
Clicca qui per ulteriori FAQ sullo sviluppo di modelli con TensorFlow.
Storia di TensorFlow
Google ha rilasciato TensorFlow per la prima volta nel 2015 sotto la licenza Apache 2.0. Il suo predecessore era un framework closed-source di Google chiamato DistBelief, che ha fornito un banco di prova per l'implementazione del deep learning.
Le prime TPU di Google sono state presentate al pubblico nel 2016 e utilizzate internamente insieme a TensorFlow per alimentare alcune applicazioni e servizi online dell'azienda. Tra questi, l'algoritmo di ricerca RankBrain di Google e la tecnologia di mappatura di Street View.
All'inizio del 2017, Google TensorFlow ha raggiunto lo stato di Release 1.0.0. Un anno dopo, Google ha reso disponibile la seconda generazione di TPU agli utenti della piattaforma Google Cloud per consentire loro di addestrare ed eseguire i propri modelli di machine learning.
Google ha rilasciato la versione più recente, TensorFlow 2.0, nell'ottobre 2019. Sulla base del feedback degli utenti, Google ha modificato il framework per migliorarlo e renderlo più facile da utilizzare. Ad esempio, TensorFlow ora utilizza l'API Keras, relativamente semplice, per l'addestramento dei modelli.
Chi ha creato TensorFlow?
Come abbiamo visto, TensorFlow è stato sviluppato da Google, che continua a possedere e a mantenere il framework. È stato creato dai ricercatori di Google Brain, un team che svolge ricerche volte a favorire il progresso di aree chiave dell'intelligenza artificiale e a promuovere una migliore comprensione teorica del deep learning.
Il team di Google Brain ha progettato TensorFlow in modo che potesse lavorare indipendentemente dall'infrastruttura informatica di Google, ma avere alle spalle un tale gigante commerciale ha apportato numerosi vantaggi al progetto. Oltre a finanziarne il rapido sviluppo, nel corso degli anni Google ha anche migliorato TensorFlow per garantirne la facilità di distribuzione e di utilizzo.
Google ha scelto di rendere TensorFlow un framework open-source con l'obiettivo di accelerare lo sviluppo dell'AI. Trattandosi di un progetto basato su community, tutti gli utenti possono contribuire a migliorare la tecnologia, e tutti ne condividono i benefici.
Come funziona TensorFlow?
TensorFlow combina vari modelli e algoritmi di machine learning e deep learning (o networking neurale) e li rende accessibili tramite un'interfaccia comune.
Permette agli sviluppatori di creare grafici dataflow con nodi computazionali che rappresentano operazioni matematiche. Ciascuna connessione tra i nodi rappresenta vettori o matrici multidimensionali, creando quelli che vengono chiamati "tensori".
Anche se Python fornisce l'API front-end per TensorFlow, le operazioni matematiche vere e proprie non vengono eseguite in Python. Sono binari C++ ad alte prestazioni a svolgerle dietro le quinte. Python si limita a dirigere il traffico e a collegare tra loro le varie parti di codice tramite astrazioni di programmazione di alto livello.
Le applicazioni TensorFlow possono essere eseguite praticamente in qualsiasi ambiente, inclusi dispositivi iOS e Android, macchine locali o un cluster in cloud, oltre che su CPU o GPU (o sulle TPU personalizzate di Google se si utilizza Google Cloud).
TensorFlow include set di API sia di alto che di basso livello. Google consiglia le API di alto livello per semplificare lo sviluppo delle pipeline di dati e la programmazione delle applicazioni, mentre le API di basso livello (TensorFlow Core) sono utili per il debug delle applicazioni e la sperimentazione.
A cosa serve TensorFlow? Cosa si può fare con TensorFlow?
TensorFlow è stato progettato per semplificare il processo di sviluppo ed esecuzione di applicazioni analitiche avanzate per utenti quali data scientist, statistici e sviluppatori di modelli predittivi.
Il framework è ampiamente utilizzato da aziende di varie tipologie e dimensioni per automatizzare i processi e sviluppare nuovi sistemi, ed è particolarmente utile per applicazioni di elaborazione parallela su larghissima scala come le reti neurali. È stato inoltre impiegato in esperimenti e test sui veicoli a guida autonoma.
Come ci si potrebbe aspettare, Google, l'azienda madre di TensorFlow, utilizza il framework anche per attività operative interne, come il miglioramento delle capacità di recupero delle informazioni del suo motore di ricerca e l'alimentazione di applicazioni per la generazione automatica di risposte email, la classificazione delle immagini e il riconoscimento ottico dei caratteri.
Uno dei vantaggi di TensorFlow è la sua astrazione, che consente agli sviluppatori di concentrarsi sulla logica generale dell'applicazione, lasciando che sia il framework a occuparsi dei dettagli. Mette inoltre a disposizione degli sviluppatori di applicazioni TensorFlow strumenti di autoanalisi e di debug.
La suite di visualizzazione TensorBoard ha una dashboard interattiva su web che consente di verificare e profilare il modo in cui vengono eseguiti i grafici. Esiste poi una modalità di esecuzione "eager" che consente di valutare e modificare ogni operazione del grafico in maniera separata e trasparente, anziché creare l'intero grafico come un oggetto singolo opaco e valutarlo nel suo complesso.
Databricks Runtime for Machine Learning include TensorFlow e TensorBoard e consente utilizzare queste librerie senza installare alcun pacchetto.
Vediamo ora come utilizzare TensorFlow.
Come installare TensorFlow
Istruzioni complete e tutorial sono disponibili su tensorflow.org, ma vediamo di seguito alcune nozioni di base.
Requisiti di sistema:
- Python 3.7+
- pip 19.0 o successivo (richiede il supporto a manylinux2010 e TensorFlow 2 richiede una versione più recente di pip)
- Ubuntu 16.04 o successivo (64 bit)
- macOS 10.12.6 (Sierra) o versione successiva (64 bit) (senza supporto GPU)
- Windows 7 o successivo (64 bit)
Requisiti hardware:
- A partire da TensorFlow 1.6, il codice binario utilizza istruzioni AVX che potrebbero non funzionare sulle CPU più vecchie.
- Il supporto a GPU richiede una scheda CUDA® (Ubuntu e Windows)
#1. Installa l'ambiente di sviluppo Python sul sistema
Verifica se l'ambiente Python è già configurato:
python3 - -version
pip3 - -version
Se questi pacchetti sono già installati, vai al passaggio successivo.
In caso contrario, installa Python, il gestore di pacchetti pip e venv.
Se non stai operando in un ambiente virtuale, usa python3 -m pip per i comandi seguenti. In questo modo aggiornerai e userai il pip di Python anziché quello di sistema.
#2. Crea un ambiente virtuale (consigliato)
Gli ambienti virtuali Python sono utilizzati per isolare l'installazione del pacchetto dal sistema.
#3. Installa il pacchetto pip TensorFlow
Scegli uno dei seguenti pacchetti TensorFlow da installare da PyPI:
- tensorflow — Ultima versione stabile con supporto per CPU e GPU (Ubuntu e Windows)
- tf-nightly —Versione in anteprima (instabile). Ubuntu e Windows includono il supporto per GPU
- tensorflow==1.15 — La versione finale di TensorFlow 1.x.
Verifica l'installazione. Se viene restituito un tensore, l'installazione di TensorFlow è avvenuta correttamente.
Nota: alcuni meccanismi di installazione richiedono l'URL del pacchetto TensorFlow Python. Il valore specificato dipende dalla versione di Python in uso.
Come aggiornare TensorFlow
Il gestore di pacchetti pip offre un metodo semplice per aggiornare TensorFlow, indipendentemente dall'ambiente.
Prerequisiti:
- Python 3.6-3.9 installato e configurato (verificare la versione di Python prima di iniziare).
- TensorFlow 2 installato.
- Il gestore di pacchetti pip versione 19.0 o superiore (verificare la versione di pip e aggiornarla se necessario).
- Accesso alla riga di comando/al terminale o all'ambiente notebook.
Per aggiornare TensorFlow a una versione più recente:
#1. Apri il terminale (CTRL+ALT+T).
#2. Verifica la versione di TensorFlow attualmente installata:
pip3 show tensorflow
Il comando mostra informazioni riguardo al pacchetto, compresa la versione.
#3. Aggiorna TensorFlow a una versione più recente con:
pip3 install - -upgrade tensorflow===<version>
Assicurati che la versione che selezioni sia compatibile con la tua release di Python, altrimenti non verrà installata. Per l'ambiente notebook, utilizza il seguente comando e riavvia il kernel dopo che sarà stato completato:
!pip install - -upgrade tensorflow==<version>
In questo modo si rimuove automaticamente la vecchia versione insieme alle dipendenze e si installa l'aggiornamento più recente.
#4. Verificare la versione aggiornata eseguendo:
pip3 show tensorflow
Che cos'è TensorFlow Lite?
Nel 2017, Google ha introdotto una nuova versione di TensorFlow chiamata TensorFlow Lite. TensorFlow Lite è ottimizzato per l'uso su dispositivi embedded e mobili. È un framework di deep learning open-source, pronto per la produzione e multipiattaforma, che converte un modello TensorFlow pre-addestrato in un formato speciale che può essere ottimizzato per la velocità o l'archiviazione.
Per essere certi di utilizzare la versione giusta per ogni scenario, è necessario sapere quando usare TensorFlow e quando invece preferire TensorFlow Lite. Ad esempio, se si deve distribuire un modello di deep learning ad alte prestazioni in un'area priva di una buona connessione di rete, si userà TensorFlow Lite per ridurre le dimensioni del file.
Se si sta sviluppando un modello per i dispositivi edge, è necessario che sia leggero, in modo da utilizzare uno spazio minimo e aumentare la velocità di download sulle reti con minore larghezza di banda. Per ottenere questo risultato, è necessaria un'ottimizzazione che riduca le dimensioni del modello o migliori la latenza, obiettivi che TensorFlow Lite raggiunge tramite la quantizzazione e il pruning dei pesi.
I modelli risultanti sono abbastanza leggeri da poter essere implementati per un'inferenza a bassa latenza su dispositivi edge come telefoni cellulari Android o iOS, o dispositivi embedded basati su Linux come Raspberry Pi o microcontrollori.TensorFlow Lite utilizza anche diversi acceleratori hardware per migliorare velocità e accuratezza e ottimizzare il consumo energetico, elementi importanti per eseguire inferenze a livello di edge.
Che cos'è uno strato denso in TensorFlow?
Gli strati densi sono utilizzati nella creazione di reti neurali sia superficiali sia profonde. Le reti neurali artificiali sono architetture che ricordano il cervello: sono costituite da un sistema di neuroni e sono in grado di apprendere attraverso esempi invece di essere programmate con regole specifiche.
Nel deep learning, vengono utilizzati più strati per estrarre funzioni di livello superiore dall'input grezzo; quando la rete è composta da più strati, si parla di rete neurale stratificata. Ciascuno di questi strati è costituito da nodi che combinano gli input provenienti dai dati con una serie di coefficienti chiamati pesi che li amplificano o li smorzano.
Per la sua versione 2.0 TensorFlow ha adottato un'API di deep learning chiamata Keras che gira su TensorFlow e fornisce una serie di strati precostituiti per diverse architetture di rete neurale e diversi scopi. Tra questi ci sono gli strati densi. Uno strato denso ha una connessione profonda, il che significa che ogni neurone riceve input da tutti i neuroni dello strato precedente.
Gli strati densi sono in genere utilizzati per modificare dimensioni, rotazione, scala e traslazione dei vettori generati. Hanno la capacità di apprendere funzioni da tutte le funzioni combinate dello strato precedente.
Qual è la differenza tra TensorFlow e Python?
TensorFlow è un framework open source di machine learning, mentre Python è un linguaggio di programmazione molto diffuso. È uno dei linguaggi utilizzati in TensorFlow. Python è il linguaggio raccomandato per TensorFlow, che tuttavia utilizza anche C++ e JavaScript.
Python è stato sviluppato per aiutare i programmatori a scrivere codice chiaro e logico per progetti di qualsiasi dimensione. Viene spesso utilizzato per siti web e software, per automatizzare attività e per eseguire analisi dei dati. Ciò rende relativamente semplice l'apprendimento di TensorFlow per i principianti.
Una domanda utile è: quale versione di Python supporta TensorFlow? Alcune versioni di TensorFlow sono compatibili solo con versioni specifiche di Python; ad esempio, la 2.0 richiede Python dalla 3.7 alla 3.10. Verifica i requisiti prima di installare TensorFlow.
Cosa sono PyTorch e TensorFlow?
TensorFlow non è l'unico framework per il machine learning esistente. Esistono diverse alternative, come PyTorch, che presentano analogie e rispondono in buona parte alle stesse esigenze. Qual è dunque la differenza effettiva tra TensorFlow e PyTorch?
PyTorch e TensorFlow sono solo due dei framework sviluppati dalle aziende tecnologiche per l'ambiente di deep learning di Python, che aiuta computer simili all'uomo a risolvere i problemi del mondo reale. La differenza fondamentale tra PyTorch e TensorFlow sta nel modo in cui eseguono il codice. PyTorch è più strettamente integrato con il linguaggio Python.
Come abbiamo visto, TensorFlow offre solide capacità di visualizzazione, opzioni di distribuzione pronte per la produzione e supporto per le piattaforme mobili. Pur non essendo altrettanto affermato, PyTorch è comunque popolare per la sua semplicità e facilità d'uso, oltre che per i grafici computazionali dinamici e l'uso efficiente della memoria.
La risposta alla domanda se sia meglio TensorFlow o PyTorch dipende da ciò che si vuole ottenere. Se l'obiettivo è costruire prodotti collegati all'AI, TensorFlow sarà la scelta più appropriata, mentre PyTorch è più adatto agli sviluppatori orientati alla ricerca. PyTorch è una buona scelta se si vogliono avviare progetti in tempi brevi, ma TensorFlow ha capacità più robuste e può quindi gestire progetti più grandi e flussi di lavoro più complessi.
Aziende che utilizzano TensorFlow
Secondo il sito web di TensorFlow, oltre a Google ci sono altre grandi aziende che utilizzano il framework. Tra queste, Airbnb, Coca-Cola, eBay, Intel, Qualcomm, SAP, Twitter, Uber, lo sviluppatore di Snapchat Snap Inc. e la società di consulenza sportiva STATS LLC.
Le cinque migliori alternative a TensorFlow
1. DataRobot
DataRobot è un framework per il machine learning basato sul cloud, progettato per aiutare le aziende a estendere le loro capacità di Data Science implementando modelli di machine learning e creando applicazioni di AI avanzate.
Il framework consente di utilizzare e ottimizzare le più valide tecniche di modellazione open source di R, Python, Spark, H2O, VW e XGBoost. Automatizzando l'analisi predittiva, DataRobot aiuta data scientist e analisti a produrre modelli predittivi più accurati.
È disponibile una libreria in continua espansione di funzioni, algoritmi e valori parametrici specifici per ciascun modello. Inoltre, grazie alla creazione automatica di modelli ibridi, gli utenti possono facilmente trovare e combinare più algoritmi e prototipi preimpostati per l'estrazione delle funzioni e la preparazione dei dati (senza bisogno di procedere per tentativi ed errori).
2. PyTorch
Sviluppato dal team di Facebook e rilasciato con licenza open-source su GitHub.com nel 2017, PyTorch è uno dei framework di deep learning più recenti. Come accennato in precedenza, presenta diverse analogie con TensorFlow, tra cui componenti che usano l'accelerazione hardware e un modello di sviluppo altamente interattivo per il design-as-you-go.
PyTorch ottimizza le prestazioni sfruttando il supporto nativo di Python per l'esecuzione asincrona.I vantaggi includono grafici dinamici integrati e una community più solida di quella di TensorFlow.
Tuttavia, PyTorch non fornisce un framework per distribuire i modelli addestrati direttamente online e per la produzione è necessario un server API. Per la visualizzazione, inoltre, è necessario uno strumento di terze parti, Visdom, le cui funzionalità sono piuttosto limitate.
3. Keras
Keras è una libreria open-source di reti neurali di alto livello, progettata per essere semplice da usare, modulare e facilmente estendibile. È scritta in Python e supporta come back-end diversi motori computazionali per reti neurali, anche se il suo back-end primario (e predefinito) è TensorFlow e il suo supporter principale è Google.
Abbiamo già menzionato l'API di alto livello TensorFlow Keras; inoltre, Keras gira anche su Theano. Ha una serie di moduli autonomi che si possono combinare, inclusi strati neurali, funzioni di costo, ottimizzatori, schemi di inizializzazione, funzioni di attivazione e schemi di regolarizzazione.
Keras supporta un'ampia gamma di opzioni di distribuzione della produzione e offre un robusto supporto per l'esecuzione su più GPU e l'addestramento distribuito. Tuttavia, il supporto di community è minimo e la libreria viene tipicamente utilizzata per set di dati di piccole dimensioni.
4. MXNet
Apache MXNet è un framework software open-source per il deep learning utilizzato per definire, addestrare e distribuire reti neurali profonde su un'ampia gamma di dispositivi. Ha il privilegio di essere stato adottato da Amazon come framework di deep learning principale su AWS.
In grado di scalare in modo quasi lineare su più GPU e più macchine, permette un rapido addestramento dei modelli, e supporta un modello di programmazione flessibile che consente agli utenti di combinare programmazione simbolica e imperativa per ottenere massima efficienza e produttività.
MXNet supporta le API di diversi linguaggi di programmazione, tra cui Python, C++, Scala, R, JavaScript, Julia, Perl e Go (anche se le sue API native non sono semplici come quelle di TensorFlow).
5. CNTK
CNTK, noto anche come Microsoft Cognitive Toolkit, è un toolkit unificato per il deep learning che utilizza una struttura a grafici per descrivere il flusso di dati come una serie di passaggi computazionali (proprio come TensorFlow, anche se non è altrettanto facile da imparare o da distribuire).
È utilizzato perlopiù per la creazione di reti neurali di deep learning ed è in grado di gestire rapidamente queste attività. CNTK consente agli utenti di realizzare e combinare facilmente i tipi di modelli più diffusi, come le reti neurali profonde (DNN) feed-forward, le reti convoluzionali (CNN) e le reti ricorrenti (RNN/LSTM).
CNTK dispone di un'ampia gamma di API (Python, C++, C#, Java) e può essere incluso come libreria nei programmi Python, C# o C++, oppure utilizzato come strumento autonomo di apprendimento automatico attraverso il proprio linguaggio di descrizione del modello (BrainScript). Supporta i sistemi operativi Linux o Windows a 64 bit.
Nota: la versione 2.7 è stata l'ultima release principale di CNTK e non è previsto lo sviluppo di nuove funzionalità.
Perché dovrei utilizzare TensorFlow?
TensorFlow presenta numerosi vantaggi. Il framework open-source per il machine learning fornisce un eccellente supporto architetturale che consente di distribuire facilmente framework computazionali su una varietà di piattaforme. TensorFlow beneficia della reputazione di Google ed è stato adottato da molti grandi nomi per svolgere attività di intelligenza artificiale.
D'altro canto, alcuni dettagli dell'implementazione di TensorFlow rendono talvolta difficile ottenere risultati di addestramento dei modelli totalmente deterministici. Tuttavia, il team sta valutando la possibilità di inserire ulteriori controlli per influenzare il determinismo in un flusso di lavoro.
Iniziare è semplice, soprattutto con TensorFlow su Databricks, un'integrazione out-of-the-box tramite Databricks Runtime for Machine Learning. È possibile rendere operativi dei cluster in pochi secondi e beneficiare di una serie di API di basso e alto livello.