MindSpore De Huawei : Un Nouveau Concurrent Pour TensorFlow Et PyTorch ?

Table des matières:

MindSpore De Huawei : Un Nouveau Concurrent Pour TensorFlow Et PyTorch ?
MindSpore De Huawei : Un Nouveau Concurrent Pour TensorFlow Et PyTorch ?

Vidéo: MindSpore De Huawei : Un Nouveau Concurrent Pour TensorFlow Et PyTorch ?

Vidéo: MindSpore De Huawei : Un Nouveau Concurrent Pour TensorFlow Et PyTorch ?
Vidéo: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Novembre
Anonim

Huawei a annoncé que son middleware MindSpore Deep Learning de style TensorFlow et PyTorch est désormais open source. Découvrez dans cet article ses caractéristiques les plus importantes.

MindSpore par Huawei
MindSpore par Huawei

Huawei vient d'annoncer que son framework MindSpore pour développer des applications d'IA devient open source et disponible sur GiHub et Gitee. MindSpore est un autre framework d'apprentissage en profondeur pour la formation de modèles de réseaux neuronaux, similaire à TensorFlow ou PyTorch, conçu pour une utilisation d'Edge au Cloud, qui prend en charge à la fois les GPU et évidemment les processeurs Huawei Ascend.

En août dernier, lorsque Huawei a annoncé le lancement officiel de son processeur Ascend, MindSpore a été présenté pour la première fois, déclarant que «dans une session de formation typique basée sur ResNet-50, la combinaison d'Ascend 910 et de MindSpore est environ deux fois plus rapide. Lors de la formation de modèles d'IA par rapport à d'autres cartes d'apprentissage majeures à l'aide de TensorFlow Il est vrai que de nombreux frameworks ont vu le jour ces dernières années, et peut-être que MindSpore n'est rien de plus qu'un groupe qui peut même rivaliser à distance avec TensorFlow (soutenu par Google) et PyTorch (soutenu par Facebook).

Architecture du système

Le site Web de MindSpore décrit que l'infrastructure se compose de trois couches principales: l'expression frontale, le moteur graphique et le moteur d'exécution principal. La figure suivante montre un diagramme visuel:

Image
Image

Le premier niveau de MindSpore propose une API Python pour les programmeurs. Puisque la linguistique linguistique dans notre communauté est de facto Python, et sinon MindSpore veut rivaliser avec PyTorch et TensorFlow. Avec cette API, les programmeurs peuvent manipuler des modèles (apprentissage, inférence, etc.) et traiter des données. Ce premier niveau inclut également le support de la représentation intérimaire du code (MindSpore IR), sur laquelle seront basées de nombreuses optimisations pouvant être effectuées en parallélisation et différentiation automatique (GHLO).

Vous trouverez ci-dessous la couche Graph Engine qui fournit les fonctionnalités nécessaires pour créer et exécuter une différenciation automatique du graphique d'exécution. Avec MindSpore, ils ont opté pour un modèle de différenciation automatique autre que PyTorch (qui génère un graphe d'exécution dynamique) ou TensorFlow (bien que l'option de créer un planning d'exécution statique plus efficace ait été choisie à l'origine, il propose désormais également une option de graphe d'exécution dynamique et permet une version statique du graphe en utilisant le décorateur @tf.function de son API de bas niveau).

Le choix de MindSpore est de convertir le code source au format de code intermédiaire (MindSpore IR) pour profiter des deux modèles (pour plus d'informations, consultez la section « Séparation automatique » sur le site Web de MindSpore).

La couche finale se compose de toutes les bibliothèques et environnements d'exécution nécessaires pour prendre en charge les différentes architectures matérielles dans lesquelles le code sera traité. Très probablement, ce sera un backend très similaire à d'autres frameworks, peut-être avec des fonctionnalités Huawei, telles que des bibliothèques telles que HCCL (Huawei Collective Communication Library), équivalente à NVIDIA NCCL (NVIDIA Collective Communication Library).

Support de visualisation d'entraînement

Selon le didacticiel MindSpore, bien qu'il ait été impossible de les installer et de les utiliser, ils disposent de MindInsight pour créer des visualisations qui rappellent quelque peu TensorBoard, TensorFlow. Jetez un œil à quelques captures d'écran qu'ils montrent sur leur site Web:

Image
Image
Image
Image

Selon le manuel, MindSpore utilise actuellement un mécanisme de rappel (qui rappelle la façon dont cela se fait avec Keras) pour écrire (dans un fichier journal) dans le processus de formation de tous les paramètres de modèle et hyperparamètres que nous voulons, ainsi que le calendrier de calcul lorsque la compilation du réseau de neurones en code intermédiaire est terminée.

Parallélisme

Dans leur tutoriel, ils parlent de deux modes de parallélisation (DATA_PARALLEL et AUTO_PARALLEL) et fournissent un exemple de code qui entraîne ResNet-50 avec un ensemble de données CIFAR pour un processeur Ascend 910 (que je n'ai pas pu tester). DATA_PARALLEL fait référence à une stratégie communément appelée parallélisme de données, qui consiste à diviser les données d'apprentissage en plusieurs sous-ensembles, chacun s'exécutant sur la même réplique du modèle, mais dans différentes unités de traitement. Le support de Graph Engine est fourni pour la parallélisation de code et en particulier pour le parallélisme AUTO_PARALLEL.

Le mode AUTO_PARALLEL optimise automatiquement la parallélisation en combinant la stratégie de parallélisation des données (discutée ci-dessus) avec la stratégie de parallélisation du modèle, dans laquelle le modèle est divisé en différentes parties, et chaque partie est exécutée en parallèle dans différentes unités de traitement. Ce mode automatique sélectionne la stratégie de parallélisation qui offre les meilleurs avantages, ce qui peut être lu dans la section Parallèle automatique sur le site Web de MindSpore (bien qu'ils ne décrivent pas comment les estimations et les décisions sont prises). Nous devrons attendre pour laisser le temps à l'équipe technique d'étoffer la documentation et de comprendre plus de détails sur la stratégie d'auto-parallélisation. Mais il est clair que cette stratégie de parallélisation automatique est essentielle, et c'est là qu'ils devraient et peuvent rivaliser avec TensorFlow ou PyTorch, en obtenant des performances nettement meilleures avec les processeurs Huawei.

Feuille de route prévue et comment y contribuer

Il y a évidemment beaucoup de travail à faire et à ce stade, ils ont rationalisé les idées qu'ils ont en tête pour l'année prochaine dans la feuille de route détaillée présentée sur cette page, mais ils soutiennent que les priorités seront ajustées en fonction de l'utilisateur.

Retour d'information. À l'heure actuelle, nous pouvons trouver ces lignes principales:

  1. Prise en charge de plus de modèles (modèles classiques en attente, GAN, RNN, Transformers, modèles d'apprentissage amplifiés, programmation probabiliste, AutoML, etc.).
  2. Étendez les API et les bibliothèques pour améliorer la convivialité et l'expérience de programmation (plus d'opérateurs, plus d'optimiseurs, plus de fonctions de perte, etc.)
  3. Prise en charge complète du processeur Huawei Ascend et optimisation des performances (optimisation de la compilation, amélioration de l'utilisation des ressources, etc.)
  4. Évolution de la pile logicielle et exécution d'optimisations de graphes de calcul (amélioration de la représentation IR intermédiaire, ajout de capacités d'optimisation supplémentaires, etc.).
  5. Prise en charge de plus de langages de programmation (pas seulement Python).
  6. Apprentissage distribué amélioré avec optimisation de la planification automatique, de la distribution des données, etc.
  7. Améliorez l'outil MindInsight pour permettre au programmeur de "déboguer" plus facilement et d'améliorer le réglage des hyperparamètres pendant le processus d'apprentissage.
  8. Progrès dans la fourniture de fonctionnalités d'inférence aux appareils dans Edge (sécurité, prise en charge des modèles sans plate-forme via ONNX, etc.)

Sur la page de la communauté, vous pouvez voir que MindSpore a des partenaires en dehors de Huawei et de la Chine, tels que l'Université d'Édimbourg, l'Imperial College de Londres, l'Université de Munster (Allemagne) ou l'Université Paris-Saclay. Ils disent qu'ils suivront un modèle de gouvernance ouvert et inviteront toute la communauté à contribuer à la fois au code et à la documentation.

Conclusion

Après un premier coup d'œil rapide, il semble que les bonnes décisions de conception et de mise en œuvre (comme la concurrence et la différenciation automatique) peuvent ajouter de la place pour des améliorations et des optimisations qui obtiennent de meilleures performances que les frameworks qu'ils souhaitent surpasser. Mais il reste encore beaucoup de travail à faire pour attraper PyTorch et TensorFlow, et surtout construire une communauté, pas seulement ! Cependant, nous savons tous déjà qu'avec le soutien d'une grande entreprise du secteur comme Huawei, tout est possible, ou il était évident il y a trois ans lorsque la première version de PyTorch (Facebook) est sortie qu'elle pourrait être proche du talon. de TensorFlow (Google) ?

Conseillé: