Aperçu
TensorFlow est une bibliothèque logicielle pour l'apprentissage automatique et l'intelligence artificielle. Elle peut être utilisée pour une gamme de tâches, mais est principalement utilisée pour l'entraînement et l'inférence de réseaux neuronaux. C'est l'un des frameworks d'apprentissage profond les plus populaires, aux côtés d'autres comme PyTorch. TensorFlow est un logiciel libre et open source publié sous la licence Apache 2.0.
Historique
DistBelief
À partir de 2011, Google Brain a construit DistBelief comme un système d'apprentissage automatique propriétaire basé sur des réseaux neuronaux profonds. Son utilisation a connu une croissance rapide dans diverses sociétés d'Alphabet, tant dans les applications de recherche que commerciales. Google a affecté plusieurs informaticiens, dont Jeff Dean, pour simplifier et refactoriser le code de DistBelief en une bibliothèque de qualité applicative plus rapide et plus robuste, 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, ce qui a permis de générer des réseaux neuronaux 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 s'exécute sur des appareils uniques, TensorFlow peut s'exécuter sur plusieurs CPU et GPU (avec des extensions optionnelles CUDA et SYCL pour le calcul généraliste sur unités de traitement graphique). TensorFlow est disponible sur Linux 64 bits, macOS, Windows et les plateformes informatiques mobiles, y compris Android et iOS. Son architecture flexible permet un déploiement facile du calcul 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 de TensorFlow sont exprimés sous forme de graphes de flux de données avec état. Le nom TensorFlow provient des opérations que ces réseaux neuronaux 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) conçu 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 utilisait des TPU dans ses centres de données depuis plus d'un an et qu'ils offraient une performance optimisée 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 performance 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 performance et 128 Go de mémoire à large bande passante (HBM). Les pods Cloud TPU v3 offrent plus de 100 pétaflops de performance et 32 To de HBM. En février 2018, Google a annoncé qu'il rendait les TPU disponibles en version bêta sur la Google Cloud Platform.
Edge TPU
En juillet 2018, l'Edge TPU a été annoncé. L'Edge TPU est la puce ASIC spécialement conçue par Google pour exécuter des modèles d'apprentissage automatique TensorFlow Lite sur de petits appareils clients tels que les smartphones, ce que l'on appelle l'informatique de 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 les shaders de calcul OpenGL ES 3.1 sur les appareils Android et les shaders de calcul Metal 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 allaient fusionner. 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 publication d'une nouvelle version majeure de la bibliothèque en septembre 2019. TensorFlow 2.0 a introduit de nombreux changements, le plus important é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 comprenaient 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 d'un modèle, puis calculer les gradients par rapport aux paramètres appropriés.
Exécution eager
TensorFlow inclut un mode « exécution eager », 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é de manière eager peut être examiné étape par étape à l'aide d'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 eager et par graphe, TensorFlow fournit une API pour distribuer le calcul sur plusieurs appareils 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.
Fonctions de perte
Pour entraîner et évaluer les modèles, TensorFlow fournit un ensemble de fonctions de perte (également appelées 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 valeurs prédites et réelles, guidant le processus d'optimisation pendant l'entraînement.
Métriques
TensorFlow inclut un module de métriques qui fournit des fonctions pour évaluer les performances du modèle, telles que la précision, le rappel et l'aire sous la courbe ROC. Ces métriques sont couramment utilisées pour surveiller la progression de l'entraînement et de la validation.
Optimiseurs
TensorFlow propose une variété d'optimiseurs pour mettre à jour les paramètres du modèle pendant l'entraînement, notamment la descente de gradient stochastique (SGD), Adam, RMSProp et Adagrad. Ces optimiseurs implémentent différentes règles de mise à jour pour minimiser efficacement la fonction de perte.
Keras
TensorFlow s'intègre à Keras, une API de réseau neuronal de haut niveau qui simplifie la construction et l'entraînement de modèles. Keras fournit une interface conviviale pour définir les couches, les modèles et les boucles d'entraînement, ce qui le rend accessible aux débutants comme aux experts.
TensorBoard
TensorBoard est un outil de visualisation inclus avec TensorFlow qui permet aux utilisateurs de surveiller les métriques d'entraînement, de visualiser les graphes de modèles et d'inspecter les plongements. Il aide au débogage et à la compréhension du comportement du modèle.
TensorFlow Serving
TensorFlow Serving est un système de service flexible et haute performance pour les modèles d'apprentissage automatique, conçu pour les environnements de production. Il prend en charge le versionnage des modèles, le déploiement progressif et peut gérer plusieurs modèles simultanément.
TensorFlow Hub
TensorFlow Hub est une bibliothèque pour les modules d'apprentissage automatique réutilisables. Elle permet aux utilisateurs de partager et de découvrir des composants de modèles pré-entraînés, facilitant l'apprentissage par transfert et réduisant le besoin d'entraîner des modèles à partir de zéro.
TensorFlow Extended (TFX)
TensorFlow Extended (TFX) est une plateforme de bout en bout pour déployer des pipelines de ML en production. Elle comprend des composants pour la validation des données, le prétraitement, l'entraînement et le service, permettant des flux de travail de ML évolutifs et fiables.
Applications
TensorFlow est utilisé dans une large gamme d'applications, notamment la reconnaissance d'images, le traitement du langage naturel, la reconnaissance vocale et les systèmes de recommandation. Il est également employé dans la recherche et l'industrie pour des tâches telles que la détection d'objets, l'analyse des sentiments et la modélisation générative. Sa flexibilité et son évolutivité le rendent adapté à la fois à l'expérimentation et au déploiement à grande échelle.
Voir aussi
- Intelligence artificielle
- Apprentissage automatique
- Apprentissage profond
- Réseau neuronal
- Grand modèle de langage
- Transformeur
- OpenAI
- Google DeepMind
- IA générative
- PyTorch
Références
- Documentation officielle de TensorFlow
- Wikipédia : TensorFlow
- Blog Google AI
- Notes de version de TensorFlow