🔍
Mettre le Machine Learning en production chez Ubisoft (PydataMTL June22)

Mettre le Machine Learning en production chez Ubisoft (PydataMTL June22)

Note: Cet article a été traduit avec Claude Code le 31 janvier 2026. La version originale est disponible ici.

Cet article explorera le parcours de la mise en production du machine learning de la recherche et du développement chez Ubisoft, une entreprise mondiale de premier plan dans le jeu vidéo. Plus précisément, nous plongerons dans la création et l’évolution d’une plateforme pour soutenir les data scientists et les ingénieurs machine learning dans la construction et l’intégration de pipelines ML au sein de l’écosystème Ubisoft. Cette version mise à jour de ma présentation à PyData Montréal en juin 2022 mettra en évidence les défis et les succès de la mise en œuvre du ML en production, la direction future de la plateforme et son rôle dans l’avancement de l’utilisation du ML chez Ubisoft.

Machine Learning chez Ubisoft: Un regard de l’intérieur

Pour commencer cette section, je pense qu’une présentation rapide d’Ubisoft est nécessaire :)

Ubisoft est une entreprise française née en 1986 en France (en Bretagne) et a installé un bureau à Montréal en 1997.

Ubisoft a plus de 45 bureaux dans le monde, et cela représente environ 21000 talents dans le monde, avec environ 4000 employés à Montréal, ce qui fait du bureau MTL le plus grand studio de jeux vidéo au monde. De plus, Ubisoft est assez célèbre pour plusieurs marques, d’Assassin’s creed à Just dance.

Ubisoft fait partie de l’industrie du divertissement, représentant des milliards de dollars par an. Le jeu vidéo a récemment dépassé l’industrie cinématographique en termes de profit, et nous pouvons maintenant voir de nouveaux acteurs arriver sur le marché, comme Netflix ou ByteDance (celui derrière TikTok), qui veulent obtenir une part du gâteau.

Il convient de noter que plus de 200 personnes chez Ubisoft utilisent le machine learning dans leur travail (chiffres LinkedIn). Ces professionnels proviennent de divers horizons et utilisent le machine learning pour résoudre divers problèmes, du marketing au développement de jeux. Cela démontre l’investissement significatif d’Ubisoft dans la data science et le machine learning.

Recruitment website illustration

Pour vous donner une idée du type de projets abordés en interne, j’ai fait une petite sélection de projets présentés à l’extérieur d’Ubisoft :

  • Génération procédurale de contenu (vidéo): développé par Player Analytic France, l’idée est de retravailler le flux de conception des niveaux en mélangeant l’interaction des bots et le feedback humain sur les niveaux générés.
  • Deep RL pour le développement de jeux (vidéo, article): développé par La Forge MTL, le pathfinding dans les jeux vidéo est un grand sujet pour l’IA dans le jeu, et cette équipe a développé une nouvelle solution dans la navigation des bots sur une carte. Il offre la possibilité d’avoir des personnages non jouables intelligents pour rendre le jeu plus immersif.
  • Zoobuilder (vidéo, article): développé par le Ubisoft China AI Lab (récemment intégré La Forge), ce projet a abordé un sujet non conventionnel autour de la capture de mouvement d’animaux sauvages. Sur le papier, c’est très difficile à mettre en place (amener une girafe une capture de mouvement), et il y a une question éthique. Pourtant, cette équipe a développé une solution pour extraire à partir de vidéos le mouvement du squelette de l’animal ; pour ce faire, ils ont utilisé des données de moteur de jeu pour créer les données d’entraînement du système.

Mais ce n’est que la pointe de l’iceberg ML chez Ubisoft, et il y a bien plus de projets sous le capot.

Comme vous pouvez vous y attendre, amener le ML de la R&D à la production peut être complexe et difficile ; un excellent exemple de ce défi a été fait par des collègues l’année dernière lors de la conférence GDC dans leur talk. Basé sur le type d’application, par exemple, les besoins et les contraintes ne sont pas les mêmes pour une IA dans le jeu ou un système de recommandation pour un magasin dans le jeu. En 2018, amener le ML dans le jeu, il n’y avait pas vraiment de solution standard, principalement du piratage de systèmes existants pour construire du ML. Pourtant, certaines solutions standard commencent à émerger dans l’écosystème Ubisoft, et notre plateforme fait partie de la solution pour faciliter l’intégration.

Construire une plateforme ML adaptée à un sorcier: Un cas d’usage Ubisoft

Introduction

Notre plateforme a été initiée en 2018, inspirée par le travail du Montreal User Research Lab chez Ubisoft MTL. Cette équipe a développé une solution pour servir des recommandations dans un magasin dans le jeu en utilisant la plateforme analytique.

Hacking meme illustration

Pourtant, le projet n’était pas standardisé et imposait des contraintes importantes sur la plateforme analytique, qui n’était pas conçue pour le gérer. En conséquence, notre équipe a été formée avec l’objectif de concevoir une plateforme plus évolutive pour les data scientists et les ingénieurs machine learning pour construire des pipelines ML qui pourraient être facilement intégrés dans l’écosystème Ubisoft.

Alors mettons l’éléphant hors de la pièce tout de suite sur le nom de notre plateforme. Elle s’appelle Merlin, et le logo a évolué au fil des années.

Logo merlin illustration

Donc nous ne sommes pas le seul Merlin dans la ville ML ; il y en a un chez NVIDIA qui est plus axé sur les systèmes de recommandation basés sur l’apprentissage profond et un chez Shopify qui est plus similaire à notre plateforme. Fait amusant sur le nom nous avions beaucoup de possibilités à l’été 2018, et les finalistes étaient Merlin et Merlan (et nous avons préféré un mage à un poisson).

Voyons maintenant la plateforme plus en détail.

Composants

Notre plateforme a été inspirée par la plateforme Michelangelo d’Uber, publiée en 2017, et principalement axée sur le service de systèmes de recommandation. La plateforme a la structure suivante en termes de composants :

Merlin components illustration

Notre plateforme est hors de l’écosystème de données Ubisoft ; elle est construite au-dessus d’AWS avec les composants suivants :

  • Un “feature store”: Un référentiel pour stocker les ‘features’ utilisées pour entraîner et déployer des modèles de machine learning.
  • Un espace d’expérimentation: Un espace de travail conçu pour expérimenter avec différents modèles en utilisant Jupyter.
  • Un espace de production: C’est là que les modèles de machine learning sont entraînés, scorés et surveillés.
  • Service: la zone où les prédictions sont produites ou servies en fonction du type de cas d’usage (prédictions par lots ou en direct)

Le “feature store” est actuellement construit au-dessus de S3 et du catalogue glue ; ce n’est pas un feature store traditionnel mais plutôt une collection de bases de données et de tables que nous utilisons pour stocker les données nécessaires et produites lors de l’exécution du pipeline ML ou de l’expérience. La connexion avec l’écosystème de données Ubisoft se fait via une étape qui synchronise les données vers notre plateforme et peut être exécutée à la fin de chaque traitement ETL des données utilisées dans un projet ML.

Les différents espaces (expérimentation et production) sont construits sur la même fondation pour l’infrastructure, EMR et EC2. La plupart de nos clients utilisent Spark pour l’ETL et Mllib pour l’entraînement et le scoring, mais nous avons récemment ajouté la possibilité d’utiliser un seul EC2 (avec ou sans GPU) pour travailler de manière plus non distribuée.

L’espace d’expérimentation est là pour explorer de nouvelles approches pour un projet (comme faire des expériences hors ligne) ou creuser dans les prédictions servies ; aussi, il est accessible via SSH, donc il est facile d’expérimenter avec de nouveaux packages dedans.

Pour l’espace de production, dans ce cas, pas d’interaction directe avec lui mais via un Airflow hébergé sur AWS. Notre instance déclenche l’espace de production, et tous les DAG sont définis via un dépôt GitLab lié au projet. Cette connexion est facilitée par un outil appelé Optimus, et la conception du DAG est faite via un fichier YAML dans le dépôt qui définira les DAG.

Yaml file 2 illustration

Il permet aux utilisateurs de définir :

  • le planning du DAG,
  • l’ordre des étapes
  • le type de machine qu’ils veulent utiliser

(Avec les machines GPU le fichier/en-tête a été récemment mis à niveau mais l’idée globale est toujours là)

Cette approche donne beaucoup de flexibilité à l’utilisateur qui veut exécuter un DAG régulièrement (sans obligation de servir quelque chose). Le déploiement est fait via un CI/CD déclenché manuellement.

Enfin, la partie service de notre plateforme donne actuellement la possibilité de servir des prédictions différemment :

  • Mode par lots: Mettre à jour régulièrement les prédictions avec l’espace de production ; ces prédictions sont stockées dans dynamoDB et sont appelées via une API
  • Mode en direct: Un ajout récent à la plateforme, cette fonctionnalité est construite sur un cluster Kubernetes avec Seldon Core et etc et peut être accessible via l’API.

L’API est une partie critique de la plateforme et doit répondre à des attentes de performance spécifiques. Pour faciliter l’intégration avec d’autres systèmes, elle est appelable via un service interne appelé Ubiservices qui est standard chez Ubisoft et utilisé par tous les jeux et services. Voici un exemple du point de terminaison API pour récupérer les prédictions par lots.

Call illustration

Un aspect vital de l’espace de service est le concept de fallbacks. Ces listes par défaut sont utilisées comme sauvegarde au cas où il n’y aurait pas de prédictions disponibles à envoyer. C’est une mesure de sécurité importante en cas d’échec dans le composant de machine learning, et c’est généralement une bonne pratique pour tout système de machine learning. Nous encourageons également les programmeurs qui s’intègrent à l’API à avoir leur fallback au cas où notre API ne serait pas accessible (par exemple, en cas de panne d’un fournisseur de cloud).

Alors maintenant voyons plus en détail le workflow d’un utilisateur.

Game On: Workflow et cas d’usage dans la plateforme ML d’Ubisoft

Workflow

En tant qu’utilisateur de la plateforme, il y a d’abord un accès à obtenir et avoir un cas d’usage réel qui vise à aller en production.

Avec ces conditions remplies, le point d’entrée principal de la plateforme est le portail ; c’est là que les utilisateurs peuvent accéder à leur espace de travail pour expérimenter avec des modèles ou vérifier leurs fonctionnalités et prédictions.

Portal illustration

Ce portail est également un excellent endroit pour interagir avec le pipeline et mettre à jour les fallbacks pour une application spécifique directement depuis une UI.

Il y a également des guides dans le portail qui peuvent accompagner un DS ou un programmeur en ligne pour utiliser notre plateforme (et définir les permissions correctes pour les applications et les personnes pour interagir avec la plateforme).

Avec les espaces de travail, également en parallèle de cela, nous avons donné aux utilisateurs la possibilité de suivre leurs expériences ou modèles via une instance mlflow hébergée dans notre plateforme ; nous avons commencé à utiliser mlflow en 2019.

Il offre un bon compromis en termes de maintenance et d’adoption dans la communauté ML. Mais nous commençons à voir de nouveaux besoins liés à la visualisation et aux permissions que le mlflow open source actuel manque, mais une solution comme clearML couvre.

De plus, mlflow est utilisé pour suivre les pipelines de machine learning fonctionnant en production. C’est utile car cela nous permet de lier l’exécution du DAG avec des expériences et des exécutions mlflow, de versionner les jeux de données et les prédictions, et de revenir en arrière dans le temps pour vérifier l’exactitude des prédictions ou la qualité des données utilisées pour l’entraînement ou le scoring. Encore une fois, cela aide à assurer la fiabilité et la transparence de nos processus de machine learning.

Notre plateforme est liée à un package python que nous appelons merlin-SDK qui offre un ensemble de modules pour faciliter la vie des praticiens ML dans notre plateforme.

Il aborde certains aspects d’un pipeline ML comme :

  • Services en ligne: pour interagir avec le service en ligne d’Ubisoft
  • Alerting: pour écrire et envoyer rapidement une alerte via différents canaux (slack, teams ou email)
  • Fonctions d’aide: pour interagir avec le stockage de données dans un contexte EMR ou EC2, manipuler des objets de date, ou faire un traitement de données récurrent
  • Suivi du pipeline ml/expérience: actuellement, ces fonctions sont construites au-dessus de mlflow, mais nous avons rendu le nom agnostique du système utilisé.
  • Qualité des données: pour vérifier les données produites par l’ETL ou avant l’entraînement lorsque différentes sources de données sont jointes
  • Tests AB: faire un test AB est essentiel dans le contexte de production, donc nous avons ajouté récemment certaines fonctions pour faciliter le processus de faire un test AB et évaluer les impacts.

Ce package est un projet inner source, donc nos utilisateurs peuvent également participer à sa construction.

Il est important de noter que toutes les équipes n’ont pas besoin d’utiliser tous les composants de la plateforme. Par exemple, certaines équipes peuvent utiliser uniquement la partie service car elles ont déjà un pipeline fonctionnant chez Ubisoft et doivent encore passer à la plateforme. Il permet aux équipes d’adopter la plateforme de manière plus flexible, “à la carte”, ce qui facilite l’intégration dans leur workflow.

Et avec cela, voyons où la plateforme est utilisée dans l’écosystème Ubisoft.

Cas d’usage

Actuellement, notre plateforme alimente plusieurs projets (environ 15) autour d’Ubisoft, de la personnalisation dans le jeu (contenu dans le jeu) à la personnalisation hors du jeu (amis et magasin) ou des services améliorés par ML (comme la détection de tricheurs). La plupart de nos cas d’usage sont des systèmes de personnalisation ; il y a un aperçu des jeux où la plateforme sert (ou servira) des prédictions.

Games w merlin illustration

Cette plateforme est utilisée par plusieurs équipes chez Ubisoft de San Francisco, Montréal, France et Chine (et la liste s’agrandit). Certains des jeux sont soutenus par les DS de notre équipe (comme moi). Notre équipe a récemment livré une fonctionnalité de prédiction en direct pour Just Dance 2023, qui permet au jeu de prédire la prochaine chanson à jouer en fonction des actions de la session en cours. Nous avons travaillé avec l’équipe Player Analytics France pour déployer leur modèle et améliorer l’expérience de jeu dans le jeu. Vous pouvez trouver plus d’informations sur ce projet ICI.

Supposons que vous vouliez voir plus de détails sur les applications déployées. Dans ce cas, je vous invite à jeter un œil au talk avec deux anciens collègues qui exploitent la partie service de Merlin pour alimenter un système de recommandation d’amis dans Ubisoft connect.

Cela conclut la présentation de la plateforme ML que nous avons construite au fil des années.

Récapitulatif

Après plus de quatre ans, notre plateforme a atteint un niveau de maturité et d’utilisation chez Ubisoft qui est impressionnant et apporte de la valeur au quotidien chez Ubisoft, mais il y a encore tellement plus à faire.

Un aspect essentiel de notre travail à venir est la mutualisation. Nous ne sommes pas la seule équipe travaillant sur le machine learning en production au Ubisoft Data Office (bien que nous soyons la seule équipe travaillant sur une plateforme) et chez Ubisoft plus généralement. Récemment, nous avons fusionné avec des équipes en France et en Chine spécialisées dans la sécurité/support des joueurs, comme l’exploitation de systèmes de détection de fraude, par exemple (plus dans la vidéo suivante).

Cette nouvelle expertise nous permettra d’améliorer la plateforme de diverses manières, comme la rendre plus rentable et conviviale et ajouter de nouveaux services. De plus, nous visons à continuer de soutenir nos utilisateurs internes et de rendre la plateforme encore plus précieuse pour eux.

J’espère que vous avez apprécié la lecture.