Inizia a usare Apache MXNet in Amazon Linux
Inizia a usare Apache MXNet in Ubuntu

Apache MXNet è un framework agile, flessibile ed estremamente scalabile che supporta i migliori modelli di apprendimento approfondito, tra cui reti neurali convoluzionali e reti di memoria a lungo e breve termine. Le radici di questo framework affondano nell'ambiente accademico, in particolare dalla collaborazione e dai contributi dei ricercatori di diverse grandi università. È stato progettato per offrire il massimo da elaborazione e apprendimento di dati visuali, audio e linguaggio naturale, modelli generativi e reti neurali ricorrenti e concorrenti.

MXNet permette di definire, addestrare e distribuire reti per un'ampia gamma di casi d'uso, dalle infrastrutture cloud di massa ai dispositivi mobili e connessi. Fornisce un ambiente molto flessibile che supporta molte sintassi di programmazione, nonché la possibilità di utilizzare costrutti di programmazione imperativi e simbolici. Inoltre, MXNet è leggero. Di conseguenza, è in grado di ricalibrare le risorse su più GPU e diverse macchine con la massima efficienza, fattore molto importante quando è il momento di procedere con l'addestramento su grandi set di dati nel cloud.

Iniziare a usare Apache MXNet in AWS è facile: è sufficiente lanciare l'AMI di apprendimento approfondito di AWS, disponibile sia per Amazon Linux sia per Ubuntu.

Contribuisci al progetto Apache MXNet

Partecipa alla community di GitHub

Ottieni codice di esempio, notebook e tutorial nella pagina di progetto di GitHub.

GitHub-Mark-120px-plus
CMU
Sigopt
logo-intel
Nvidia
Semplicità

Programmabilità

Semplifica le definizioni di rete e usa sintassi che già conosci.

Durabilità

Portabilità

Un uso efficiente della memoria permette l'esecuzione dei modelli su un'ampia gamma di dispositivi e piattaforme.

Scalabilità

 Scalabilità

Ridimensiona le risorse su più GPU e host per addestrare modelli sofisticati e di grande portata con la massima rapidità.

Con Apache MXNet, potrai utilizzare sintassi sia imperative sia simboliche. Infatti, il nome stesso "MXNet" deriva da "mixed networks", ovvero "reti miste". Potrai pertanto manipolare i diversi layer di rete con il livello di ottimizzazione consentito dagli operatori simbolici e la flessibilità garantita dalle sintassi imperative (ad esempio con l'utilizzo di loop di interazione e aggiornamento dei parametri). Grazie a questa proprietà, MXNet offre una serie di funzionalità che semplificano il lavoro con i modelli di apprendimento approfondito, per loro natura complessi e distribuiti su più livelli. 

import mxnet as mx

a = mx.nd.zeros((100, 50))

b = mx.nd.ones((100, 50))

c = a + b

c += 1

print(c)

 

import mxnet as mx

net = mx.symbol.Variable('data')

net = mx.symbol.FullyConnected(data=net, num_hidden=128)

net = mx.symbol.SoftmaxOutput(data=net)

texec = mx.module.Module(net)

texec.forward(data=c)

texec.backward()

Inoltre, MXNet supporta un'ampia gamma di sintassi di programmazione per il front-end del framework, tra cui C++, JavaScript, Python, r, Matlab, Julia, Scala e Go. In questo modo è possibile utilizzare sintassi che già conosci per iniziare subito a utilizzare l'apprendimento approfondito. A livello di back-end, il codice viene sempre compilato in C++, perciò le prestazioni saranno sempre costanti indipendentemente dalla sintassi scelta per il front-end. 

c-plus-plus-logo-100px
javascript-logo-100px
python-logo-100px
r-logo-100px
Matlab
julia-logo-100px
scala-logo-100px
go-logo-100px

Le applicazioni di intelligenza artificiale sono sempre più presenti nella vita di tutti i giorni, perciò è più importante che mai poterle distribuire su un'ampia gamma di dispositivi. Questo dato è particolarmente vero quando l'IA viene distribuita su dispositivi mobili e connessi a livello di edge location, in situazioni in cui lo storage ha un costo.

I modelli di Apache MXNet occupano una quantità di memoria limitata. Ad esempio, una rete divisa su un migliaio di layer necessita meno di 4 GB di storage. Anche il framework è portabile da una piattaforma all'altra. La libreria principale (con relative dipendenze) può essere contenuta in un singolo file sorgente C++ e può essere compilata sia per iOS sia per Android. Grazie a JavaScript, può essere eseguita anche su browser. Questa flessibilità consente di distribuire modelli per una grande varietà di casi d'uso, raggiungendo il più ampio pubblico possibile. 

portability-cloud

Cloud

portability-mobile

Dispositivi mobili

portability-browser

Browser

portability-devices

Dispositivi connessi

Apache MXNet si basa su un pianificatore di dipendenze dinamico che analizza le dipendenze di dati in codice seriale e parallelizza le operazioni sia simboliche sia imperative in pochi istanti. Implementa inoltre un layer di ottimizzazione a grafo che rende rapida ed efficiente l'esecuzione di sintassi dichiarativa.

Grazie alla parallelizzazione automatica, la scalabilità di MXNet risulta molto efficiente. Ad esempio, AWS ha contribuito ad addestrare un noto algoritmo di analisi delle immagini, Inception v3, utilizzando un numero crescente di istanze GPU P2 di EC2 per analizzare l'efficienza di MXNet.

mxnet-scale-story-1

La linea rossa rappresenta l'efficienza perfetta, in cui raddoppiando le GPU raddoppia la velocità. Il throughput di MXNet è cresciuto quasi di pari passo al numero di GPU utilizzate. Su una singola istanza da 16 GPU, Apache MXNet ha ottenuto un'efficienza del 91%.

Tuttavia, su reti di grandi dimensioni, potrebbe risultare più utile distribuire la risorse su cluster di istanze P2. La stessa analisi comparativa in questo scenario mostra un livello di efficienza solo lievemente minore con l'aumento esponenziale delle GPU impiegate.

mxnet-scale-story-2

Non devi però accettare per forza ciecamente i nostri risultati. Uno dei vantaggi del cloud è che puoi fare tutte le prove che desideri utilizzando direttamente il tuo codice. La nostra analisi comparativa è disponibile pubblicamente su GitHub. Ti consigliamo di sperimentarne il funzionamento e scegliere di conseguenza quali risultati desideri ottenere. Inoltre, è disponibile un modello di AWS CloudFormation con cui è più semplice avviare la capacità necessaria per la specifica applicazione. 

Iniziare a usare Apache MXNet in AWS è semplice: visita AWS Marketplace e avvia l'AMI di apprendimento approfondito di AWS.

Questa AMI fornisce la build stabile più recente di MXNet e molti altri strumenti e framework di apprendimento approfondito senza alcun costo aggiuntivo. I costi saranno calcolati in base all'utilizzo di EC2.