MindSpore De Huawei: Un Nou Competidor Per A TensorFlow I PyTorch?

Taula de continguts:

MindSpore De Huawei: Un Nou Competidor Per A TensorFlow I PyTorch?
MindSpore De Huawei: Un Nou Competidor Per A TensorFlow I PyTorch?

Vídeo: MindSpore De Huawei: Un Nou Competidor Per A TensorFlow I PyTorch?

Vídeo: MindSpore De Huawei: Un Nou Competidor Per A TensorFlow I PyTorch?
Vídeo: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, De novembre
Anonim

Huawei va anunciar que el seu middleware MindSpore Deep Learning estil TensorFlow i PyTorch ja és de codi obert. Descobriu en aquest article les seves característiques més importants.

MindSpore de Huawei
MindSpore de Huawei

Huawei acaba d’anunciar que el seu framework MindSpore per al desenvolupament d’aplicacions d’intel·ligència artificial es converteix en un codi obert i disponible a GiHub i Gitee. MindSpore és un altre marc d’aprenentatge profund per a l’entrenament de models de xarxes neuronals, similar a TensorFlow o PyTorch, dissenyat per a ser utilitzat des de Edge fins al núvol, que admet tant GPU com processadors Huawei Ascend.

L’agost passat, quan Huawei va anunciar el llançament oficial del seu processador Ascend, es va presentar MindSpore per primera vegada, afirmant que “en una sessió d’entrenament típica basada en ResNet-50, la combinació d’Ascend 910 i MindSpore és aproximadament el doble de ràpida. Quan s’entrenen models d’IA contra altres targetes d’aprenentatge importants mitjançant TensorFlow És cert que en els darrers anys han sorgit molts marcs, i potser MindSpore no és res més que un grup que pot competir fins i tot de forma remota amb TensorFlow (amb el suport de Google) i PyTorch (amb el suport de Facebook)).

Arquitectura del sistema

El lloc web MindSpore descriu que la infraestructura consta de tres capes principals: expressió del frontend, motor gràfic i temps d'execució del backend. La figura següent mostra un diagrama visual:

Imatge
Imatge

El primer nivell de MindSpore ofereix una API de Python per a programadors. Com que la lingüística lingüística de la nostra comunitat és Python de facto, MindSpore vol competir amb PyTorch i TensorFlow. Amb aquesta API, els programadors poden manipular models (formació, inferència, etc.) i processar dades. Aquest primer nivell també inclou suport per a la representació provisional de codi (MindSpore IR), en la qual es basaran moltes optimitzacions que es poden realitzar en paral·lelització i diferenciació automàtica (GHLO).

A continuació es mostra la capa Graph Engine que proporciona la funcionalitat necessària per crear i executar la diferenciació automàtica del gràfic d’execució. Amb MindSpore, van optar per un model de diferenciació automàtic que no fos PyTorch (que genera un gràfic d’execució dinàmica) o TensorFlow (tot i que originalment es va escollir l’opció de crear una planificació d’execució estàtica més eficient, ara també ofereix una opció de gràfic d’execució dinàmica i permet una versió estàtica del gràfic amb l’ús del decorador @ tf.function de la seva API de baix nivell).

L'elecció de MindSpore és convertir el codi font a format de codi intermedi (MindSpore IR) per aprofitar els dos models (per obtenir més informació, consulteu la secció "Separació automàtica" al lloc web de MindSpore).

La capa final consta de totes les biblioteques i entorns d'execució necessaris per donar suport a les diverses arquitectures de maquinari en què es processarà el codi. El més probable és que sigui un backend molt similar a altres frameworks, potser amb funcions de Huawei, com ara biblioteques com HCCL (Huawei Collective Communication Library), equivalent a NVIDIA NCCL (NVIDIA Collective Communication Library).

Suport a la visualització de l’entrenament

Segons el tutorial de MindSpore, tot i que era impossible instal·lar-los i utilitzar-los, tenen MindInsight per crear visualitzacions que recorden una mica TensorBoard, TensorFlow. Mireu algunes captures de pantalla que mostren al seu lloc web:

Imatge
Imatge
Imatge
Imatge

Segons el manual, MindSpore actualment utilitza un mecanisme de devolució de trucada (que recorda com es fa amb Keras) per escriure (en un fitxer de registre) en el procés de formació de tots aquells paràmetres del model i hiperparametres que desitgem, així com el calendari de càlcul quan s'ha completat la compilació de la xarxa neuronal en codi intermedi.

Paral·lelisme

Al seu tutorial, parlen de dos modes de paral·lelització (DATA_PARALLEL i AUTO_PARALLEL) i proporcionen un codi de mostra que entrena ResNet-50 amb un conjunt de dades CIFAR per a un processador Ascend 910 (que no he pogut provar). DATA_PARALLEL es refereix a una estratègia coneguda habitualment com a paral·lelisme de dades, que consisteix a dividir les dades d’entrenament en diversos subconjunts, cadascun dels quals s’executa en la mateixa rèplica del model, però en unitats de processament diferents. El suport de Graph Engine es proporciona per a la paral·lelització de codi i, en particular, per al paral·lelisme AUTO_PARALLEL.

El mode AUTO_PARALLEL optimitza automàticament la paral·lelització combinant l’estratègia de paral·lelització de dades (comentada anteriorment) amb l’estratègia de paral·lelització del model, en què el model es divideix en diferents parts i cada part s’executa en paral·lel en diferents unitats de processament. Aquest mode automàtic selecciona l’estratègia de paral·lelització que ofereix els millors avantatges, que es pot llegir a la secció Paral·lel automàtic del lloc web MindSpore (tot i que no descriuen com es prenen les estimacions i les decisions). Haurem d’esperar per fer temps perquè l’equip tècnic ampliï la documentació i entengui més detalls sobre l’estratègia de paral·lelització automàtica. Però és clar que aquesta estratègia d’auto-paral·lelització és fonamental, i aquí és on haurien de competir amb TensorFlow o PyTorch, obtenint un rendiment significativament millor mitjançant processadors Huawei.

Full de ruta previst i com contribuir

Obviouslybviament, hi ha molta feina per fer i, en aquest moment, han racionalitzat les idees que tenen en ment per a l’any vinent en l’extens full de ruta presentat en aquesta pàgina, però argumenten que les prioritats s’ajustaran segons l’usuari.

Comentaris. De moment podem trobar aquestes línies principals:

  1. Suport per a més models (models clàssics pendents, GAN, RNN, Transformers, models d’aprenentatge amplificat, programació probabilística, AutoML, etc.).
  2. Amplieu les API i les biblioteques per millorar la usabilitat i l’experiència de programació (més operadors, més optimitzadors, més funcions de pèrdua, etc.)
  3. Assistència integral del processador Huawei Ascend i optimització del rendiment (optimització de la compilació, millora de la utilització de recursos, etc.)
  4. Evolució de la pila de programari i execució d’optimitzacions de gràfics computacionals (millora de la representació IR intermedia, afegint capacitats d’optimització addicionals, etc.).
  5. Suport per a més llenguatges de programació (no només Python).
  6. Aprenentatge distribuït millorat amb optimització de la programació automàtica, distribució de dades, etc.
  7. Milloreu l'eina MindInsight per facilitar al programador la "depuració" i millorar l'ajustament dels hiperparametres durant el procés d'aprenentatge.
  8. Avanç en el lliurament de la funcionalitat d’inferència als dispositius de Edge (seguretat, compatibilitat amb models que no són de plataforma mitjançant ONNX, etc.)

A la pàgina de la comunitat, podeu veure que MindSpore té socis fora de Huawei i la Xina, com ara la Universitat d’Edimburg, l’Imperial College de Londres, la Universitat de Munster (Alemanya) o la Universitat Paris-Saclay. Diuen que seguiran un model de govern obert i convidaran tota la comunitat a contribuir tant al codi com a la documentació.

Conclusió

Després d’un primer cop d’ull ràpid, sembla que les decisions adequades de disseny i implementació (com la simultaneïtat i la diferenciació automàtica) poden afegir espai per a millores i optimitzacions que aconsegueixen un millor rendiment que els marcs que volen superar. Però encara queda molta feina per atrapar PyTorch i TensorFlow i, sobretot, construir una comunitat, no només! Tanmateix, tots ja sabem que amb el suport d’una gran empresa del sector com Huawei, tot és possible, o era obvi fa tres anys quan va sortir la primera versió de PyTorch (Facebook) que podria estar a prop del taló de TensorFlow (Google)?

Recomanat: