De nombreuses bibliothèques open source, parmi lesquelles TensorFlow, PyTorch, CNTK, MXNET et Chainer, entre autres, ont mis en œuvre les blocs de construction nécessaires à la construction de tels modèles, permettant un développement plus rapide et moins sujet aux erreurs. Ceci, à son tour, a favorisé l'adoption de tels modèles à la fois par la communauté de recherche en apprentissage automatique et par les praticiens du secteur, ce qui a permis de faire progresser rapidement la conception de l'architecture et les solutions industrielles.
Autant d’initiatives qui ont encouragé Uber à participer à son tour.
L’entreprise rappelle que « Chez Uber AI, nous avons décidé d’éviter de réinventer la roue et de développer des packages fondés sur les bases solides fournies par les bibliothèques open source. À cette fin, nous avons publié en 2017 Pyro, un langage de programmation probabiliste profond construit sur PyTorch, et avons continué à l'améliorer avec l'aide de la communauté open source. Horovod est un autre outil majeur d’intelligence artificielle open source créé par Horovod, une infrastructure hébergée par la Fondation LF Deep Learning qui permet la formation distribuée de modèles d’apprentissage approfondi sur plusieurs GPU et plusieurs machines ».
Dans le prolongement de son engagement à rendre l’apprentissage en profondeur plus accessible, la société a publié Ludwig, une boîte à outils d’apprentissage en profondeur open source construite sur TensorFlow qui permet aux utilisateurs de former et de tester des modèles d’apprentissage en profondeur sans écrire de code.
Uber assure que « Ludwig est unique dans sa capacité à rendre l'apprentissage en profondeur plus facile à comprendre pour les non-experts et à permettre des cycles d'itération d'amélioration de modèle plus rapides pour les développeurs et les chercheurs expérimentés en apprentissage automatique. En utilisant Ludwig, les experts et les chercheurs peuvent simplifier le processus de prototypage et rationaliser le traitement des données afin de pouvoir se concentrer sur le développement d'architectures d'apprentissage approfondies plutôt que sur la gestion de données ».
Ludwig
Au cours des deux dernières années, Uber a développé Ludwig en interne afin de rationaliser et de simplifier l'utilisation de modèles d'apprentissage en profondeur dans les projets appliqués, car ils nécessitent généralement des comparaisons entre différentes architectures et une itération rapide. « Nous avons été témoins de sa valeur pour plusieurs projets propres à Uber, notamment notre assistant client COTA (Customer Obsession Ticket Assistant), l'extraction d'informations à partir des permis de conduire, l'identification de points d'intérêt lors de conversations entre partenaires chauffeurs et clients, la prévision du délai de livraison des aliments, et bien plus encore. . Pour cette raison, nous avons décidé de le publier en open source, car nous estimons qu’aucune autre solution n’est actuellement disponible avec la même facilité d’utilisation et la même souplesse ».
Initialement, Ludwig a été conçu comme un outil générique permettant de simplifier le processus de développement et de comparaison de modèles dans le traitement de nouveaux problèmes d’apprentissage automatique. Pour ce faire, Uber s’est inspiré d'autres logiciels d'apprentissage automatique, notamment Weka et MLlib. L'idée était de travailler directement avec des données brutes et de fournir un certain nombre de modèles prédéfinis; de Caffe, le caractère déclaratif du fichier de définition; et de scikit-learn, sa plus simple API de programmation.
Selon Uber, cette combinaison d’influences en fait un outil assez différent des bibliothèques d’apprentissage approfondi habituelles tout en le rendant plus général que d’autres bibliothèques spécialisées comme PyText, StanfordNLP, AllenNLP et OpenCV.
« Ludwig fournit un ensemble d'architectures de modèles pouvant être combinées pour créer un modèle de bout en bout pour un cas d'utilisation donné. Par analogie, si les bibliothèques d’apprentissage approfondi fournissent les blocs de construction pour construire votre bâtiment, Ludwig fournit les bâtiments pour créer votre ville, et vous pouvez choisir parmi les bâtiments disponibles ou ajouter votre propre bâtiment à l’ensemble des bâtiments disponibles ».
Les principes de base de la conception de la boîte à outils sont les suivants:
- Aucun codage requis : aucune compétence en codage n'est requise pour former un modèle et l'utiliser pour obtenir des prévisions.
- Généralité : une nouvelle approche basée sur un type de données pour la conception de modèles d'apprentissage en profondeur qui rend l'outil utilisable dans de nombreux cas d'utilisation différents.
- Flexibilité : les utilisateurs expérimentés ont un contrôle approfondi sur la construction de modèles et la formation, tandis que les nouveaux arrivants trouveront qu'il est facile à utiliser.
- Extensibilité : ajout facile d’une nouvelle architecture de modèle et de nouveaux types de données d’entités.
- Compréhensibilité : les composants internes des modèles d'apprentissage en profondeur sont souvent considérés comme des boîtes noires, mais Uber fournit des visualisations standard pour comprendre leurs performances et comparer leurs prévisions.
Ludwig permet à ses utilisateurs de former un modèle d’apprentissage approfondi en fournissant uniquement un fichier tabulaire (tel que CSV) contenant les données et un fichier de configuration YAML qui spécifie les colonnes du fichier tabulaire qui sont des entités en entrée et celles qui sont des variables cible en sortie. La simplicité du fichier de configuration permet un prototypage plus rapide, réduisant potentiellement le temps de codage à quelques minutes. Si plus d'une variable cible de sortie est spécifiée, Ludwig effectuera un apprentissage multitâche, en apprenant à prévoir toutes les sorties simultanément, tâche qui nécessite généralement un code personnalisé.
La définition de modèle peut contenir des informations supplémentaires, notamment des informations de prétraitement pour chaque caractéristique du jeu de données, le codeur ou le décodeur à utiliser pour chaque caractéristique, les paramètres architecturaux de chaque codeur et décodeur et les paramètres de formation. Les valeurs par défaut de prétraitement, de formation et de divers paramètres d'architecture de modèle sont choisis en fonction de l’expérience d’Uber ou sont adaptés des articles universitaires, ce qui permet aux novices de former facilement des modèles complexes. En même temps, la possibilité de définir chacun d’eux individuellement dans le fichier de configuration du modèle offre une flexibilité totale aux experts. Chaque modèle formé avec Ludwig est enregistré et peut être chargé ultérieurement pour obtenir des prévisions sur de nouvelles données. Par exemple, des modèles peuvent être chargés dans un environnement de service pour fournir des prévisions dans des applications logicielles.
La nouvelle idée introduite par Ludwig est la notion de codeurs et de décodeurs spécifiques à un type de données, ce qui donne une architecture hautement modularisée et extensible: chaque type de données pris en charge (texte, images, catégories, etc.) possède une fonction de prétraitement spécifique. En bref, les encodeurs associent les données brutes aux tenseurs et les décodeurs associent les tenseurs aux données brutes.
Source : Uber
Et vous ?
Avez-vous déjà utilisé une boîte à outils pour former et tester des modèles d'apprentissage en profondeur ? Laquelle ?
Qu'en avez-vous pensé ?
Voir aussi :
Un professeur à la retraite de l'Institut de Technologie de Géorgie poursuit Uber et Lyft en justice, pour violation de brevet
Elon Musk : les Teslas autonomes vont faire gagner de l'argent à leurs propriétaires en rivalisant avec Lyft, Uber dans le transport public
Uber s'est servi du spyware Surfcam pour écraser son concurrent GoCatch en Australie, en faisant du « braconnage » de ses chauffeurs
La responsabilité pénale d'Uber n'est pas engagée dans la mort de la femme fauchée par l'un de ses véhicules autonomes, selon une décision de justice