Comparaison des frameworks d'apprentissage en profondeur: TensorFlow, PyTorch, Keras, MXNet, Microsoft Cognitive Toolkit, Caffe, etc.

Bonjour Ă  tous. Ce vendredi, nous partageons avec vous la premiĂšre publication sur le lancement du cours Data Scientist . Bonne lecture.

Un grand nombre d’organisations se sont efforcĂ©es d’utiliser l’intelligence artificielle dans leurs dĂ©cisions pour Ă©tendre le champ d’activitĂ©s ou dĂ©velopper leur start-up, mais une chose importante Ă  comprendre: la technologie de dĂ©veloppement choisie doit s'accompagner d'un bon cadre d'apprentissage en profondeur, en particulier parce que chaque cadre sert Ă  une sorte d'objectif distinct. La recherche du tandem parfait dans ce cas est une condition prĂ©alable au dĂ©veloppement fluide et rapide de l'entreprise et au dĂ©ploiement rĂ©ussi des projets.



La liste suivante de cadres pour l'apprentissage en profondeur peut ĂȘtre utile dans le processus de choix du bon outil pour rĂ©soudre les problĂšmes spĂ©cifiques auxquels vous ĂȘtes confrontĂ© dans le processus de travail sur un projet. Vous pouvez comparer les avantages et les inconvĂ©nients de diffĂ©rentes solutions, Ă©valuer leurs limites et dĂ©couvrir les meilleurs cas d'utilisation pour chaque solution!

1. Tensorflow

Créée par Google et Ă©crite en Python et C ++, TensorFlow est l'une des meilleures bibliothĂšques open source pour l'informatique numĂ©rique. Cela doit simplement ĂȘtre bon, car mĂȘme des gĂ©ants comme DeepMind, Uber, AirBnB ou Dropbox ont choisi ce cadre pour leurs besoins.

TensorFlow convient aux projets complexes tels que les réseaux de neurones multicouches. Il est utilisé pour la reconnaissance vocale ou les applications d'images et de texte telles que Google Translate, par exemple.

Bien sûr, les experts ont appelé plusieurs de ses avantages:

  • Un grand nombre de manuels et de documentation ont Ă©tĂ© rĂ©digĂ©s pour elle;
  • Il offre des outils puissants pour surveiller le processus d'apprentissage des modĂšles et de la visualisation (Tensorboard);
  • Il est soutenu par une grande communautĂ© de dĂ©veloppeurs et d'entreprises technologiques;
  • Il fournit des modĂšles de service;
  • Il prend en charge l'apprentissage distribuĂ©;
  • TensorFlow Lite fournit une sortie vers des appareils Ă  faible latence pour les appareils mobiles;

Et les inconvénients:

Il perd en vitesse dans les benchmarks, par rapport Ă  CNTK et MXNet, par exemple;
Il a un seuil d'entrée plus élevé pour les débutants que PyTorch ou Keras. Naked Tensorflow est assez bas niveau et nécessite beaucoup de code passe-partout, et le mode "détecter et exécuter" pour Tensorflow complique grandement le processus de débogage.

Il existe une autre limitation importante: le seul langage entiĂšrement pris en charge est Python.

2. PyTorch

PyTorch est le successeur de Python à la bibliothÚque Lua Torch et un grand concurrent de TensorFlow. Il a été développé par Facebook et utilisé par Twitter, Salesforce, l'Université d'Oxford et de nombreuses autres sociétés.

PyTorch est principalement utilisé pour former des modÚles rapidement et efficacement, c'est donc le choix d'un grand nombre de développeurs.

Il présente de nombreux avantages importants:

  • GrĂące Ă  l'architecture du framework, le processus de crĂ©ation d'un modĂšle est assez simple et transparent;
  • Le mode par dĂ©faut «dĂ©finir par exĂ©cution» est une rĂ©fĂ©rence Ă  la programmation traditionnelle. Le cadre prend en charge les outils de dĂ©bogage populaires tels que le dĂ©bogueur pdb, ipdb ou PyCharm;
  • Il prend en charge la simultanĂ©itĂ© des donnĂ©es dĂ©claratives;
  • Il possĂšde de nombreux modĂšles prĂ©-formĂ©s et des piĂšces modulaires prĂ©fabriquĂ©es faciles Ă  combiner;

La formation distribuée est disponible depuis la version 0.4.

Mais ce cadre présente des inconvénients indéniables:

  • Manque de support du modĂšle;
  • Il n'est pas encore prĂȘt pour une sortie complĂšte en production, mais la feuille de route vers la version 1.0 semble vraiment impressionnante;
  • Il y a un manque d'interfaces pour la surveillance et la visualisation, comme le TensorBoard - cependant, il a une connexion externe au Tensorboard.


3. Keras

Keras est une bibliothÚque minimale basée sur Python qui peut s'exécuter sur TensoFlow, Theano ou CNTK. Il a été développé par un ingénieur de Google, François Schollet, pour accélérer les expériences. Keras prend en charge un large éventail de couches de réseau neuronal, telles que les couches convolutionnelles, récurrentes ou denses.

Ce cadre est bon dans les cas de traduction, de reconnaissance d'image, de parole, etc.

Avantages:

  • Le prototypage est vraiment rapide et facile;
  • Il est assez petit pour crĂ©er des modĂšles d'apprentissage profond pour de nombreuses couches;
  • A des modules entiĂšrement configurables;
  • Il a une interface simple et intuitive, respectivement, bonne pour les dĂ©butants;
  • A un support intĂ©grĂ© pour la formation sur plusieurs GPU;
  • Il peut ĂȘtre configurĂ© en tant qu'Ă©valuateurs pour TensorFlow et formĂ© sur les clusters GPU sur la plate-forme Google Cloud;
  • Fonctionne sur Spark;
  • Prend en charge les GPU NVIDIA, Google TPU, les GPU Open-CL tels que AMD.

Et quelques inconvénients:

  • Cela peut s'avĂ©rer trop Ă©levĂ© et n'est pas toujours facile Ă  personnaliser;
  • Il est limitĂ© aux backends Tensorflow, CNTK et Theano.

Keras n'est pas aussi fonctionnel que TensorFlow et offre moins d'options pour gĂ©rer une connexion rĂ©seau, ce qui peut ĂȘtre une sĂ©rieuse limitation si vous avez l'intention de crĂ©er un modĂšle d'apprentissage approfondi spĂ©cialisĂ©.

4. MXNet


Il s'agit d'un cadre d'apprentissage en profondeur créé par Apache qui prend en charge une abondance de langages tels que Python, Julia, C ++, R ou JavaScript. Il est utilisé par Microsoft, Intel et Amazon Web Services.

Le framework MXNet est connu pour sa grande évolutivité, c'est pourquoi il est utilisé par les grandes entreprises principalement pour la reconnaissance vocale et l'écriture manuscrite, la PNL et les prévisions.
Elle présente de nombreux avantages:

  • Il est assez rapide, flexible et efficace pour travailler avec des algorithmes d'apprentissage en profondeur;
  • Il fournit un support GPU avancĂ©;
  • Il peut fonctionner sur n'importe quel appareil;
  • Il dispose d'une API impĂ©rative hautes performances;
  • Il fournit un support de modĂšle facile;
  • Il est extrĂȘmement Ă©volutif;
  • Il fournit un bon support pour de nombreux langages de programmation, tels que Python, R, Scala, JavaScript et C ++, et bien d'autres.

Maintenant, pour les inconvénients de MXNet:

  • Autour de lui, il n'y a plus de communautĂ© comme autour de TensorFlow;
  • Pas si populaire dans la communautĂ© scientifique.

Sur la base des arguments ci-dessus, MXNet est un bon cadre pour les grands projets industriels, mais il est encore assez jeune, alors n'oubliez pas que vous ne pouvez pas recevoir de support technique pour résoudre votre problÚme aussi rapidement que vous le souhaitez.

5. CNTK

Ce cadre s'appelle désormais Microsoft Cognitive Toolkit. Il s'agit d'un cadre d'apprentissage en profondeur ouvert conçu pour fonctionner avec de trÚs grands ensembles de données avec prise en charge de Python, C ++, C # et Java.

CNTK fournit une formation de modÚle efficace pour la voix, l'écriture manuscrite et la reconnaissance d'images, et prend également en charge CNN et RNN. Il est utilisé sur Skype, Xbox et Cortana.

Comme toujours, les experts ont déjà apprécié ses avantages:

  • Affiche de bonnes performances et Ă©volutivitĂ©;
  • Fournit de nombreux composants bien optimisĂ©s;
  • Offre un support pour Apache Spark;
  • Efficace dans l'utilisation des ressources;
  • A une intĂ©gration facile avec Azure Cloud;

Et un seul inconvénient:

  • Soutien communautaire limitĂ©.

6. Caffe et Caffe2

Caffe est un framework C ++ qui a une interface Python trÚs utilisable. Il prend en charge CNN et les réseaux de distribution directe, et est également bon pour la formation de modÚles (sans écrire de lignes de code supplémentaires), le traitement d'images et l'amélioration des réseaux de neurones existants. En revanche, il n'est pas si bien documenté et difficile à compiler. Il n'y a aucune information sur l'utilisation de Caffe par les grandes entreprises. En 2017, Facebook a publié Caffe 2, qui est devenu le véritable successeur de Caffe, et a été créé pour le développement mobile et à grande échelle dans l'environnement de production.

Il est connu sur Facebook comme «une plate-forme prĂȘte Ă  la production (...) qui fonctionne sur plus d'un milliard de smartphones, couvrant 8 gĂ©nĂ©rations d'iPhone et six gĂ©nĂ©rations d'architectures de processeurs Android».

Ce cadre est bon pour plusieurs raisons:

  • Il propose des modĂšles prĂ©-formĂ©s pour crĂ©er des applications de dĂ©monstration;
  • Il est rapide, Ă©volutif et prend peu de place;
  • Il fonctionne bien avec d'autres frameworks tels que PyTorch et sera Ă©ventuellement intĂ©grĂ© Ă  PyTorch 1.0;
  • Il fournit un travail optimisĂ© avec le serveur.

Et encore une fois, le principal inconvénient:

  • Soutien communautaire limitĂ©.

Malgré le fait que Caffe2 passe bien les tests en termes de vitesse et de mémoire occupée, il est relativement nouveau et assez limité en termes de déploiement de réseaux complexes qui nécessitent au moins des outils pratiques pour le débogage et le support technique.

7. Deeplearning4j

Si votre langage de programmation principal est Java, alors vous devriez certainement regarder de plus prÚs DL4J. Il s'agit d'une plate-forme commerciale open source écrite principalement pour Java et Scala qui fournit un bon support pour différents types de réseaux de neurones (tels que CNN, RNN, RNTN ou LTSM).

Ce cadre sera un bon choix car il a un grand potentiel dans les domaines de la reconnaissance d'image, du traitement du langage naturel, de la recherche de vulnérabilité et de l'analyse de texte.

Avantages:

  • Fiable, flexible et efficace;
  • Il peut traiter de grandes quantitĂ©s de donnĂ©es sans perte de vitesse;
  • Fonctionne avec Apache Hadoop et Spark, sur CPU ou GPU distribuĂ©;
  • A une bonne documentation;
  • A une version communautaire et d'entreprise.

Ce qui est surprenant, en parlant de ce cadre, les experts ne se concentrent pas sur des lacunes spĂ©cifiques, comme le supposent un dĂ©bat gĂ©nĂ©ral sur la pertinence de Java pour l'apprentissage automatique en gĂ©nĂ©ral. Étant donnĂ© que Java n'est pas utilisĂ© si souvent dans les projets d'apprentissage automatique, le cadre ne peut pas s'appuyer sur des bases de donnĂ©es croissantes de code prĂȘt Ă  l'emploi pour rĂ©soudre des problĂšmes spĂ©cifiques. En consĂ©quence, les coĂ»ts de votre projet peuvent devenir beaucoup plus Ă©levĂ©s et la rĂ©solution d'un problĂšme peut ralentir considĂ©rablement la progression globale du projet.

8. Chainer

Un autre cadre d'apprentissage en profondeur Python pris en charge par des géants comme Intel, IBM, NVIDIA et AWS. Il peut facilement utiliser plusieurs GPU.

Chainer est principalement utilisé pour la reconnaissance vocale, la traduction automatique et l'analyse de clés. Il prend en charge diverses architectures de réseau, telles que CNN, avance rapide, RNN, et présente plusieurs avantages importants par rapport à ses concurrents:

  • Il est beaucoup plus rapide que tout autre framework Python;
  • Il est incroyablement flexible et intuitif;
  • Les rĂ©seaux existants peuvent ĂȘtre modifiĂ©s directement lors de l'exĂ©cution;

D'un autre cÎté:

  • TrĂšs difficile en termes de dĂ©bogage;
  • Autour de lui est une communautĂ© relativement petite;

Étant donnĂ© que d'autres frameworks basĂ©s sur Python sont beaucoup plus populaires, vous pouvez ne pas obtenir une aide aussi rapide qu'avec d'autres frameworks tels que TensorFlow ou PyTorch.

Pour résumer

Le choix du meilleur cadre pour un projet d'apprentissage en profondeur peut ĂȘtre extrĂȘmement difficile. Vous devez tenir compte des facteurs suivants:

  • Le type de rĂ©seaux de neurones que vous dĂ©velopperez;
  • Le langage de programmation que vous utilisez;
  • Le nombre d'outils et d'options supplĂ©mentaires dont vous pourriez avoir besoin;
  • Budget du projet;
  • La nature et les objectifs poursuivis par le projet.

J'espÚre que cette comparaison de frameworks vous éclairera sur ce problÚme et vous aidera à choisir la solution la plus adaptée à votre projet.

Écrivez vos commentaires et rendez-vous Ă  la journĂ©e portes ouvertes , qui sera organisĂ©e le 19 mars par Alexander Nikitin .

Source: https://habr.com/ru/post/fr443874/


All Articles