TensorFlow
En novembre 2015, Google a publié son cadre open source de machine learning, baptisé TensorFlow. Il prend en charge le deep learning, les réseaux de neurones et les calculs numériques généraux sur des CPU, des GPU et des clusters de GPU. L'un des avantages majeurs de TensorFlow réside dans sa nature open source et sa communauté de développeurs, de data scientists et de data engineers qui contribuent au repository. Vous trouverez la version actuelle de TensorFlow sur GitHub, accompagné de notes de version. TensorFlow est de loin le moteur d'IA le plus populaire en usage actuellement.
Qu'est-ce que TensorFlow ?
TensorFlow est une bibliothèque open source dédiée au calcul numérique, au machine learning à grande échelle, au deep learning et autres charges de travail de statistique et d'analytique prédictive. Ce type de technologie simplifie et accélère le travail des développeurs qui mettent en œuvre des modèles de machine learning en soutenant plusieurs tâches, dont l'acquisition des données, la livraison de prédictions à grande échelle et l'affinage des résultats futurs.
Mais que fait TensorFlow exactement ? Ce moteur entraîne et exécute des réseaux de neurones profonds pour réaliser des tâches comme la classification de chiffres manuscrits, la reconnaissance d'images, l'intégration de mots et le traitement du langage naturel (TAL). Le code contenu dans ses bibliothèques logicielles peut être ajouté à tout type d'application pour lui permettre d'apprendre ces tâches.
Les applications TensorFlow s'exécutent aussi bien sur des processeurs traditionnels que sur des GPU (processeurs graphiques haute performance). Et comme TensorFlow a été développé par Google, il fonctionne également sur les processeurs de tenseurs (TPU) de l'entreprise, qui sont spécialement conçus pour accélérer les tâches TensorFlow.
Vous vous demandez dans quel langage TensorFlow est écrit ?Bien qu'il utilise Python comme API front-end pour le développement d'applications, il possède en réalité des wrappers dans plusieurs langages, dont C++ et Java. Vous pouvez donc entraîner et déployer votre modèle de machine learning rapidement, quels que soient le langage et la plateforme que vous avez l'habitude d'utiliser.
Cliquez ici pour connaître les réponses aux questions fréquentes sur le développement de modèles TensorFlow.
L'histoire TensorFlow
Google a publié TensorFlow pour la première fois en 2015 sous licence Apache 2.0. Son prédécesseur, un framework Google fermé appelé DistBelief, a servi de banc d'essai pour l'implémentation du deep learning.
Les premiers TPU de Google ont été présentés au public en 2016. Ils étaient alors utilisés en interne avec TensorFlow pour alimenter une partie des applications et services en ligne de l'entreprise. Parmi eux, les plus notables sont sans doute l'algorithme de recherche RankBrain et la technologie cartographique de Street View.
Début 2017, Google TensorFlow est passé en version 1.0.0. Un an plus tard, Google a mis la deuxième génération de TPU à la disposition des utilisateurs de Google Cloud Platform afin qu'ils puissent entraîner et exécuter leurs propres modèles de machine learning.
La version la plus récente du moteur, TensorFlow 2.0, a été publiée en octobre 2019. Google a pris en compte les retours des utilisateurs afin d'apporter diverses améliorations au framework et de faciliter son exploitation. Pour prendre un exemple, il utilise désormais l'API Keras, relativement simple, pour l'entraînement des modèles.
Qui a créé TensorFlow ?
Comme vous le savez, Google a créé TensorFlow. L'entreprise reste propriétaire du framework et en assure la maintenance. TensorFlow est le fruit du travail des chercheurs de l'équipe Google Brain, qui mènent des travaux de recherche fondamentale pour faire progresser des domaines stratégiques de l'intelligence machine et améliorer la compréhension théorique du deep learning.
L'équipe Google Brain a mis au point TensorFlow pour pouvoir travailler indépendamment de l'infrastructure de calcul de Google, mais l'appui d'un géant commercial a de nombreux avantages pour le modèle. En plus de financer le développement rapide du projet, Google a également amélioré TensorFlow au fil des ans pour faciliter son déploiement et son utilisation.
Google a choisi de faire de TensorFlow un framework open source dans le but d'accélérer le développement de l'IA. Le projet repose largement sur la communauté : tous les utilisateurs peuvent contribuer à l'amélioration de la technologie et tous profitent de ces avancées.
Comment fonctionne TensorFlow ?
TensorFlow combine plusieurs modèles et algorithmes de machine learning et de deep learning (ou réseaux de neurones) et les rend exploitables par le biais d'une interface commune.
Cette interface permet aux développeurs de créer des graphes de flux de données composés de nœuds de calcul qui représentent des opérations mathématiques. Chaque connexion entre des nœuds représente des vecteurs ou des matrices multidimensionnels, et crée ce qu'on appelle un tenseur.
Si l'API front-end de TensorFlow est en Python, les opérations mathématiques elles-mêmes ne sont pas effectuées dans ce langage. Ce sont en effet des binaires C++ haute performance qui réalisent ces opérations en coulisses. Python dirige le trafic entre les différents éléments et les articule au moyen d'abstractions programmatiques de haut niveau.
Les applications TensorFlow peuvent être exécutées sur toutes les cibles ou presque : appareils iOS et Android, machines locales, cluster dans le cloud, mais aussi CPU et GPU (et même sur les TPU personnalisés de Google si vous utilisez Google Cloud).
TensorFlow comprend des API haut niveau et bas niveau. Google recommande d'utiliser les API de haut niveau pour simplifier le développement de pipelines de données et la programmation d'applications, mais les API de bas niveau (appelées TensorFlow Core) sont utiles à des fins de debugging et d'expérimentation.
Dans quel cadre utilise-t-on TensorFlow ? Que peut-on faire avec TensorFlow ?
TensorFlow est conçu pour optimiser le processus de développement et d'exécution d'applications d'analytique avancée pour les data scientists, les statisticiens et les créateurs de modèles prédictifs.
De nombreuses entreprises de secteur et de taille variables utilisent le framework pour automatiser les processus et développer de nouveaux systèmes, et il est particulièrement pertinent dans les applications de traitement parallèle à grande échelle comme les réseaux de neurones. Il est également employé dans le cadre d'expérimentations et de tests avec les véhicules autonomes.
Comme vous pouvez l'imaginer, Google utilise aussi TensorFlow pour ses opérations internes, en particulier pour améliorer les capacités de récupération d'informations de son moteur de recherche et pour alimenter des applications de génération de réponse automatique aux e-mails, de classification d'images et de reconnaissance optique des caractères.
TensorFlow offre notamment l'avantage de fournir une couche d'abstraction : les développeurs peuvent se concentrer sur la logique globale de l'application tandis que le framework se charge des détails. C'est également très pratique pour les développeurs qui ont besoin de déboguer et d'explorer en profondeur des applications TensorFlow.
La suite de visualisation TensorBoard propose un tableau de bord web interactif qui permet d'inspecter et de profiler l'exécution des graphes. Un mode d'exécution agressif vous permet également d'évaluer et de modifier chaque opération de graphe de façon distincte et transparente, au lieu de faire du graphe complet un seul objet opaque et de l'évaluer dans sa globalité.
Le Databricks Runtime pour le machine learning inclut TensorFlow et TensorBoard : vous pouvez donc utiliser ces bibliothèques sans installer aucun package.
Voyons maintenant comment utiliser TensorFlow.
Installation de TensorFlow
Vous trouverez des instructions complètes et des tutoriels sur tensorflow.org, mais voici les bases.
Configuration système requise :
- Python 3.7+
- pip 19.0 ou plus (requiert la prise en charge de manylinux2010 et TensorFlow 2 exige une version plus récente de pip)
- Ubuntu 16.04 ou plus (64 bits)
- macOS 10.12.6 (Sierra) ou plus (64 bits) (GPU non pris en charge)
- Windows 7 ou plus (64 bits)
Configuration matérielle requise :
- À partir de TensorFlow 1.6, les binaires utilisent des instructions AVX qui ne sont pas toujours compatibles avec les CPU anciens.
- La prise en charge des GPU nécessite une carte compatible CUDA® (Ubuntu et Windows)
1. Installez l'environnement de développement Python sur votre système
Vérifiez si votre environnement Python est déjà configuré :
python3 - -version
pip3 - -version
Si ces packages sont déjà installés, passez immédiatement à l'étape suivante.
Autrement, installez Python, le gestionnaire de package pip et venv.
Si vous n'êtes pas dans un environnement virtuel, utilisez python3 -m pip dans les commandes ci-dessous. Vous aurez ainsi l'assurance de mettre à niveau et d'utiliser le pip Python plutôt que le pip système.
2. Créez un environnement virtuel (recommandé)
Les environnements virtuels Python permettent d'isoler l'installation des packages du reste du système.
3. Installez le package pip TensorFlow
Choisissez l'un des packages TensorFlow suivants et installez-le depuis PyPI :
- tensorflow – dernière version stable avec prise en charge des CPU et des GPU (Ubuntu et Windows)
- tf-nightly – version en accès anticipé (non stable). GPU pris en charge sur Ubuntu et Windows
- tensorflow==1.15 – version finale de TensorFlow 1.x.
Vérifiez l'installation. Si la commande renvoie un tenseur, vous avez bien installé TensorFlow.
Remarque : certains mécanismes d'installation requièrent l'URL du package Python TensorFlow. La valeur que vous indiquerez dépend de votre version de Python.
Mise à jour de TensorFlow
Le gestionnaire de package pip offre une méthode simple pour mettre à jour TensorFlow, quel que soit votre environnement.
Prérequis :
- Python 3.6 à 3.9 installé et configuré (vérifiez la version de Python avant de commencer).
- TensorFlow 2 installé.
- Gestionnaire de packages pip version 19.0 ou plus (vérifiez la version de pip et faites la mise à niveau si nécessaire).
- Ouvrez la ligne de commande/le terminal ou l'environnement de notebook.
Pour passer à une version plus récente de TensorFlow :
1. Ouvrez le terminal (Ctrl+Alt+T).
2. Vérifiez la version de TensorFlow actuellement installée :
pip3 show tensorflow
La commande affiche des informations sur le package et précise sa version.
3. Passez à une version plus récente de TensorFlow à l'aide de la commande suivante :
pip3 install - -upgrade tensorflow==<version>
Veillez à sélectionner une version compatible avec votre version de Python, sans quoi elle ne s'installera pas. Pour l'environnement de notebook, utilisez la commande suivante et redémarrez le noyau quand elle a abouti :
!pip install - -upgrade tensorflow==<version>
Cette commande supprime automatiquement l'ancienne version et ses dépendances, puis installe la version plus récente.
4. Vérifiez que vous détenez bien une nouvelle version en lançant :
pip3 show tensorflow
Qu'est-ce que TensorFlow Lite ?
En 2017, Google a introduit une nouvelle version de TensorFlow, intitulée TensorFlow Lite. TensorFlow Lite est optimisé pour les appareils embarqués et mobiles. C'est un cadre de deep learning open source, interopérable et prêt pour la production qui convertit un modèle TensorFlow préentraîné dans un format spécifique. Ce format peut ensuite être optimisé pour la vitesse ou le stockage.
Pour être sûr d'utiliser la version la plus adaptée à votre scénario, vous devez savoir quand utiliser TensorFlow ou TensorFlow Lite. Par exemple, si vous avez besoin de déployer un modèle de deep learning dans une zone dépourvue d'une bonne connexion au réseau, vous allez privilégier TensorFlow Lite pour réduire la taille de fichier.
Si vous développez un modèle pour un dispositif de périphérie, il doit être léger afin d'occuper le minimum d'espace et d'accroître la vitesse de téléchargement sur les réseaux à faible bande passante. Pour obtenir ce résultat, vous allez l'optimiser de façon à réduire la taille du modèle ou améliorer la latence, ce que TensorFlow Lite réalise grâce à la quantification et à l'élagage de pondérations.
Les modèles optimisés sont suffisamment légers pour être déployés à des fins d'inférence à faible latence sur des appareils de périphérie (téléphones Android ou iOS, par exemple) ou des dispositifs Linux embarqués comme des Raspberry Pis ou des microcontrôleurs. TensorFlow Lite utilise également plusieurs accélérateurs matériels pour gagner en vitesse et en précision tout en réduisant la consommation d'énergie, qui sont autant de paramètres essentiels pour exécuter des inférences en périphérie.
Qu'est-ce qu'une couche dense dans TensorFlow ?
Les couches denses sont aussi bien employées dans la création de réseaux de neurones superficiels que profonds. Les réseaux de neurones artificiels sont des architectures semblables au cerveau : composés d'un système de neurones, ils sont capables d'apprendre à partir d'exemple, sans être programmés à l'aide de règles spécifiques.
Dans le deep learning, plusieurs couches sont utilisées pour extraire des caractéristiques de haut niveau à partir des entrées brutes. Quand le réseau est constitué de plusieurs couches, on l'appelle réseau de neurones en pile. Chacune de ces couches est composée de nœuds qui combinent les données d'entrée en leur appliquant des coefficients (ou pondérations) qui amplifient ou atténuent l'entrée.
Pour sa version 2.0, TensorFlow a adopté une API de deep learning appelée Keras, qui se superpose à TensorFlow et fournit plusieurs couches prédéfinies pour différentes architectures de réseaux de neurones aux applications diverses. Une couche dense relève de cette catégorie. Elle est profondément connectée : chaque neurone reçoit les entrées de tous les neurones des couches précédentes.
Les couches denses sont généralement utilisées pour modifier des dimensions, pivoter, agrandir, réduire et effectuer la translation des vecteurs qu'elles produisent. Elles ont la capacité d'apprendre des caractéristiques à partir de l'ensemble des caractéristiques combinées de la couche précédente.
Quelle est la différence entre TensorFlow et Python ?
TensorFlow est un framework open source de machine learning, tandis que Python est un langage de programmation très répandu. C'est l'un des langages utilisés dans TensorFlow. TensorFlow utilise également C++ et JavaScript, mais on recommande d'employer Python.
Python a été développé pour aider les programmeurs à rédiger du code clair et logique pour les petits comme les grands projets. On l'utilise souvent pour créer des sites web et des logiciels, automatiser des tâches et effectuer des analyses. Sa popularité facilite la prise en main de TensorFlow par les débutants.
Une question utile : quelle version de Python est prise en charge par TensorFlow ? Certaines versions de TensorFlow ne sont compatibles qu'avec des versions spécifiques de Python, et la version 2.0 requiert Python 3.7 à 3.10.Vérifiez soigneusement la configuration système requise avant d'installer TensorFlow.
Que sont PyTorch et TensorFlow ?
TensorFlow n'est pas le seul cadre de machine learning disponible actuellement. Il existe d'autres options, comme PyTorch, qui a des points communs avec TensorFlow et répond en grande partie aux mêmes besoins. Quelle est donc réellement la différence entre TensorFlow et PyTorch ?
PyTorch et TensorFlow sont simplement deux cadres développés par des entreprises technologiques pour l'environnement de deep learning Python. Ils aident des ordinateurs au fonctionnement semblable à celui des humains à résoudre des problèmes du monde réel. En revanche, PyTorch et TensorFlow divergent sensiblement dans la façon dont ils exécutent le code. PyTorch est plus étroitement intégré au langage Python.
Comme nous l'avons vu, TensorFlow possède de robustes capacités de visualisation, offre des options de déploiement prêtes pour la production et prend en charge les plateformes mobiles. PyTorch n'est pas aussi établi, mais il jouit déjà d'une certaine popularité du fait de sa simplicité d'utilisation, mais aussi de ses graphes de calcul dynamique et de son utilisation efficace de la mémoire.
Quant à savoir lequel de TensorFlow ou PyTorch est le mieux, tout dépend de l'objectif que vous poursuivez. Si votre but est de développer des produits basés sur l'IA, vous privilégierez TensorFlow, tandis que PyTorch sera une meilleure option pour des activités de recherche. PyTorch est idéal pour mettre rapidement des projets sur pied, mais TensorFlow offre des capacités plus robustes pour les grands projets et les workflows complexes.
Ils utilisent TensorFlow
Selon le site web de TensorFlow, de nombreux entreprises parmi les plus grandes utilisent le framework, en plus de Google. Citons par exemple Airbnb, Coca-Cola, eBay, Intel, Qualcomm, SAP, Twitter, Uber, Snap Inc. (le développeur de Snapchat) et la société de conseil sportif STATS LLC.
Les cinq principales alternatives à TensorFlow
1. DataRobot
DataRobot est un cadre de machine learning basé dans le cloud et conçu pour aider les entreprises à élargir leurs capacités en data science en déployant des modèles de machine learning et en créant des applications d'IA avancées.
Le cadre vous permet d'utiliser et d'optimiser les techniques de modélisation open source les plus performantes de R, Python, Spark, H2O, VW et XGBoost. En automatisant l'analytique prédictive, DataRobot aide les data scientists et les analystes à créer des modèles prédictifs plus précis.
Il s'accompagne d'une bibliothèque de fonctionnalités, d'algorithmes et de valeurs de paramètres qui s'agrandit régulièrement et facilite la création de chaque modèle. De plus, grâce à l'assemblage automatisé, les utilisateurs n'ont aucun mal à trouver et combiner différents algorithmes et prototypes prédéfinis pour extraire des caractéristiques et préparer les données (sans les longues périodes de tâtonnement).
2. PyTorch
Développé par l'équipe de Facebook et publié en open source sur GitHub en 2017, PyTorch fait partie des frameworks de deep learning les plus récents. Comme nous l'avons mentionné plus tôt, il partage plusieurs traits avec TensorFlow, dont ses composants d'accélération matérielle et un modèle de développement hautement interactif permettant la conception à la volée.
PyTorch optimise également ses performances en s'appuyant sur la prise en charge native de l'exécution asynchrone propre à Python. Il offre plusieurs avantages, parmi lesquels des graphes dynamiques intégrés et une communauté plus solide que celle de TensorFlow.
En revanche, PyTorch n'offre pas de cadre pour le déploiement direct en ligne de modèles entraînés, et il faut un serveur d'API pour la production. Il requiert également un outil tiers (Visdom) pour la visualisation, dont les fonctionnalités sont assez limitées.
3. Keras
Keras est une bibliothèque de réseau de neurones open source et de haut niveau, conçue dans une optique de convivialité, de modularité et d'extensibilité. Rédigée en Python, elle prend en charge plusieurs moteurs de calcul de réseau de neurones. Son back-end principal et par défaut reste toutefois TensorFlow, et elle a Google comme premier soutien.
Nous avons déjà mentionné l'API de haut niveau TensorFlow Keras, et Keras s'exécute également sur Theano. Elle propose un certain nombre de modules indépendants à combiner : couches de neurones, fonctions de coût, fonctions d'optimisation, schémas d'initialisation, fonctions d'activation et schémas de régularisation.
Keras prend en charge un large éventail d'options de déploiement en production et offre une compatibilité robuste avec l'utilisation de multiples GPU et l'entraînement distribué. Le support communautaire reste cependant minime, et la bibliothèque n'est généralement employée qu'avec de petits datasets.
4. MXNet
Apache MXNet est un cadre logiciel open source pour le deep learning qui permet de définir, entraîner et déployer des réseaux de neurones profonds sur un large éventail d'appareils. Il a l'honneur d'avoir été adopté par Amazon comme principal cadre de deep learning sur AWS.
Il peut s'étendre de façon quasi linéaire sur plusieurs GPU et machines, ce qui accélère l'entraînement des modèles et rend possible un modèle de programmation flexible qui permet de mélanger programmation symbolique et impérative pour un maximum d'efficacité et de productivité.
MXNet a également l'avantage d'être compatible avec des API de différents langages de programmation, dont Python, C++, Scala, R, JavaScript, Julia, Perl et Go (bien que ses API ne soient pas aussi ergonomiques que TensorFlow).
5. CNTK
Le CNTK, ou Microsoft Cognitive Toolkit, est un ensemble unifié d'outils de deep learning qui emploient une structure de graphe pour décrire la circulation des données sous la forme d'une série d'étapes de calcul (exactement comme TensorFlow, excepté qu'ils sont plus difficiles à prendre en main et à déployer).
Ces outils sont principalement axés sur la création de réseaux de neurones de deep learning et peuvent traiter ces tâches rapidement. Le CNTK permet aux utilisateurs de concrétiser et combiner des types courants de modèles comme les réseaux de neurones profonds (DNN) à propagation avant, les réseaux à convolution (CNN) et les réseaux récurrents (RNN/LSTM).
CNTK offre un large éventail d'API (Python, C++, C#, Java) et peut être inclus en tant que bibliothèque dans vos programmes en Python, C# ou C++. Vous pouvez enfin l'utiliser comme outil de machine learning autonome via son propre langage de description de modèle, BrainScript. Il s'exécute sur les systèmes d'exploitation 64 bits Linux et Windows.
Remarque : La version 2.7 est la version la plus récente du CNTK et aucun nouveau développement n'est prévu pour le moment.
Dois-je utiliser TensorFlow ?
Les avantages de TensorFlow sont nombreux. Ce framework de machine learning open source offre un excellent support architectural qui facilite le déploiement de cadres de calcul sur diverses plateformes. Il bénéficie également de la réputation de Google, et plusieurs acteurs majeurs ont adopté TensorFlow pour réaliser des tâches d'intelligence artificielle.
En revanche, certains détails de l'implémentation de TensorFlow empêchent d'obtenir des résultats totalement déterministes lors de certaines tâches d'entraînement des modèles. Sachez toutefois que l'équipe envisage de fournir davantage de contrôles afin d'influer sur le déterminisme d'un workflow.
Sa prise en main est simple, en particulier si vous optez pour TensorFlow avec Databricks, une intégration prête à l'emploi qui s'appuie sur le Databricks Runtime pour le machine learning. Quelques secondes suffisent pour créer des clusters et commencer à exploiter toute une gamme d'API de haut et bas niveaux.