Comment Tensorflow donne vie à des joueurs virtuels dans Candy Crush
King, l’éditeur du jeu a développé des joueurs virtuels, entraînés par des modèles de Machine Learning pour tester la difficulté des nouveaux niveaux de Candy Crush.
King, l’éditeur du célèbre jeu Candy Crush a développé une méthode bien à lui pour accélérer les cycles de ses releases : simuler un joueur humain, en utilisant le framework Tensorflow de Google. A l’origine de ce projet, King s’est inspiré de l'évolution de l'algorithme de Deep Learning AlphaGo mis au point par DeepMind.
Pour mémoire, AlphaGo a battu le champion du monde de Go, Lee Sedol, en 2016. Pour simuler l'ancien jeu de Go, AlphaGo a dû jouer et rejouer le jeu encore et encore, en appliquant une technique appelée « la recherche arborescente de Monte Carlo ». Celle-ci utilise un réseau neuronal profond pour « apprendre » et déduire le meilleur coup à faire.
À l'époque, Demis Hassabis, chercheur en intelligence artificielle (IA) et cofondateur de DeepMind (racheté par Google en 2014) a décrit comment des bibliothèques open source, comme TensorFlow, pouvaient permettre aux chercheurs d’apporter le calcul nécessaire aux algorithmes de Deep Learning entre plusieurs CPU ou GPU.
King voulait voir si l'une des techniques utilisées par AlphaGo pouvait être appliquée dans Candy Crush en utilisant TensorFlow. Selon le rapport Octoverse 2018 de GitHub, TensorFlow était de loin le projet open source le plus populaire en 2018.
La simulation est un élément clé pour tester et lancer rapidement des niveaux supplémentaires de Candy Crush. King souhaitait avec cette méthode accélérer le travail des testeurs de jeux pour évaluer la difficulté d'un nouveau niveau avant sa sortie.
« Nous avions l'habitude de livrer un niveau à des joueurs. Ils y jouaient une vingtaine de fois et rédigeaient un rapport. Mais cela prenait environ une semaine et nous voulions pouvoir sortir 15 nouveaux niveaux par semaine », explique Alex Nodet, ingénieur AI chez King. Cette fréquence de tests est clé pour l’éditeur : si King peut tester plus de niveaux, il peut également en placer davantage dans son jeu. Mais ces phases de tests restent lentes, si pratiquées par des humains.
Il y a trois ans, King a ainsi mis en oeuvre un projet de recherche dont l’ambition était de développer une application de Machine Learning bâtie sur TensorFlow. Celle-ci devait tester la faisabilité de mise en place et la fiabilité d’un robot qui exécuterait des simulations et déterminerait le degré de difficulté d’un nouveau niveau de Candy Crush.
Le ML pour rapprocher un joueur réel d'un joueur virtuel
Il a fallu environ six mois pour comprendre le problème et créer le modèle TensorFlow d'un joueur en utilisant l’apprentissage supervisé. « Nous avons fait pas mal d'expériences pour nous rapprocher d'un joueur réel et nous avons modifié l'architecture pour façonner ce joueur », précise l’ingénieur, ajoutant que l'entreprise a dû passer par une vingtaine d'itérations du modèle pour arriver là où elle le souhaitait.
D'après l'expérience d’Alex Nodet, dans un projet de Machine Learning, on ne passe pas son temps à peaufiner le modèle. Le plus difficile est d'obtenir les données dans le bon format et de les transformer en quelque chose qui peut être utilisé.
King a d’ailleurs constaté qu'une grande partie du temps consacré à l'élaboration de nouveaux modèles portait sur le nettoyage, le tagging et la collecte de données.
Mais les données qui servent à entrainer le modèle ne représentent qu'une partie de l'équation. « Avoir un modèle de ML qui est entrainé et qui apprend ne correspond qu’à la moitié du travail », soutient de son côté Philipp Eisen, un ingénieur en Machine Learning chez King.
Selon lui, il est également nécessaire de considérer le fonctionnement du Machine Learning en production, car les données d’apprentissage peuvent avoir un impact considérable sur les performances du modèle. « Il doit être considéré comme un citoyen de premier ordre aux côtés de l'architecture du réseau et des algorithmes d’entrainement », commente-t-il.
King a reposé son projet sur Google Kubernetes Engine et utilisé Cloud Deployment Manager pour déployer ses workloads. Cela lui a permis de créer des centaines de joueurs virtuels, tous entraînés avec des modèles de ML. « Nos capacités de mise à l'échelle n'étaient pas assez dynamiques et le moteur Kubernetes de Google a résolu ce problème. C'est aussi un excellent complément à Google Cloud Machine Learning Engine », ajoute Alex Nodet.
Les données résultantes sont redirigées vers Cloud Pub/Sub, le service de messaging inter-applicatif de Google, pour y être analysées. Cette boucle permet à King d'optimiser la conception de ses jeux et de s'assurer que les nouveaux niveaux ne sont pas trop faciles ou trop difficiles. « Nous avons réussi à transformer notre prototype en un outil en production que les équipes veulent utiliser », lance-t-il encore.
Avec les services de Machine Learning, sur le cloud de Google, King a désormais la capacité de recueillir les commentaires sur un nouveau niveau de Candy Crush en seulement cinq minutes.