Theano est une bibliothèque Python et un compilateur optimisant destinés à manipuler et évaluer des expressions mathématiques, en particulier celles à valeurs matricielles. Les calculs dans Theano sont exprimés à l'aide d'une syntaxe de type NumPy et compilés pour s'exécuter efficacement sur des architectures CPU ou GPU. Il a été l'un des premiers outils largement adoptés pour la recherche en apprentissage profond, fournissant une base pour construire et entraîner des réseaux de neurones avant l'essor de cadres modernes comme TensorFlow et PyTorch.
Le projet est né d'une initiative open source principalement développée par l'Institut des algorithmes d'apprentissage de Montréal (MILA) à l'Université de Montréal. Le nom du logiciel fait référence à la philosophe antique Theano, longtemps associée au développement de la moyenne d'or. Sa conception mettait l'accent sur la construction de graphes symboliques, permettant aux chercheurs de définir des opérations mathématiques de manière abstraite puis de les compiler en code natif optimisé, une fonctionnalité qui s'est révélée cruciale pour l'expérimentation en apprentissage automatique.
Historique du développement
Le développement de Theano s'est étendu sur plus d'une décennie, avec sa première version publiée en 2007. À son apogée, il est devenu un outil standard dans la recherche académique en intelligence artificielle, en particulier au sein des communautés de l'Université de Toronto et du MILA. La capacité de la bibliothèque à calculer automatiquement les gradients via la différenciation en mode inverse a joué un rôle déterminant dans l'avancement des techniques de apprentissage profond, y compris les premiers travaux sur les transformeurs et d'autres architectures.
Le 28 septembre 2017, Pascal Lamblin a publié un message de Yoshua Bengio, directeur du MILA, annonçant que le développement majeur cesserait après la version 1.0 en raison des offres concurrentes de grands acteurs industriels. Theano 1.0.0 a ensuite été publié le 15 novembre 2017, marquant la fin de l'implication active du MILA. Cette décision reflétait le changement plus large dans le domaine vers des cadres soutenus par l'industrie avec un écosystème plus étendu.
Le 17 mai 2018, Chris Fonnesbeck a écrit au nom de l'équipe de développement de PyMC que les développeurs de PyMC assumeraient officiellement le contrôle de la maintenance de Theano une fois que l'équipe de développement du MILA se retirerait. Cette transition a assuré la disponibilité continue de la bibliothèque pour les utilisateurs existants. Le 29 janvier 2021, l'équipe PyMC a commencé à utiliser le nom Aesara pour son fork de Theano, introduisant une nouvelle identité tout en préservant les fonctionnalités de base. Plus tard, le 29 novembre 2022, l'équipe de développement de PyMC a annoncé qu'elle forkerait le projet Aesara sous le nom de PyTensor, faisant encore évoluer le code source.
Fonctionnalités principales
L'innovation principale de Theano résidait dans son modèle de calcul symbolique. Les utilisateurs définissaient des expressions mathématiques comme des graphes computationnels, que la bibliothèque optimisait et compilait ensuite. Cette approche offrait plusieurs avantages : différenciation automatique pour l'optimisation basée sur les gradients, accélération GPU via le support CUDA, et améliorations de la stabilité numérique grâce à des simplifications algébriques. Ces fonctionnalités le rendaient particulièrement adapté à l'entraînement de réseaux de neurones, où la rétropropagation nécessite un calcul efficace des gradients.
La syntaxe de type NumPy de la bibliothèque abaissait la barrière pour les chercheurs familiers avec le Python scientifique, permettant un prototypage rapide de modèles novateurs. Son compilateur optimisant pouvait fusionner des opérations, réduire l'utilisation de la mémoire et générer du code spécifique à la plateforme, surpassant souvent les implémentations naïves. Cette focalisation sur la performance était cruciale pour faire passer les expériences de petits prototypes à des tâches plus vastes de apprentissage automatique.
Exemples d'applications
L'utilisation typique de Theano impliquait la définition de variables scalaires ou matricielles et d'opérations. Par exemple, un graphe d'addition simple avec deux scalaires en double précision pouvait être compilé en une fonction Python pour une évaluation répétée. La multiplication matricielle, pierre angulaire de l'algèbre linéaire en apprentissage profond, était simple à implémenter et pouvait exploiter le matériel GPU pour des accélérations substantielles.
Le calcul de gradient était un autre cas d'utilisation emblématique. En appelant theano.tensor.grad, les chercheurs pouvaient dériver automatiquement la dérivée d'une fonction de coût par rapport aux paramètres du modèle, un processus essentiel pour l'entraînement via la descente de gradient stochastique. Cette capacité éliminait le besoin de dériver manuellement les dérivées, accélérant l'itération de recherche.
Des exemples plus avancés incluaient la construction de réseaux de neurones simples avec une couche cachée, où le graphe symbolique de Theano gérait la propagation avant et la rétropropagation de manière transparente. La diffusion, qui permet des opérations entre des tableaux de formes différentes sans remodelage explicite, était également prise en charge, simplifiant le code pour le traitement par lots et les opérations par caractéristiques.
Héritage et impact
L'influence de Theano s'étend au-delà de sa propre durée de vie. Il a directement inspiré la conception de cadres ultérieurs, notamment TensorFlow, qui a adopté des modèles de calcul basés sur des graphes similaires. De nombreux chercheurs formés sur Theano ont migré vers ces successeurs, emportant avec eux ses fondements conceptuels. La bibliothèque a également contribué à l'écosystème plus large de la programmation différentiable, un paradigme désormais central pour les systèmes modernes de IA générative.
Malgré son arrêt, le code source de Theano perdure à travers PyTensor, qui continue de servir la communauté de programmation probabiliste PyMC. Son rôle historique dans la réalisation de percées précoces en apprentissage profond, y compris des travaux sur les grands modèles de langage et d'autres architectures avancées, consolide sa place comme outil fondateur dans le domaine. Le passage du développement académique au développement industriel, qui a motivé sa retraite, a reflété la commercialisation plus large de la recherche en intelligence artificielle à la fin des années 2010.
Voir aussi
- Comparaison des logiciels d'apprentissage profond
- Comparaison des logiciels d'apprentissage automatique
- Programmation différentiable