TensorFlow est une bibliothèque open source de Machine Learning, créée par Google, permettant de développer et d’exécuter des applications de Machine Learning et de Deep Learning. Découvrez tout ce que vous devez savoir à son sujet.
Le Machine Learning est une technologie qui peut s’avérer extrêmement utile pour de nombreux cas d’usage, mais qui s’avère malheureusement complexe à manipuler. L’acquisition de données, l’entraînement de modèles, de déploiement de réseaux de neurones requièrent à l’origine d’importantes compétences techniques.
Cependant, grâce aux différents frameworks de Machine Learning, l’accès à cette technologie s’est beaucoup simplifié au fil des années. Parmi ces frameworks, on compte notamment PyTorch, CNTK, MXNet, et Google Tensorflow.
TensorFlow : qu’est-ce que c’est ?
Créé par l’équipe Google Brain en 2011, sous la forme d’un système propriétaire dédié au réseaux de neurones de Deep Learning, TensorFlow s’appelait à l’origine DistBelief. Par la suite, le code source de DistBelief a été modifié et cet outil est devenu une bibliothèque basée application. En 2015, il a été renommé TensorFlow et Google l’a rendu open source. Depuis lors, il a subi plus de 21000 modifications par la communication et est passé en version 1.0 en février 2017.
Pour faire simple, TensorFlow est une bibliothèque de Machine Learning, il s’agit d’une boîte à outils permettant de résoudre des problèmes mathématiques extrêmement complexes avec aisance. Elle permet aux chercheurs de développer des architectures d’apprentissage expérimentales et de les transformer en logiciels.
On peut le concevoir comme un système de programmation dans lequel les calculs sont représentés sous forme de graphiques. Les noeuds du graphique représentent les opérations mathématiques, et les bordures représentent des flèches de données multidimensionnelles communiquées entre elles : les tensors.
TensorFlow regroupe un grand nombre de modèles et d’algorithmes de Machine Learning et de Deep Learning. Son API front-end de développement d’applications repose sur le langage de programmation Python, tandis que l’exécution de ces applications s’effectue en C++ haute-performance.
Cette bibliothèque permet notamment d’entraîner et d’exécuter des réseaux de neurones pour la classification de chiffres écrits à la main, la reconnaissance d’image, les plongements de mots, les réseaux de neurones récurrents, les modèles sequence-to-sequence pour la traduction automatique, ou encore le traitement naturel du langage.
Tensorflow : comment ça fonctionne ?
TensorFlow permet aux développeurs de créer des graphiques de dataflow (dataflow graphs), à savoir des structures qui décrivent la façon dont les données se déplacent sur un graphique ou une série de noeuds de traitement.
Chaque noeud du graphique représente une opération mathématique, et chaque connexion entre ces noeuds est une flèche de données multidimensionnelle : un tensor.
Les noeuds et les tensors sont des objets Python, et les applications TensorFlow sont elles-mêmes des applications Python. Cependant, les opérations mathématiques en elles-mêmes ne sont pas effectuées en Python. Les bibliothèques de transformation disponibles sur TensorFlow sont écrites en C++ haute-performance. Ainsi, le Python se contente de diriger le trafic entre les éléments et fournit des abstractions de programmation de haut niveau pour les connecter entre eux.
Les applications TensorFlow peuvent être exécutées sur une machine locale, un cluster sur le Cloud, des appareils mobiles iOS ou Android, ou même des CPU et des GPU. Sur la Google Cloud Platform, il est possible d’exécuter TensorFlow sur la TPU (TensorFlow Processing Unit) pour profiter d’une importante accélération.
Quels sont les avantages et inconvénients de TensorFlow ?
Les avantages de TensorFlow sont multiples. Tout d’abord, grâce à l’abstraction, ce framework facilite l’implémentation d’algorithmes et permet au développeur de se focaliser sur la logique générale d’une application.
En outre, le mode » eager execution « permet d’évaluer et de modifier toutes les opérations de graph de façon séparée et transparente plutôt que d’avoir à construire l’intégralité du graphique en tant qu’objet opaque unique et de tout évaluer en une fois. De même, la suite de visualisation TensorBoard permet d’inspecter la façon dont les graphiques fonctionnent par le biais d’un tableau de bord interactif basé web.
En outre, grâce au soutien de Google, le déploiement et l’utilisation de TensorFlow sont facilités. En plus du TPU proposé sur Google Cloud pour accélérer les performances, le géant californien propose aussi un hub online permettant de partager les modèles créés avec TensorFlow ainsi que des versions mobiles et web du framework. Un autre avantage est son caractère open source, personnalisable, et modulaire.
Parmi ses inconvénients, on peut citer le fait qu’un même modèle entraîné sur deux systèmes différents présentera parfois des variations même si les données avec lesquelles il a été nourri sont exactement les mêmes. En outre, TensorFlow ne prend pas en charge OpenCL. Enfin, il requiert des connaissances en calculus avancé et en algèbre linéaire ainsi qu’une importante compréhension du Machine Learning.
- Partager l'article :
Merci pour ce résumé de TensorFlow motivant pour l’utiliser!
Merci pour cette article toujours aussi documenté. Ayant fait une page qui présente Tensorflow également, je ne suis pas entré dans la technique comme vous , je l’aborde sous l’angle des applications concrètes et logiquement, mes conclusions sont un peu différentes.
En particulier, j’ai fait beaucoup de traitement de signal et me heurte aux mêmes problèmes avec Tensorflow : un problème lié au taux d’erreur, comme vous le dites dans votre dernier paragraphe. Des « variations » apparaissent non seulement lors des tests unitaires mais surtout dans les applications où les données en entrée ne diffèrent que très peu.
J’ai déjà connu ces problèmes par le passé avec les FFT. Mes ex-employeurs on fini par jeté l’éponge après avoir beaucoup investi dans la recherche de nouvelles applications. Aussi, il me semble que Tensorflow s’insère mieux dans une logique de traitement de signal où un cas donné ne se présente jamais deux fois à l’identique et les taux d’erreur sont culturellement tolérés.
Notez que l’ia n’est pas mon thème principal.