Utilisez Unity pour aider à résoudre les problèmes d'esprit

large gamme d’environnements

Dans la poursuite de l’Intelligence Générale Artificielle (AGI), nous cherchons à créer des agents capables d’atteindre des objectifs dans un large éventail d’environnements. Au fur et à mesure que nos agents perfectionnent les environnements que nous créons, nous devons continuellement créer de nouveaux environnements qui explorent des capacités cognitives encore non testées.

Les jeux posent depuis longtemps un défi à la recherche sur l’intelligence artificielle (IA), et les plus populaires sont les jeux de société tels que le backgammon, les échecs et le go. Les jeux vidéo tels que Space Invaders, Quake III Arena, Dota 2 et StarCraft II sont récemment devenus plus populaires dans la recherche sur l’IA. Les jeux sont idéaux car ils ont une mesure claire du succès, permettant d’examiner les progrès de manière empirique et de les comparer directement aux humains.

Au fur et à mesure que la recherche AGI progresse, l’intérêt de la communauté des chercheurs pour des jeux plus complexes augmente également. Dans le même temps, les efforts d’ingénierie nécessaires pour transformer les jeux vidéo individuels en environnements de recherche sont difficiles à gérer. De plus en plus, les moteurs de jeu à usage général deviennent le moyen le plus évolutif de créer une grande variété d’environnements interactifs.

Moteurs de jeu à usage général

De nombreuses recherches sur l’IA ont déjà été effectuées dans des moteurs de jeu tels que Project Malmo, basé sur Minecraft ; ViZDoom, basé sur Doom ; et DeepMind Lab, basé sur Quake III Arena. Ces moteurs peuvent être programmés pour créer rapidement de nouveaux environnements – et comme beaucoup d’entre eux ont été écrits pour du matériel plus ancien, ils peuvent fonctionner très rapidement sur du matériel moderne, éliminant ainsi l’environnement en tant que goulot d’étranglement des performances.

Mais ces moteurs de jeu manquent de fonctionnalités importantes. DeepMind Lab, par exemple, est excellent pour apprendre la navigation mais médiocre pour apprendre des concepts de bon sens comme la façon dont les objets se déplacent et interagissent les uns avec les autres.

solitude

Chez DeepMind, nous utilisons Unity, un moteur de jeu flexible et riche en fonctionnalités. La simulation physique unitaire réaliste permet aux agents de faire l’expérience d’un environnement plus ancré dans le monde réel. Un pipeline de rendu moderne fournit des indices visuels plus précis tels qu’un éclairage et des ombres réalistes. Les scripts Unity sont écrits en C#, ce qui est facile à lire et, contrairement aux moteurs personnalisés, donne accès à toutes les fonctionnalités du moteur de jeu. La prise en charge multiplateforme nous permet d’exécuter des environnements à la maison sur nos ordinateurs portables ou à grande échelle dans les centres de données Google. Enfin, à mesure que le moteur Unity continue d’évoluer, nous pouvons nous préparer à l’avenir sans consacrer une grande partie de notre temps d’ingénierie.

Unity comprend une boîte à outils d’apprentissage automatique prête à l’emploi appelée ML-Agents qui vise à simplifier le processus de mise à disposition d’un jeu existant en tant qu’environnement d’apprentissage. DeepMind se concentre sur la création d’une variété d’environnements hétérogènes qui s’exécutent à grande échelle, et à ce titre, nous utilisons dm_env_rpc (voir ci-dessous).

Captures d’écran des environnements d’unité créés dans DeepMind

Différences avec les jeux traditionnels

Les jeux vidéo traditionnels se présentent en temps réel : une seconde à l’écran équivaut à une seconde en simulation. Mais pour les chercheurs en intelligence artificielle, le jeu n’est qu’un flux de données. Les jeux peuvent souvent être traités beaucoup plus rapidement qu’en temps réel, et il n’y a aucun problème si la vitesse du jeu varie considérablement d’un moment à l’autre.

De plus, de nombreux algorithmes d’apprentissage par renforcement évoluent avec plusieurs instances. Cela signifie qu’une seule IA peut jouer à des milliers de jeux simultanément et apprendre d’eux en même temps.

Pour cette raison, nous améliorons le débit plutôt que la latence. Autrement dit, nous mettons à jour nos jeux autant de fois que possible et vous n’avez pas à vous soucier que ces mises à jour soient générées à un rythme constant. Nous exécutons plusieurs jeux sur un seul ordinateur, avec un jeu par cœur de processeur. Les décrochages causés par des fonctionnalités telles que la collecte des ordures – un casse-tête courant pour les fabricants de jeux traditionnels – ne nous préoccupent pas tant que le jeu tourne généralement rapidement.

conteneurs et dm_env_rpc

Les jeux produisent des images, du texte et du son que le joueur peut voir et entendre, et prennent également des commandes d’entrée à partir d’une console de jeu quelconque. La structure de ces données est importante pour les chercheurs en IA. Par exemple, le texte est rendu séparément au lieu d’être dessiné à l’écran. Étant donné que la flexibilité de ce format de données est très importante, nous avons créé une nouvelle bibliothèque open source appelée dm_env_rpcqui agit comme une frontière entre les environnements et les agents.

Avec dm_env_rpc, nous pouvons conteneuriser nos environnements et les publier publiquement. Utiliser un conteneur signifie utiliser une technologie telle que Docker pour empaqueter les binaires précompilés de l’environnement. La conteneurisation nous permet de vérifier nos recherches de manière indépendante. C’est un moyen plus fiable et plus pratique de reproduire des expériences que l’open source, qui peut être confondu par des différences de compilateur ou de système d’exploitation. Pour plus de détails sur la façon de créer un environnement de conteneur, veuillez consulter notre travail sur dm_memorytasks.

Enregistrer un commentaire

Plus récente Plus ancienne

نموذج الاتصال