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. TensorflowCréé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. PyTorchPyTorch 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.
KerasKeras 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. CNTKCe 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 Caffe2Caffe 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. Deeplearning4jSi 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. ChainerUn 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 .