L'apprentissage machine est une discipline complexe. Heureusement, grâce à des frameworks d'apprentissage machine comme TensorFlow de Google, la mise en œuvre de modèles d'apprentissage machine qui facilitent le processus d'acquisition de données, l’entraînement des modèles, les prédictions et l'affinement des futurs résultats, est devenu beaucoup plus simple. Créé par l'équipe Google Brain, TensorFlow est une bibliothèque open source destinée au calcul numérique et à l'apprentissage machine à grande échelle. Ce framework regroupe une multitude de modèles et d'algorithmes d'apprentissage machine et d'apprentissage profond (aussi appelés réseaux neuronaux) qu’elle rend utilisables par le biais d'une métaphore commune. La bibliothèque s’appuie sur Python pour fournir une API de front-end facilement utilisable pour construire des applications avec le framework, tout en exécutant ces applications dans un langage C++ très performant.
TensorFlow peut entrainer et exécuter des réseaux neuronaux profonds pour classer des chiffres manuscrits, la reconnaissance d'images, l'intégration de mots, les réseaux neuronaux récurrents, les modèles « Sequence-to-Sequence » pour la traduction automatique, le traitement du langage naturel et les simulations PDE (équations aux dérivées partielles). Mieux encore, TensorFlow prend en charge la prédiction de la production à l'échelle, avec les mêmes modèles utilisés pour le training.
Fonctionnement de TensorFlow
TensorFlow permet aux développeurs de créer des graphiques de flux de données - des structures qui décrivent le déplacement des données à 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 bord entre les nœuds est un réseau de données multidimensionnel, ou tenseur. TensorFlow fournit tout cela au programmeur via le langage Python. Ce dernier est facile à apprendre et à utiliser, et offre des solutions pratiques pour exprimer comment coupler ensemble des abstractions de haut niveau. Les nœuds et tenseurs de TensorFlow sont des objets Python, et les applications TensorFlow sont elles-mêmes des applications Python.
Cependant, les véritables opérations mathématiques ne sont pas réalisées en Python. Les bibliothèques des transformations disponibles via TensorFlow sont écrites sous forme de binaires C++ hautes performances. Python ne fait que diriger le trafic entre les pièces, et fournit des abstractions de programmation de haut niveau pour les relier entre elles. Les applications TensorFlow peuvent être exécutées sur la plupart des cibles disponibles, à savoir, une machine locale, un cluster dans le cloud, des périphériques iOS et Android, des CPU ou des GPU. Si vous utilisez le cloud de Google, vous pouvez exécuter TensorFlow sur son silicium personnalisé TensorFlow Processing Unit (TPU) pour accélérer le processus. Cependant, les modèles créés par TensorFlow peuvent être déployés sur la plupart des appareils où ils seront utilisés pour les prédictions.
TensorFlow 2.0, en version bêta depuis le mois de juin 2019, apporte différentes évolutions qui tiennent compte des commentaires des utilisateurs en vue de faciliter son usage (par exemple, l’utilisation de l'API Keras, relativement simple, pour entrainer un modèle) et d’accroitre son efficacité. L’entrainement distribué 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 plateformes. 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
L'abstraction est le plus gros avantage de TensorFlow pour le développement de l'apprentissage machine. Au lieu de s'occuper de l'implémentation des algorithmes dans les moindres détails ou de chercher des solutions appropriées pour lier 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 des détails en coulisses.
TensorFlow présente d’autres avantages pour les développeurs ayant besoin de déboguer et d’intervenir de manière plus approfondie sur les apps 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, au lieu de construire le graphique entier comme un seul objet opaque et de l'évaluer en une seule fois. De plus, la suite de visualisation TensorBoard permet d'inspecter et d’esquisser le fonctionnement des graphiques à l'aide d'un tableau de bord Web interactif.
L’autre avantage de TensorFlow, c’est qu’il est supporté par une entreprise commerciale de premier plan. Google a non seulement soutenu le rythme de développement rapide du projet, mais le géant du Net a également créé de nombreuses offres significatives autour de TensorFlow qui facilitent son déploiement et son utilisation : c’est le cas du silicium TensorFlow Processing Unit (TPU) mentionné ci-dessus qui accélère les performances dans le cloud de Google ; un hub en ligne pour partager les modèles créés avec le framework ; des versions du framework adaptées aux navigateurs mobiles ; et beaucoup plus encore.
Une réserve cependant : certains détails dans la mise en œuvre de TensorFlow font qu'il est difficile d'obtenir des résultats totalement déterministes en matière d’entrainement de modèles pour certains types de training. Parfois, un modèle entrainé sur un système ne se comportera pas strictement de la même façon qu’un modèle entrainé sur un autre système, même si on fournit à chacun exactement les mêmes données. Les raisons sont difficiles à appréhender – cela peut être lié par exemple à la manière dont sont répartis les nombres aléatoires et l’endroit où ils se trouvent, 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 agir sur le déterminisme dans un flux de travail.
Commentaire