Motivi per scegliere PyTorch per il deep learning
Deep Learning e Machine Learning sono state le parole più in voga tra tutti negli ultimi due anni e c'è una spiegazione perfetta per questo.
Il machine learning ha consentito ai sistemi di apprendere dall'esperienza, mentre il deep learning ha portato il machine learning su scala ancora più vasta con l'uso di set di dati estesi. Questa spinta in ML e DL ha dato luogo a vari linguaggi di programmazione s e le librerie che è venuto su e ha permesso programmatori , ricercatori e scienziati di dati per raggiungere l'impensabile. Alcuni dei più forti contendenti per la migliore libreria Deep Leaning sono TensorFlow e PyTorch . Per ora, ci concentreremo maggiormente su PyTorch.
PyTorch
Facebook ha rilasciato PyTorch per la scena di programmazione nel 2016 , che si basa sulla libreria Torch di Lua .
PyTorch è una libreria di machine learning gratuita e open source ed è attualmente alla v1.4 . PyTorch è uscito da quasi tre anni e ha subito molti miglioramenti per essere in una posizione migliore. PyTorch è stato creato per essere veloce e più Pythonic rispetto al resto della concorrenza. Include anche il supporto per C, C ++ e Tensor computing .
Google Trends - Interesse di PyTorch nel tempo
Motivi per scegliere PyTorch per il deep learning
Prima di saltare ai motivi per cui non dovresti provare PyTorch, di seguito sono riportati alcuni dei progetti e delle librerie di Deep Learning unici ed entusiasmanti che PyTorch ha contribuito a dare alla luce:
● CheXNet: rilevamento della polmonite a livello radiologo su raggi X del torace con apprendimento profondo.
● Orizzonte: una piattaforma per l'apprendimento per rinforzo applicato (Applied RL)
● PYRO : Pyro è un linguaggio di programmazione probabilistico universale (PPL) scritto in Python e supportato da PyTorch sul backend.
● Kaolin di NVIDIA come libreria PyTorch per accelerare il 3D Deep Learning
● TorchCV per implementare la visione artificiale nei tuoi progetti
● PyDLT come set di strumenti per il deep learning
● La libreria fastai ottimizza il processo di formazione della rete neurale
● e molto altro ancora.
Questi sono alcuni framework e progetti basati su TensorFlow e PyTorch. Puoi trovare di più su Github e sui siti web ufficiali di TF e PyTorch.
In un mondo di TensorFlow , PyTorch è in grado di reggere il confronto con i suoi punti di forza. Di seguito sono riportati alcuni dei punti salienti che spiegano perché PyTorch sarebbe adatto per i tuoi progetti di deep learning:
1. PyTorch è più pitonico
PyTorch è un framework di riferimento che ci consente di scrivere codice in un modo più pitonico . Inoltre, il tipo di dinamismo che supporta utilizzando il codice Python ingenuo è notevole.
PyTorch tende a inclinarsi maggiormente verso Python rispetto a qualsiasi altra libreria. È perché PyTorch è relativamente facile da capire e sembra più naturale , nativo e in linea con il codice Python .
Per chiunque abbia lavorato con Python, si sentirà a proprio agio con tutto con PyTorch, come funzioni di perdita, ottimizzatori, trasformazioni, caricatori di dati e molte altre classi.
Il codice per ogni esempio di PyTorch (Vision e NLP) condivide una struttura comune:
2. Facile da usare
Se confrontato con PyTorch, TensorFlow ha una curva di apprendimento relativamente più ripida. I programmatori Python avranno bisogno di meno tempo per adattarsi a PyTorch poiché molto probabilmente sembrerà un'estensione del framework di Python. Il debug facile e un ottimo set di API semplici giocano un ruolo fondamentale nel rendere PyTorch più facile da usare per i programmatori.
3. Biblioteche utili
Con un grande supporto della comunità arriva un grande entusiasmo e contributi alla comunità. Utilizzando PyTorch, i programmatori sono andati avanti e hanno creato alcuni progetti che sono disponibili per chiunque sia interessato a dare un'occhiata. Di seguito è riportato un elenco combinato di una manciata di questi progetti in vari domini come Visione artificiale , elaborazione del linguaggio naturale e librerie generative:
● pro_gan_pytorch per sfruttare le funzionalità di ProGAN
● BoTorch per l'utilizzo delle ottimizzazioni bayesiane
● ParlAI per la condivisione, formazione e sperimentazione di modelli di dialogo
● OpenNMT-py per l'implementazione del sistema di traduzione automatica neurale
● MUSE per incorporamenti di parole multilingue
● skorch per fondere il codice scikit-learn con PyTorch
4. Parallelismo dei dati senza sforzo
Il parallelismo dei dati in PyTorch è efficiente e consente di dividere i dati in batch , che vengono quindi inviati a più GPU per l'elaborazione. Utilizzando questa tecnica, PyTorch può spostare una parte significativa del carico di lavoro dalla CPU alla GPU. Per il parallelismo dei dati , utilizza la classe torch.nn.DataParallel.
Distributed Data-Parallel è una funzionalità di PyTorch che puoi combinare con Data-Parallel per gestire casi d'uso che richiedono set di dati di grandi dimensioni e modelli sufficientemente grandi per una singola GPU. Quando tutte le attività sul pool di GPU sono terminate, il risultato viene raccolto, unito e inviato di nuovo da Data-Parallel.
5. Eccellente per i ricercatori
PyTorch è un dono di Dio per i ricercatori in quanto ha dimostrato di essere utilizzato da almeno il 70% dei ricercatori che lavorano sui framework. Nonostante sia la scelta leader del settore per lo sviluppo di applicazioni, TensorFlow non ha ancora raggiunto PyTorch in questo aspetto. Uno dei motivi alla base di ciò potrebbe essere la semplicità e la facilità d'uso che PyTorch ha da offrire con prestazioni migliori.
6. Mobile Ready
A partire dalla v1.3 , PyTorch ha aggiunto il supporto per la distribuzione su dispositivi Android e iOS . La funzione offre tutti i vantaggi di PyTorch ai dispositivi periferici per soddisfare le applicazioni che richiedono latenze inferiori. L'obiettivo alla base di PyTorch mobile è ridurre il ciclo di sviluppo supportando le API di base per piattaforme mobili, eliminando la necessità di esportare in framework mobili come Caffe2. Ciò consente una significativa riduzione dell'ingombro sul dispositivo. È stato inoltre aggiunto il supporto per la messa a punto precisa degli script di compilazione per un maggiore controllo.
Inizia con PyTorch Mobile:
Inizia su Android
Inizia su iOS
7. Debug facile
PyTorch è stupidamente facile da eseguire il debug quando hai la possibilità di accedere a ciascuna riga e al solito modo di stampare dopo ogni riga. La ciliegina sulla torta è che gli oggetti e il funzionamento in PyTorch contengono i dati effettivi e non i riferimenti simbolici, rendendo la vita più facile ai programmatori. Alcuni dei debugger standard per PyTorch sono:
● ipdb
● pdb
● PyCharm
Supponiamo, ad esempio, di poter utilizzare la funzione "pdb.set_trace ()" di pdb per inserire punti di interruzione nel codice per eseguire il drill-down alla radice dell'errore. Inoltre, i grafici computazionali dinamici di PyTorch consentono la modifica dinamica e il debug rapido durante l'esecuzione del codice.
8. Supporto per ONNX
Open Neural Network Exchange funge da ecosistema open source per l'intelligenza artificiale fornendo un terreno comune ai programmatori di intelligenza artificiale per lavorare in modo intercambiabile su una varietà di framework, strumenti e librerie. ONNX lo fa fornendo un formato di file standard che funziona su più framework e hardware.
Quando si tratta di PyTorch, ONNX viene fornito con il supporto integrato per PyTorch e una vasta gamma di altri framework come Caffe2, MXNet, TensorFlow e altri. ONNX rende più facile per i programmatori AI esportare e migrare i loro modelli PyTorch in un formato aperto che altri framework possono integrare.
9. Supporto per grafici computazionali dinamici
Visualizzando ogni modello come un grafico aciclico diretto, PyTorch offre un approccio dinamico alla definizione dei grafici di calcolo. Mentre altri framework consentono la definizione di un grafico statico, PyTorch supporta la creazione di un grafico di calcolo dinamico in cui sei libero di manipolarlo in movimento. Uno di questi elementi che beneficia maggiormente di questo aspetto dinamico di PyTorch sono le reti neurali ricorrenti tra molti altri.
10. Forte sostegno della comunità
PyTorch offre anche un eccellente supporto per la comunità . La home page di PyTorch ha una documentazione dettagliata su ciascuna delle sue caratteristiche. Tutti gli ultimi aggiornamenti alla libreria sono ben spiegati. Con ogni nuova aggiunta, è possibile trovare anche tutorial di supporto e risorse correlate per ottenere quella preziosa sensazione pratica.
PyTorch Forum è un luogo eccellente e altamente raccomandato per i neofiti per pubblicare le loro domande e per i veterani per condividere le loro idee con altri programmatori. Con oltre cento post al giorno, la community è piuttosto attiva e incoraggia le persone a entrare a far parte di PyTorch.
Ecco alcune delle comunità di sviluppatori di PyTorch , risorse e tutorial per contribuire, apprendere e ottenere risposte alle tue domande:
● Modulo Discussione PyTorch
● Comunità PyTorch Slack
● Esempi di PyTorch
● PyTorch Docs
● Github Pytorch Tutorial
● Cheatsheet per principianti di PyTorch
● Note sulla versione di PyTorch
● Apprendimento approfondito con Pytorch: un blitz di 60 minuti
● Utilizzo dei dati del tutorial da Google Drive in Colab
● Documenti ed esercitazioni in cinese
● Tutorial in coreano
Conclusione
Con un vasto numero di funzionalità intuitive per i programmatori di Deep Learning, PyTorch ha molto da offrire alle persone con una vasta gamma di livelli di abilità. Nonostante fornisca un facile punto di accesso, PyTorch non è da prendere alla leggera in quanto offre funzionalità che non solo offrono prestazioni migliori in determinati aspetti, ma offrono anche funzionalità uniche aggiuntive. Abbiamo discusso alcune delle funzionalità di PyTorch più comunemente discusse per aiutarti a fare quel salto a PyTorch su cui eri così scettico.
Letture più interessanti -
Spero che tu abbia trovato utile questo articolo! Di seguito sono riportate alcune letture interessanti spero che piacciano anche a te -
Circa l'autore
Claire D . è un Content Crafter e Marketer presso Digitalogy , un mercato di approvvigionamento tecnologico e di matchmaking personalizzato che collega le persone con sviluppatori e designer pre-selezionati e di prim'ordine in base alle loro esigenze specifiche in tutto il mondo. Connettiti con Digitalogy su Linkedin , Twitter , Instagram .