TensorFlow est une bibliothèque logicielle pour l'apprentissage automatique et l'intelligence artificielle, principalement utilisée pour l'entraînement et l'inférence de réseaux de neurones. C'est l'un des frameworks d'apprentissage profond les plus populaires, aux côtés d'autres comme PyTorch. Publié en tant que logiciel libre et open source sous la licence Apache 2.0, TensorFlow a été développé par l'équipe Google Brain pour la recherche interne et l'utilisation en production de Google. La version initiale a été publiée en 2015, avec une version mise à jour, TensorFlow 2.0, suivie en septembre 2019. TensorFlow prend en charge une grande variété de langages de programmation, notamment Python, JavaScript, C++ et Java, facilitant son utilisation dans de nombreux secteurs.
Historique
DistBelief
À partir de 2011, Google Brain a construit DistBelief comme un système d'apprentissage automatique propriétaire basé sur des réseaux de neurones d'apprentissage profond. Son utilisation a rapidement augmenté dans diverses entreprises d'Alphabet, tant dans la recherche que dans les applications commerciales. Google a assigné plusieurs informaticiens, dont Jeff Dean, pour simplifier et refactoriser le code de DistBelief en une bibliothèque plus rapide et plus robuste adaptée aux applications, qui est devenue TensorFlow. En 2009, l'équipe, dirigée par Geoffrey Hinton, avait implémenté la rétropropagation généralisée et d'autres améliorations, permettant de générer des réseaux de neurones avec une précision nettement supérieure, par exemple une réduction de 25 % des erreurs dans la reconnaissance vocale.
TensorFlow
TensorFlow est le système de deuxième génération de Google Brain. La version 1.0.0 a été publiée le 11 février 2017. Bien que l'implémentation de référence fonctionne sur des dispositifs uniques, TensorFlow peut s'exécuter sur plusieurs CPU et GPU (avec des extensions optionnelles CUDA et SYCL pour le calcul général sur unités de traitement graphique). TensorFlow est disponible sur Linux 64 bits, macOS, Windows et les plateformes de calcul mobile, y compris Android et iOS. Son architecture flexible permet un déploiement facile des calculs sur une variété de plateformes (CPU, GPU, TPU), et des postes de travail aux grappes de serveurs jusqu'aux appareils mobiles et périphériques.
Les calculs TensorFlow sont exprimés sous forme de graphes de flux de données avec état. Le nom TensorFlow dérive des opérations que ces réseaux de neurones effectuent sur des tableaux de données multidimensionnels, appelés tenseurs. Lors de la conférence Google I/O en juin 2016, Jeff Dean a déclaré que 1 500 dépôts sur GitHub mentionnaient TensorFlow, dont seulement 5 provenaient de Google.
En mars 2018, Google a annoncé TensorFlow.js version 1.0 pour l'apprentissage automatique en JavaScript. En janvier 2019, Google a annoncé TensorFlow 2.0, qui est devenu officiellement disponible en septembre 2019. En mai 2019, Google a annoncé TensorFlow Graphics pour l'apprentissage profond en infographie.
Unité de traitement tensoriel (TPU)
En mai 2016, Google a annoncé son unité de traitement tensoriel (TPU), un circuit intégré spécifique à une application (ASIC) construit spécifiquement pour l'apprentissage automatique et adapté à TensorFlow. Un TPU est un accélérateur d'IA programmable conçu pour fournir un débit élevé d'arithmétique à faible précision (par exemple, 8 bits), et orienté vers l'utilisation ou l'exécution de modèles plutôt que leur entraînement. Google a annoncé qu'il exécutait des TPU dans ses centres de données depuis plus d'un an et qu'ils offraient des performances optimisées par watt d'un ordre de grandeur supérieur pour l'apprentissage automatique.
En mai 2017, Google a annoncé les TPU de deuxième génération, ainsi que leur disponibilité dans Google Compute Engine. Les TPU de deuxième génération offrent jusqu'à 180 téraflops de performances et, lorsqu'ils sont organisés en grappes de 64 TPU, fournissent jusqu'à 11,5 pétaflops. En mai 2018, Google a annoncé les TPU de troisième génération offrant jusqu'à 420 téraflops de performances et 128 Go de mémoire à large bande passante (HBM). Les pods Cloud TPU v3 offrent plus de 100 pétaflops de performances et 32 To de HBM. En février 2018, Google a annoncé qu'il rendait les TPU disponibles en version bêta sur la plateforme Google Cloud.
Edge TPU
En juillet 2018, l'Edge TPU a été annoncé. L'Edge TPU est une puce ASIC spécialement conçue par Google pour exécuter des modèles d'apprentissage automatique (ML) TensorFlow Lite sur de petits dispositifs de calcul clients tels que les smartphones, connue sous le nom d'informatique en périphérie.
TensorFlow Lite
En mai 2017, Google a annoncé TensorFlow Lite comme une pile logicielle pour prendre en charge les modèles d'apprentissage automatique pour les appareils mobiles et embarqués, et en novembre 2017, a fourni l'aperçu pour développeurs. En janvier 2019, l'équipe TensorFlow a publié un aperçu pour développeurs du moteur d'inférence GPU mobile avec OpenGL ES 3.1 Compute Shaders sur les appareils Android et Metal Compute Shaders sur les appareils iOS. En mai 2019, Google a annoncé que TensorFlow Lite Micro (également connu sous le nom de TensorFlow Lite pour microcontrôleurs) et uTensor d'ARM fusionneraient. Il a été renommé LiteRT en 2024.
TensorFlow 2.0
Alors que la part de marché de TensorFlow parmi les articles de recherche diminuait au profit de PyTorch, l'équipe TensorFlow a annoncé la sortie d'une nouvelle version majeure de la bibliothèque en septembre 2019. TensorFlow 2.0 a introduit de nombreux changements, le plus significatif étant TensorFlow eager, qui a modifié le schéma de différenciation automatique du graphe de calcul statique au schéma "Define-by-Run" popularisé à l'origine par Chainer et plus tard par PyTorch. D'autres changements majeurs incluent la suppression d'anciennes bibliothèques, la compatibilité croisée entre les modèles entraînés sur différentes versions de TensorFlow, et des améliorations significatives des performances sur GPU.
Fonctionnalités
AutoDifférenciation
L'autodifférenciation est le processus de calcul automatique du vecteur de gradient d'un modèle par rapport à chacun de ses paramètres. Avec cette fonctionnalité, TensorFlow peut calculer automatiquement les gradients pour les paramètres d'un modèle, ce qui est utile pour des algorithmes tels que la rétropropagation qui nécessitent des gradients pour optimiser les performances. Pour ce faire, le framework doit suivre l'ordre des opérations effectuées sur les tenseurs d'entrée dans un modèle, puis calculer les gradients par rapport aux paramètres appropriés.
Exécution immédiate
TensorFlow inclut un mode "exécution immédiate", ce qui signifie que les opérations sont évaluées immédiatement plutôt que d'être ajoutées à un graphe de calcul exécuté plus tard. Le code exécuté immédiatement peut être examiné étape par étape via un débogueur, car les données sont augmentées à chaque ligne de code plutôt que plus tard dans un graphe de calcul. Ce paradigme d'exécution est considéré comme plus facile à déboguer en raison de sa transparence étape par étape.
Distribution
Dans les exécutions immédiates et par graphe, TensorFlow fournit une API pour distribuer les calculs sur plusieurs dispositifs avec diverses stratégies de distribution. Ce calcul distribué peut souvent accélérer l'exécution de l'entraînement et de l'évaluation des modèles TensorFlow et est une pratique courante dans le domaine de l'IA.
Pertes
Pour entraîner et évaluer les modèles, TensorFlow fournit un ensemble de fonctions de perte (également connues sous le nom de fonctions de coût). Quelques exemples populaires incluent l'erreur quadratique moyenne, l'entropie croisée catégorielle et la perte de charnière. Ces fonctions mesurent la différence entre les sorties prédites et réelles, guidant le processus d'optimisation pendant l'entraînement.
Impact et adoption
TensorFlow est devenu un outil fondamental dans le domaine de l'apprentissage automatique, permettant aux chercheurs et aux développeurs de construire et de déployer des modèles d'apprentissage profond à grande échelle. Son intégration avec Google Cloud et son support des architectures de réseaux de neurones en ont fait un choix standard dans le monde académique et industriel. La sortie de TensorFlow a contribué à l'adoption plus large des technologies d'intelligence artificielle, influençant les frameworks et outils ultérieurs. En 2024, TensorFlow reste largement utilisé, bien qu'il fasse face à la concurrence de PyTorch dans les contextes de recherche. Son développement continu aborde les défis de performance, d'utilisabilité et de déploiement, garantissant sa pertinence dans le paysage évolutif de l'IA.