Qu'est-ce que TensorFlow? La bibliothèque d'apprentissage automatique expliquée

L'apprentissage automatique est une discipline complexe. Mais la mise en œuvre de modèles d'apprentissage automatique est beaucoup moins intimidante et difficile qu'auparavant, grâce aux cadres d'apprentissage automatique, tels que TensorFlow de Google, qui facilitent le processus d'acquisition de données, de formation de modèles, de diffusion de prédictions et d'affinage des résultats futurs.

Créée par l'équipe Google Brain, TensorFlow est une bibliothèque open source pour le calcul numérique et l'apprentissage automatique à grande échelle. TensorFlow regroupe une multitude de modèles et d'algorithmes d'apprentissage automatique et d'apprentissage en profondeur (également appelé réseau neuronal) et les rend utiles au moyen d'une métaphore commune. Il utilise Python pour fournir une API frontale pratique pour créer des applications avec le framework, tout en exécutant ces applications en C ++ haute performance.

TensorFlow peut entraîner et exécuter des réseaux de neurones profonds pour la classification manuscrite des chiffres, la reconnaissance d'image, les imbrications de mots, les réseaux de neurones récurrents, les modèles séquence à séquence pour la traduction automatique, le traitement du langage naturel et les simulations basées sur la PDE (équation différentielle partielle). Mieux encore, TensorFlow prend en charge la prédiction de production à grande échelle, avec les mêmes modèles utilisés pour la formation.

Comment fonctionne TensorFlow

TensorFlow permet aux développeurs de créer des graphiques de flux de données, des structures qui décrivent comment les données se déplacent à travers un graphique ou une série de nœuds de traitement. Chaque nœud du graphique représente une opération mathématique et chaque connexion ou arête entre les nœuds est un tableau de données multidimensionnel, ou tenseur .

TensorFlow fournit tout cela pour le programmeur via le langage Python. Python est facile à apprendre et à utiliser, et fournit des moyens pratiques d'exprimer comment des abstractions de haut niveau peuvent être couplées. Les nœuds et les tenseurs dans TensorFlow 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 effectuées en Python. Les bibliothèques de transformations disponibles via TensorFlow sont écrites en tant que binaires C ++ hautes performances. Python dirige simplement le trafic entre les pièces et fournit des abstractions de programmation de haut niveau pour les relier.

Les applications TensorFlow peuvent être exécutées sur presque toutes les cibles pratiques: une machine locale, un cluster dans le cloud, des appareils iOS et Android, des processeurs ou des GPU. Si vous utilisez le propre cloud de Google, vous pouvez exécuter TensorFlow sur le silicium TensorFlow Processing Unit (TPU) personnalisé de Google pour une accélération supplémentaire. Cependant, les modèles résultants créés par TensorFlow peuvent être déployés sur la plupart des appareils sur lesquels ils seront utilisés pour diffuser des prédictions.

TensorFlow 2.0, publié en octobre 2019, a réorganisé le cadre de nombreuses manières en fonction des commentaires des utilisateurs, pour le rendre plus facile à utiliser (par exemple, en utilisant l'API Keras relativement simple pour la formation des modèles) et plus performant. La formation distribuée est plus facile à exécuter grâce à une nouvelle API, et la prise en charge de TensorFlow Lite permet de déployer des modèles sur une plus grande variété de plates-formes. Cependant, le code écrit pour les versions antérieures de TensorFlow doit être réécrit - parfois légèrement, parfois de manière significative - pour tirer le meilleur parti des nouvelles fonctionnalités de TensorFlow 2.0.

Avantages de TensorFlow

Le principal avantage de TensorFlow pour le développement de l'apprentissage automatique est l' abstraction. Au lieu de s'occuper des détails de la mise en œuvre d'algorithmes ou de trouver des moyens appropriés pour associer la sortie d'une fonction à l'entrée d'une autre, le développeur peut se concentrer sur la logique globale de l'application. TensorFlow s'occupe des détails dans les coulisses.

TensorFlow offre des fonctionnalités supplémentaires aux développeurs qui ont besoin de déboguer et de s'introspectionner dans les applications TensorFlow. Le mode d'exécution rapide vous permet d'évaluer et de modifier chaque opération de graphe séparément et de manière transparente, au lieu de construire le graphe entier comme un seul objet opaque et de tout évaluer en même temps. La suite de visualisation TensorBoard vous permet d'inspecter et de profiler la façon dont les graphiques s'exécutent au moyen d'un tableau de bord interactif basé sur le Web.

TensorFlow bénéficie également de nombreux avantages du soutien d'une entreprise commerciale de premier ordre dans Google. Google a non seulement alimenté le rythme rapide de développement du projet, mais a également créé de nombreuses offres importantes autour de TensorFlow qui le rendent plus facile à déployer et à utiliser: le silicium TPU susmentionné pour des performances accélérées dans le cloud de Google; un hub en ligne pour partager les modèles créés avec le framework; des incarnations dans le navigateur et adaptées aux mobiles du framework; et beaucoup plus.

Une mise en garde: certains détails de l'implémentation de TensorFlow rendent difficile l'obtention de résultats de formation de modèle totalement déterministes pour certains travaux de formation. Parfois, un modèle entraîné sur un système variera légèrement d'un modèle entraîné sur un autre, même lorsqu'ils reçoivent exactement les mêmes données. Les raisons en sont glissantes (par exemple, comment les nombres aléatoires sont amorcés et où, ou certains comportements non déterministes lors de l'utilisation de GPU). Cela dit, il est possible de contourner ces problèmes et l'équipe de TensorFlow envisage davantage de contrôles pour affecter le déterminisme dans un flux de travail.

Vidéo connexe: Apprentissage automatique et IA déchiffrés

Brisant le battage médiatique autour de l'apprentissage automatique et de l'intelligence artificielle, notre panel aborde les définitions et les implications de la technologie.

TensorFlow contre la concurrence

TensorFlow est en concurrence avec de nombreux autres frameworks d'apprentissage automatique. PyTorch, CNTK et MXNet sont trois principaux frameworks qui répondent à plusieurs des mêmes besoins. Ci-dessous, j'ai noté où ils se démarquent et se heurtent à TensorFlow.

  • PyTorch , en plus d'être construit avec Python, présente de nombreuses autres similitudes avec TensorFlow: des composants à accélération matérielle sous le capot, un modèle de développement hautement interactif qui permet un travail de conception au fur et à mesure, et de nombreux composants utiles déjà inclus. PyTorch est généralement un meilleur choix pour le développement rapide de projets qui doivent être opérationnels en peu de temps, mais TensorFlow l'emporte sur les projets plus volumineux et les flux de travail plus complexes.

  • CNTK , le Microsoft Cognitive Toolkit, comme TensorFlow, utilise une structure graphique pour décrire le flux de données, mais se concentre surtout sur la création de réseaux de neurones d'apprentissage en profondeur. CNTK gère plus rapidement de nombreux travaux de réseau neuronal et dispose d'un ensemble plus large d'API (Python, C ++, C #, Java). Mais CNTK n'est actuellement pas aussi facile à apprendre ou à déployer que TensorFlow.

  • Apache MXNet , adopté par Amazon en tant que premier cadre d'apprentissage en profondeur sur AWS, peut évoluer de manière presque linéaire sur plusieurs GPU et plusieurs machines. Il prend également en charge une large gamme d'API de langage - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - bien que ses API natives ne soient pas aussi agréables à travailler que celles de TensorFlow.