Pour optimiser ses services, Uber mise sur l'IA à grande échelle

Pour optimiser ses services, Uber mise sur l'IA à grande échelle Détection des zones de VTC à fort potentiel, estimation des temps de course, personnalisation des suggestions de restaurants Uber Eats... Le groupe déploie le machine learning tous azimuts.

Uber a commencé à développer sa propre plateforme de machine learning (ML) dès 2015. L'enjeu : se doter d'une infrastructure industrielle pour tous les projets d'IA nécessaires à l'optimisation de ses activités et à la personnalisation de ses services. La solution en question devant, dans le même temps, être aisément dimensionnable en termes de ressources IT pour encaisser le trafic massif et croissant du VTC et de ses offres associées, au premier rang desquelles son service de livraison de repas Uber Eats. "Des centaines de cas d'usage représentant des milliers de modèles d'apprentissage sont désormais en production en permanence sur ce système. Ce qui représente des millions de prédictions réalisées chaque seconde", explique Jeremy Hermann (lire le poste de blog), responsable de la plateforme de machine Learning d'Uber. Et de préciser : "Des centaines de data scientists, ingénieurs, responsables de produit et chercheurs gravitent autour de l'environnement."

Au cœur de son activité de VTC, Uber applique d'abord des algorithmes d'autoapprentissage aux historiques de course de ses chauffeurs. Objectif : construire des modèles de prédiction spatiotemporelle pour recommander à ces derniers des zones où se rendre à des horaires donnés présentant les meilleures probabilités de dénicher des clients. Le calcul prend évidemment en compte le ratio offre / demande. En aval, le machine learning est utilisé pour estimer la durée de la course, soit le fameux indicateur d'estimated times of arrival (ETA).

"Nous sommes parvenus grâce à l'intelligence artificielle à réduire le taux moyen d'erreur de nos ETA de plus de 50% dans certains cas", souligne Jeremy Hermann. Enfin, l'IA est appliquée aux données de géolocalisation des conducteurs (GPS) dans l'optique de détecter d'éventuels comportements suspects, un arrêt prolongé d'un véhicule par exemple qui pourrait traduire une situation d'accident. Le cas échéant, Uber envoie une notification au conducteur et au passager pour proposer une assistance.

Une infrastructure big data Spark

Ce n'est pas tout. En parallèle, Uber a recours au machine learning pour automatiser en partie son support client. Un véritable défi pour la société californienne. Sur quelque 15 millions de déplacements gérés quotidiennement par le VTC, des milliers de tickets de support sont transmis chaque jour par les utilisateurs à son système de help desk. "Dans ce domaine, la première version de nos modèles, basée sur des arbres de décisions, nous a permis d'accélérer de 10% le temps de résolution des tickets de support. La seconde version, à base de deep learning, a engendré une accélération des traitements d'encore 6%", indique Mike Del Balso, responsable produit senior du machine learning chez Uber. Pour le plus long terme, la société planche déjà sur des modèles de deep learning taillés pour supporter ses futurs systèmes de voitures autonomes, notamment autour du calcul de trajectoire et de la détection d'objets sur les routes.

"A un même workflow s'applique une grande variété de scénarios : machine learning, deep learning, apprentissage supervisé, semi-supervisé et non-supervisé..."

Sous le capot, Uber a mis sur pied une plateforme d'IA faite maison. Baptisée Michelangelo (en référence au sculpteur, peintre, architecte, poète et urbaniste florentin de la Haute Renaissance), elle couvre tout le cycle de vie du machine learning : gestion des données d'apprentissage, entrainement et évaluation des modèles, déploiement, évaluation des prédictions en situation réelle... L'environnement se veut modulaire pour répondre au cas d'usage les plus standards comme les plus spécialisés. "Sachant qu'à un même workflow peut s'appliquer une grande variété de scénarios : machine learning traditionnel, deep learning, apprentissage supervisé, semi-supervisé et non-supervisé, traitement batch ou temps réel, prédictions intégrant des données temporelles...", égraine-t-on chez Uber.

Lors du lancement du projet Michelangelo en 2015, Uber entendait en premier lieu s'équiper d'une infrastructure d'IA répondant à ses exigences d'audience. Face à ce défi, le groupe s'est tourné d'une part vers les frameworks big data Hadoop HDFS pour stocker les volumes massifs de données nécessaires à ses algorithmes et Spark pour les traiter, d'autre part vers le langage Java pour optimiser le temps d'exécution des modèles (lire les posts publiés par Uber en septembre 2017 et octobre 2018). "Cette infrastructure fonctionne très bien pour édifier et déployer nombre de modèles, mais pêche en termes de flexibilité et de facilité d'utilisation, en particulier pour le prototypage et l'expérimentation", explique de concert Jeremy Hermann et Mike Del Balso.

Un machine learning Python

En vue de gagner en souplesse, Uber a depuis migré ses principaux workflows de création de modèles de sa console historique d'entrainement vers un tout nouvel environnement. Baptisé Data Science Workbench (DSW), il s'articule autour d'une interface de programmation très orientée data, ou notebook, optimisée pour bâtir des modèles en s'adossant au langage Python. Sachant que d'autres langages de programmation sont aussi supportés, comme R ou Scala, pour répondre aux cas d'usage les plus variés.

Organisation des différentes équipes d'Uber gravitant autour de la plateforme Michelangelo. © Capture JDN / blog Uber

Amené à devenir la solution phare d'Uber pour concevoir ses modèles de ML, DSW met en musique des librairies d'algorithmes diverses, telles Scikit-learn et XGBoost, ou encore PyTorch et TensorFlow. Il orchestre des processus d'entrainement autour de l'apprentissage profond sur des clusters GPU, de modèles linaires ou en arbres sur des clusters CPU... Pour mettre la puissance informatique de sa plateforme de modélisation historique à la portée de DSW, Uber a bâti une série de librairies logicielles enrichissant Spark de composants et API couvrant traitements en mode batch, temps réel, scoring à base de requête/réponse. Ces différentes briques, qu'Uber envisage d'ailleurs de publier en open source, sont elles-mêmes intégrées à Spark via son API Python (PySpark). Au final, le groupe américain bénéficie ainsi à la fois de la facilité d'utilisation de Python combinée à la richesse de son offre d'algorithmes, et des capacités de dimensionnement informatique de Spark et Java.

Dans le sillage de cette démarche, Uber s'est équipé d'un kit de développement (le PyML SDK) taillé pour créer et packager des modèles de ML en Python puis les transférer sur la plateforme Michelangelo. Cette dernière se chargeant ensuite d'orchestrer leur stockage, leur déploiement et leur exécution (lire le post sur le sujet). L'entrainement des modèles peut être aussi bien mis en œuvre sur des clusters installés dans les propres data centers d'Uber que sur des grappes de serveurs provisionnées sur un cloud public. En parallèle, Uber ne se prive pas de recourir à des algorithmes probabilistes (de type bayésien) pour aider ses data scientists à dénicher les meilleurs paramètres de configuration de modèles dans l'optique de rendre ces derniers toujours plus précis et d'en optimiser les temps de training. En décembre, Uber a par ailleurs décidé de publier en open source Horovod, son infrastructure d'entrainement de modèles de deep learning. Un outil compatible avec les frameworks Keras, PyTorch et TensorFlow.