Comment faire fonctionner gratuitement PySc2 de Blizzard et Google Deepmind sur Colabs

TL; DR: Si vous souhaitez commencer avec un environnement GRATUIT d'apprentissage automatique StarCraft II, complet avec du matériel GPU, vous pouvez consulter le carnet de démarrage Google Colab ici:
https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV

Ou une version DQN optimisée ici:

https://colab.research.google.com/drive/18asH_hmCjgUUCb-_-SPgPWkK0MYLPAmk

Ai a maîtrisé les échecs et même récemment le jeu incroyablement complexe de Go.

Cependant, en dehors des jeux de société classiques, les jeux en temps réel ont de nombreux domaines où les techniques actuelles d'apprentissage automatique (ML) échouent.

Les exemples incluent, lorsque des parties du jeu sont cachées ou ce qui est communément appelé «brouillard de guerre», lorsqu'il existe de nombreux boutons ou «actions» que l'algorithme d'apprentissage automatique doit contrôler, lorsqu'il y a plus d'un adversaire dans le jeu. & planification à long terme pour n'en nommer que quelques-uns!

Vers le mois d'août de l'année dernière (2017), Google Deepmind s'est associé à Blizzard Entertainment pour publier ce qui est essentiellement «le prochain grand défi» pour la recherche sur l'Ai.

Prendre Starcraft 2.

StarCraft II est un jeu de stratégie en temps réel basé sur la science-fiction, sorti en 2010

Avant de commencer, vous aurez besoin de:

  • Un ordinateur capable d'utiliser une version à jour de Google Chrome,
  • Une connexion Internet stable,
  • Un modèle d'apprentissage automatique optimisé par Colabs (nous verrons comment vous pouvez le faire dans un petit peu, mais si vous ne vous souciez pas de la façon dont nous avons réussi à le faire, n'hésitez pas à passer à l'article suivant dans la partie 2 «comment pour optimiser votre modèle d'apprentissage automatique pour Colabs »via ce lien)

Pourquoi utiliser Colabs?

Écrire un agent d'apprentissage automatique est difficile.

Si vous n'avez accès qu'à un processeur, la formation d'un modèle d'apprentissage automatique peut consommer des jours de cycles de votre ordinateur juste pour obtenir un résultat unique.

Étant humains, nous nous désintéressons rapidement des projets avec lesquels nous ne pouvons pas interagir au quotidien. Ainsi, obtenir un résultat unique tous les deux ou même quelques semaines (!) Est tout simplement une manière peu pratique de faire des recherches.

De plus, sur une note personnelle, c'est encore plus difficile lorsque vous avez un Macbook Air de 2011 et que vous manquez de choses fantaisistes telles que des tonnes de RAM et un GPU moderne !!!

Entrez au colaboratoire

À la fin de l'année dernière, la recherche Google a publié son outil d'apprentissage automatique, Colaboratory ou Colabs.

Google Colaboratory.

La première version était plutôt cool. Il vous a donné accès à un frontal de style bloc-notes Jupyter qui vous connectait à une machine virtuelle (VM) située sur le cloud de Google - le tout gratuitement.

Cependant, ce qui a vraiment suscité notre intérêt fin janvier (2018), c'est Google Colabs mis à jour pour vous donner un accès gratuit à un GPU !!!

libre,

accès,

à,

une,

GPU,

Avons-nous mentionné que c'était gratuit? Boules de maquereau sacré.

(en guise de note: Google vous donne un accès gratuit à une machine virtuelle avec 11 Go de RAM et GPU NVIDIA K80 !!, la dernière fois que nous avons vérifié, les GPU NVIDIA K80 coûtaient 1500 $ sur Amazon…)

GPU NVIDIA Tesla K80

Quoi de plus surprenant que d'entraîner votre modèle d'apprentissage automatique sur le cloud, entièrement gratuitement, de télécharger les apprentissages de vos modèles, puis de voir les résultats sur VOTRE ordinateur en 12 heures au lieu de jours ou de semaines.

Comment nous l'avons fait.

La partie facile

Nous sommes immédiatement allés travailler pour essayer de voir si la version sans tête de Starcraft 2 sortie l'année dernière (alias moins les graphismes Starcraft) pouvait être téléchargée sur Colabs.

À notre grande surprise, cela a fonctionné.

! wget http://blzdistsc2-a.akamaihd.net/Linux/SC2.4.0.2.zip
--2018-04-10 03: 11: 41-- http://blzdistsc2-a.akamaihd.net/Linux/SC2.4.0.2.zip
Résolution de blzdistsc2-a.akamaihd.net (blzdistsc2-a.akamaihd.net) ... 72.246.56.35, 72.246.56.72
Connexion à blzdistsc2-a.akamaihd.net (blzdistsc2-a.akamaihd.net) | 72.246.56.35 |: 80 ... connecté.
Requête HTTP envoyée, en attente de réponse ... 200 OK
Longueur: 3457493499 (3.2G) [application / zip]
Enregistrement dans: «SC2.4.0.2.zip»

SC2.4.0.2.zip 37% [======>] 1,20 G 28,2 Mo / s eta 84 s
SC2.4.0.2.zip 100% [===================>] 3.22G 30.2MB / s en 2m 10s

2018-04-10 03:13:53 (25,3 Mo / s) - «SC2.4.0.2.zip» enregistré [3457493499/3457493499]

Ensuite à l'ordre du jour, décompressait le client sans tête,

Cela a fonctionné aussi.

! unzip -P iagreetotheeula SC2.4.0.2.zip
Archive: SC2.4.0.2.zip création: StarCraftII / création: StarCraftII / Replays / création: StarCraftII / Battle.net / création: StarCraftII / Battle.net / Cache / création: StarCraftII / Battle.net / Cache / 02 / création : StarCraftII / Battle.net / Cache / 02 / 4e / gonflage: StarCraftII / Battle.net / Cache / 02 / 4e / 024eaf5791a26ab0ab99e5c3ef5c2b96ebbdb176dd8862bfee38a9c3242e4115.s2ma

Bien sûr, vous avez besoin de PySc2 de Deepmind pour pouvoir faire parler votre code Python à Starcraft 2.

Donc, avec une simple commande d'installation… alto! PySc2 est maintenant installé sur Colaboratory.

! pip install pysc2
Collecte de pysc2 Téléchargement de PySC2-1.2-py3-none-any.whl (112kB) 100% | ███████████████████████████████████████ ██ | 112kB 2.1MB / s

La partie difficile

Nous avons ensuite réussi à lancer une instance du client sans tête, mais lorsque PySc2 a tenté de se connecter via une technologie connue sous le nom de websockets, nous avons obtenu une erreur de délai de connexion.

Eh bien, c'était une perte de temps.

Pas assez.

Après un travail acharné, Frank He de notre équipe StarAi a réussi à déboguer Colabs (sans débogueur…) sur la cause première de l'erreur. Pour une excellente explication de la façon dont il a réussi à le faire, n'hésitez pas à vous diriger vers son poste moyen ici.

Il s'est avéré qu'il y avait une erreur d'allocateur de mémoire provoquant le crash du client sans tête SC2 sur Colaboratory.

Alors maintenant, nous avons une version de travail du client sans tête sur Colabs parlant à PySC2

Jouez!

Formation d'un agent d'apprentissage automatique

Will's DQN a été formé sur Google Colabs.

Dans un autre succès récent, l'un des membres de notre équipe, William Xu, a réussi à obtenir une version d'un algorithme d'apprentissage automatique connu sous le nom de DQN travaillant sur le problème de «passage à la balise» à partir de la version initiale de PySC2.

Nous avons décidé d'essayer l'agent de Will sur Colabs et à notre grande surprise, il a commencé à s'entraîner !!!

! PYTHONPATH =. python ~ / pytorch / sc2_agents / BaseTrainer.py --map = MoveToBeacon --train = True
Entrer dans la phase de jeu de charge.
Lancement du prochain jeu.
La prochaine phase de lancement a commencé:

Comment former votre agent.

Tout d'abord et surtout, vous aurez besoin d'une connexion Internet stable. La raison en est que si vous vous déconnectez de Colabs pendant que le modèle s'entraîne, tout votre travail est perdu.

Idéalement, il est préférable de laisser votre modèle d'entraînement pendant la nuit afin de pouvoir vous réveiller le lendemain matin avec de nouveaux résultats d'apprentissage automatique. Si vous êtes comme nous et que vos colocataires aiment regarder Netflix, essayez peut-être de trouver une meilleure connexion Internet où votre modèle peut s'entraîner en toute sécurité!

Assurez-vous également que votre ordinateur ne passe pas à son écran de verrouillage. Nous avons constaté que cela semble également déconnecter Internet.

Vous devrez également optimiser votre modèle d'apprentissage automatique pour Colabs, cette étape est facile et nous avons écrit un article de suivi et dans la partie 2, nous vous montrons comment optimiser votre modèle pour Colabs

Et c'est tout !!

Commencez maintenant >>

Vous trouverez ci-dessous un lien vers notre bloc-notes Colabs qui, si vous utilisez Google Chrome, vous pouvez charger et jouer dans votre navigateur dès maintenant!

Agent de base

https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV

Agent DQN

https://drive.google.com/file/d/18asH_hmCjgUUCb-_-SPgPWkK0MYLPAmk/view?usp=sharing

Partie 2: Comment optimiser votre modèle d'apprentissage automatique Starcraft pour Google Colaboratory.

Nous tenons à remercier Blizzard, Deepmind et Google pour la mise à disposition de ces outils incroyables à la communauté du machine learning et espérons que ce travail incitera les autres à repousser les limites du machine learning en utilisant l'environnement Starcraft 2.
Nous avons rendu ce son facile, mais à vrai dire, ce fut beaucoup de travail acharné. Je voudrais également remercier personnellement Frank He pour le temps qu'il a consacré au débogage du problème d'allocateur de mémoire et William Xu pour ses conseils impressionnants sur l'algorithme DQN.
StarAi est une petite équipe de développeurs, d'ingénieurs d'apprentissage et de chercheurs basés à Sydney, en Australie