Aller au contenu

Préférences et cookies

Afin d’améliorer votre expérience sur notre site et de réaliser des statistiques de visites, nous utilisons des cookies. Rien n’est déposé sans votre accord, et le refus n’enlève l’accès à aucun contenu. Ce choix peut être modifié à tout moment.

Gérer les traceursVos données

Personnaliser

ArticleApplications & Développement

Bien exploiter le framework machine learning TensorFlow

Développée à l'origine par Google avant d'être abritée par la fondation Apache en 2015, la bibliothèque open source TensorFlow facilite et accélère l'apprentissage machine. Elle est très populaire dans le domaine de l'intelligence artificielle.

La rédaction

Le machine learning est une discipline complexe. Mais, grâce à des frameworks d'apprentissage machine, la mise en œuvre de modèles de machine learning est beaucoup moins ardue et plus accessible qu'auparavant. De façon générale, les frameworks, comme le TensorFlow de Google, simplifient le processus d'acquisition de données, l’apprentissage des modèles, la génération des prédictions et l'affinement des futurs résultats. Créée par l'équipe Google Brain, TensorFlow est une bibliothèque open source pour le calcul numérique et l'apprentissage machine à grande échelle. Elle regroupe une ribambelle de modèles et d'algorithmes d'apprentissage machine et d'apprentissage profond (également appelés réseaux neuronaux) et les rend utilisables par le biais d'une approche commune.

La bibliothèque utilise le langage Python afin d’offrir une API front-end qui permet de faciliter le développement d’applications avec le framework, tout en exécutant ces applications dans un langage C++ haute performance. TensorFlow peut former et exécuter des réseaux neuronaux profonds pour la classification manuscrite de chiffres, la reconnaissance d'images, l'intégration de mots, les réseaux neuronaux récurrents, les modèles séquence à séquence pour la traduction automatique, le traitement du langage naturel et les simulations basées sur les équations aux dérivées partielles (EDP). Mieux encore, TensorFlow prend en charge la prévision de la production à l'échelle, avec les mêmes modèles utilisés pour l’apprentissage.

Le fonctionnement de TensorFlow

TensorFlow permet aux développeurs de créer des graphiques des flux de données - des structures qui montrent de manière graphique le déplacement des données ou les séries de nœuds de calcul. Chaque nœud du graphique représente une opération mathématique, et chaque connexion ou bord entre les nœuds est une table de données multidimensionnelle appelée Tenseur. TensorFlow fournit tout cela au programmeur par le biais du langage Python. Ce dernier est facile à apprendre et à utiliser, et il offre des solutions pratiques pour exprimer la façon dont les abstractions de haut niveau peuvent être couplées ensemble. Dans TensorFlow, les nœuds et les tenseurs sont des objets Python, et les applications TensorFlow sont elles-mêmes des applications Python.

Cependant, les opérations mathématiques réelles ne sont pas réalisées en Python. Les bibliothèques de transformations disponibles via TensorFlow sont écrites sous forme de binaires C++ à hautes performances. Python ne fait que diriger le trafic entre les éléments et fournit des abstractions de programmation de haut niveau pour les relier entre eux. Les applications TensorFlow peuvent être exécutées sur presque n'importe quelle cible : une machine locale, un cluster dans le cloud, des périphériques iOS et Android, des CPU ou des GPU. De plus, en utilisant le propre cloud de Google, il est possible de faire tourner TensorFlow sur la puce TensorFlow Processing Unit (TPU) spécifiquement conçue de la firme de Mountain View, ce qui permet de bénéficier d’une accélération supplémentaire. Néanmoins, les modèles créés par TensorFlow peuvent être déployés sur la plupart des périphériques sur lesquels ils seront utilisés pour servir les prédictions.

Les avantages de TensorFlow

En matière de développement pour l'apprentissage machine, l'abstraction représente le plus gros apport de TensorFlow. Au lieu de passer du temps sur les multiples détails liés à l'implémentation des algorithmes, ou de chercher les moyens les plus appropriés de relier une fonction en sortie avec une autre fonction en entrée, le développeur peut se concentrer sur la logique globale de l'application, TensorFlow s'occupant de ces détails en arrière-plan. Mais le framework présente d’autres avantages, notamment pour les développeurs qui ont besoin de déboguer et d’avoir plus de visibilité sur le code des applications TensorFlow. Le mode d'exécution rapide permet d'évaluer et de modifier chaque opération graphique séparément et de manière transparente. Il évite de développer « dans le noir » un graphique entier pour l'évaluer en totalité une fois le développement achevé. La suite de visualisation TensorBoard permet d'inspecter et d’esquisser le fonctionnement des graphiques via un tableau de bord interactif basé sur le Web.

Bien sûr, TensorFlow tire aussi de nombreux avantages du soutien de Google. La firme de Mountain View a non seulement favorisé le travail de développement et l’évolution rapide du projet, mais elle a aussi créé de nombreuses offres significatives autour de TensorFlow qui rendent le framework plus facile à déployer et plus facile à utiliser : notamment la puce TPU mentionnée plus haut qui accélère les performances du framework dans le cloud de Google ; un hub en ligne pour partager les modèles créés avec le framework ; des équivalents web et mobile du framework ; et bien plus encore.

Attention cependant : de petits détails dans la mise en œuvre de TensorFlow font qu'il est difficile d'obtenir des résultats totalement déterministes pour certains types d’apprentissage. Il peut arriver qu’un modèle formé sur un système variera légèrement d'un modèle formé sur un autre, même s'ils reçoivent exactement les mêmes données. (Les raisons à cela sont difficiles à cerner : les variations seraient liées au mode de classement des nombres aléatoires ou à certains comportements non déterministes lors de l'utilisation des GPU). Cela dit, il est possible de contourner ces problèmes, et l'équipe de TensorFlow envisage d'autres contrôles pour influer sur le déterminisme dans un flux.

TensorFlow face à la concurrence

TensorFlow est en concurrence avec une multitude de frameworks d'apprentissage machine. C’est le cas en particulier des trois bibliothèques majeures PyTorch, CNTK et MXNet qui répondent à plusieurs besoins identiques. Voici leurs points forts et leurs points faibles par rapport à TensorFlow :

  • PyTorch. Également basé sur Python, PyTorch présente beaucoup d'autres similitudes avec TensorFlow : des composants accélérés par matériel, un modèle de développement hautement interactif qui permet un travail de conception pas à pas, et de nombreux composants utiles déjà inclus. De façon générale, PyTorch constitue un meilleur choix que TensorFlow pour le développement rapide de projets qui doivent être opérationnels en peu de temps. Mais TensorFlow est meilleur pour les projets de plus grande envergure et les workflows plus complexes.

  • CNTK. Comme TensorFlow, le Cognitive Toolkit de Microsoft utilise une structure graphique pour décrire le flux de données. Mais il se concentre surtout sur la création de réseaux neuronaux d'apprentissage profond. CNTK a la capacité de traiter plus rapidement de nombreuses tâches de réseau neuronal et dispose d'un ensemble plus large d'API (Python, C+++, C#, Java). Mais CNTK n'est pas aussi facile à apprendre ou à déployer que TensorFlow.

  • Apache MXNet. C’est le principal framework d’apprentissage profond adopté par Amazon sur AWS. Il peut être mis à l’échelle presque linéairement sur plusieurs GPU et plusieurs machines. Il prend également en charge les API des langages Python, C++, Scala, R, JavaScript, Julia, Perl, Go. Mais, bien que natives, ces API ne sont pas aussi agréables à utiliser que celles de TensorFlow.

Newsletter

La Quotidienne LMI

Recevez chaque matin l’actualité IT de la rédaction.

Bien exploiter le framework machine learning TensorFlow