MindSpore Di Huawei: Un Nuovo Concorrente Per TensorFlow E PyTorch?

Sommario:

MindSpore Di Huawei: Un Nuovo Concorrente Per TensorFlow E PyTorch?
MindSpore Di Huawei: Un Nuovo Concorrente Per TensorFlow E PyTorch?

Video: MindSpore Di Huawei: Un Nuovo Concorrente Per TensorFlow E PyTorch?

Video: MindSpore Di Huawei: Un Nuovo Concorrente Per TensorFlow E PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Novembre
Anonim

Huawei ha annunciato che il suo middleware MindSpore Deep Learning in stile TensorFlow e PyTorch è ora open source. Scopri in questo articolo le sue caratteristiche più importanti.

MindSpore di Huawei
MindSpore di Huawei

Huawei ha appena annunciato che il suo framework MindSpore per lo sviluppo di applicazioni AI sta diventando open source e disponibile su GiHub e Gitee. MindSpore è un altro framework di Deep Learning per l'addestramento di modelli di rete neurale, simile a TensorFlow o PyTorch, progettato per l'utilizzo da Edge a Cloud, che supporta sia le GPU che ovviamente i processori Huawei Ascend.

Lo scorso agosto, quando Huawei ha annunciato il lancio ufficiale del suo processore Ascend, è stato introdotto per la prima volta MindSpore, affermando che in una tipica sessione di formazione basata su ResNet-50, la combinazione di Ascend 910 e MindSpore è circa due volte più veloce. Quando si addestrano modelli di intelligenza artificiale rispetto ad altre principali schede di apprendimento utilizzando TensorFlow È vero che negli ultimi anni sono emersi molti framework e forse MindSpore non è altro che un gruppo che può persino competere a distanza con TensorFlow (supportato da Google) e PyTorch (supportato da Facebook).

Architettura di sistema

Il sito Web MindSpore descrive che l'infrastruttura è costituita da tre livelli principali: espressione frontend, motore grafico e runtime backend. La figura seguente mostra un diagramma visivo:

Immagine
Immagine

Il primo livello di MindSpore offre un'API Python per i programmatori. Poiché la linguistica linguistica nella nostra comunità è de facto Python, e per il resto MindSpore vuole competere con PyTorch e TensorFlow. Con questa API, i programmatori possono manipolare modelli (addestramento, inferenza, ecc.) ed elaborare dati. Questo primo livello include anche il supporto per la rappresentazione provvisoria del codice (MindSpore IR), su cui si baseranno molte ottimizzazioni che possono essere eseguite in parallelizzazione e differenziazione automatica (GHLO).

Di seguito è riportato il livello del motore grafico che fornisce le funzionalità necessarie per creare ed eseguire la differenziazione automatica del grafico di esecuzione. Con MindSpore, hanno optato per un modello di differenziazione automatica diverso da PyTorch (che genera un grafico di esecuzione dinamico) o TensorFlow (sebbene fosse stata originariamente scelta l'opzione per creare un programma di esecuzione statico più efficiente, ora offre anche un'opzione di grafico di esecuzione dinamico e consente una versione statica del grafico con l'utilizzo del decoratore @ tf.function della sua API di basso livello).

La scelta di MindSpore è di convertire il codice sorgente in un formato di codice intermedio (MindSpore IR) per sfruttare i due modelli (per maggiori informazioni, vedere la sezione "Separazione automatica" sul sito Web MindSpore).

Il livello finale è costituito da tutte le librerie e gli ambienti di runtime necessari per supportare le varie architetture hardware in cui verrà elaborato il codice. Molto probabilmente sarà un backend molto simile ad altri framework, magari con funzionalità Huawei, come librerie come HCCL (Huawei Collective Communication Library), equivalenti a NVIDIA NCCL (NVIDIA Collective Communication Library).

Supporto per la visualizzazione dell'allenamento

Secondo il tutorial di MindSpore, sebbene fosse impossibile installarli e utilizzarli, hanno MindInsight per creare visualizzazioni che ricordano in qualche modo TensorBoard, TensorFlow. Dai un'occhiata ad alcuni screenshot che mostrano sul loro sito web:

Immagine
Immagine
Immagine
Immagine

Secondo il manuale, MindSpore attualmente utilizza un meccanismo di callback (che ricorda come viene fatto con Keras) per scrivere (in un file di registro) nel processo di addestramento di tutti quei parametri del modello e iperparametri che vogliamo, così come il programma di calcolo quando la compilazione della rete neurale in codice intermedio è completa.

Parallelismo

Nel loro tutorial, parlano di due modalità di parallelizzazione (DATA_PARALLEL e AUTO_PARALLEL) e forniscono codice di esempio che addestra ResNet-50 con un set di dati CIFAR per un processore Ascend 910 (che non sono stato in grado di testare). DATA_PARALLEL si riferisce a una strategia comunemente nota come parallelismo dei dati, che consiste nel dividere i dati di addestramento in più sottoinsiemi, ognuno dei quali viene eseguito sulla stessa replica del modello, ma in unità di elaborazione diverse. Viene fornito il supporto di Graph Engine per la parallelizzazione del codice e in particolare per il parallelismo AUTO_PARALLEL.

La modalità AUTO_PARALLEL ottimizza automaticamente la parallelizzazione combinando la strategia di parallelizzazione dei dati (discussa sopra) con la strategia di parallelizzazione del modello, in cui il modello è diviso in diverse parti e ogni parte viene eseguita in parallelo in diverse unità di elaborazione. Questa modalità automatica seleziona la strategia di parallelizzazione che offre i migliori vantaggi, che possono essere letti nella sezione Parallelo automatico sul sito Web MindSpore (sebbene non descrivano come vengono prese le stime e le decisioni). Dovremo aspettare per trovare il tempo affinché il team tecnico ampli la documentazione e comprenda maggiori dettagli sulla strategia di parallelizzazione automatica. Ma è chiaro che questa strategia di auto-parallelizzazione è fondamentale, ed è qui che dovrebbero e possono competere con TensorFlow o PyTorch, ottenendo prestazioni significativamente migliori utilizzando i processori Huawei.

Roadmap pianificata e come contribuire

C'è ovviamente molto lavoro da fare ea questo punto hanno snellito le idee che hanno in mente per il prossimo anno nell'ampia roadmap presentata in questa pagina, ma sostengono che le priorità verranno adattate in base all'utente.

Risposta. Al momento possiamo trovare queste linee principali:

  1. Supporto per più modelli (modelli classici in attesa, GAN, RNN, Transformers, modelli di apprendimento amplificati, programmazione probabilistica, AutoML, ecc.).
  2. Estendi API e librerie per migliorare l'usabilità e l'esperienza di programmazione (più operatori, più ottimizzatori, più funzioni di perdita, ecc.)
  3. Supporto completo del processore Huawei Ascend e ottimizzazione delle prestazioni (ottimizzazione della compilazione, miglioramento dell'utilizzo delle risorse, ecc.)
  4. Evoluzione dello stack software ed esecuzione di ottimizzazioni di grafi computazionali (miglioramento della rappresentazione IR intermedia, aggiunta di ulteriori capacità di ottimizzazione, ecc.).
  5. Supporto per più linguaggi di programmazione (non solo Python).
  6. Apprendimento distribuito migliorato con ottimizzazione della pianificazione automatica, distribuzione dei dati, ecc.
  7. Migliora lo strumento MindInsight per semplificare il "debug" del programmatore e migliorare l'ottimizzazione degli iperparametri durante il processo di apprendimento.
  8. Progressi nella fornitura di funzionalità di inferenza ai dispositivi in Edge (sicurezza, supporto per modelli non di piattaforma tramite ONNX, ecc.)

Nella pagina della community, puoi vedere che MindSpore ha partner al di fuori di Huawei e della Cina, come l'Università di Edimburgo, l'Imperial College di Londra, l'Università di Munster (Germania) o l'Università di Paris-Saclay. Dicono che seguiranno un modello di governance aperto e inviteranno l'intera comunità a contribuire sia al codice che alla documentazione.

Conclusione

Dopo una prima rapida occhiata, sembra che le giuste decisioni di progettazione e implementazione (come la concorrenza e la differenziazione automatica) possano aggiungere spazio per miglioramenti e ottimizzazioni che ottengono prestazioni migliori rispetto ai framework che vogliono superare. Ma c'è ancora molto lavoro da fare per catturare PyTorch e TensorFlow e, soprattutto, costruire una community, non solo! Tuttavia, sappiamo già tutti che con il supporto di una grande azienda del settore come Huawei, tutto è possibile, oppure era ovvio tre anni fa quando uscì la prima versione di PyTorch (Facebook) che poteva essere vicino al tallone. di TensorFlow (Google)?

Consigliato: