Cómo conseguir que Blizzard y PySc2 de Google Deepmind funcionen gratis en Colabs

TL; DR: si desea comenzar con un entorno de aprendizaje automático StarCraft II GRATUITO, completo con hardware de GPU, puede consultar el cuaderno de inicio Google Colab aquí:
https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV

O una versión optimizada de DQN aquí:

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

Ai ha dominado el ajedrez e incluso recientemente el juego increíblemente dimensionalmente complejo de Go.

Sin embargo, fuera de los juegos de mesa clásicos, los juegos en tiempo real tienen muchas áreas donde las técnicas actuales de aprendizaje automático (ML) fallan.

Los ejemplos incluyen, cuando partes del juego están ocultas o lo que comúnmente se conoce como "niebla de guerra", cuando hay muchos botones o "acciones" que el algoritmo de aprendizaje automático necesita controlar, cuando hay más de un oponente en el juego ¡y planificación a largo plazo solo por nombrar algunos!

Alrededor de agosto del año pasado (2017) Google Deepmind se asoció con Blizzard Entertainment para lanzar lo que es esencialmente "el próximo gran desafío" para la investigación de Ai.

Enfrentando a Starcraft 2.

StarCraft II es un juego de estrategia en tiempo real basado en ciencia ficción, lanzado en 2010

Antes de comenzar, necesitará:

  • Una computadora capaz de usar una versión actualizada de Google Chrome,
  • Una conexión a internet estable,
  • Un modelo de aprendizaje automático optimizado de Colabs (veremos cómo puede hacer esto en un momento, pero si no le importa cómo logramos hacerlo, no dude en pasar al siguiente artículo en la parte 2 "cómo para optimizar su modelo de aprendizaje automático para Colabs "a través de este enlace)

¿Por qué usar Colabs?

Escribir un agente de aprendizaje automático es difícil.

Si solo tiene acceso a una CPU, la capacitación de un modelo de aprendizaje automático puede consumir días de los ciclos de sus computadoras solo para obtener un único resultado.

Siendo humanos, perdemos rápidamente interés en proyectos con los que no podemos interactuar día a día. Por lo tanto, obtener un solo resultado cada dos días o incluso semanas (!) Es simplemente una forma poco práctica de hacer una investigación.

Además, en una nota personal, ¡es aún más difícil cuando tienes un Macbook Air de 2011 y te faltan cosas elegantes como toneladas de RAM y una GPU moderna!

Ingrese Colaboratorio

A fines del año pasado, la investigación de Google lanzó su herramienta de aprendizaje automático, Colaboratory o Colabs, para abreviar.

Google Colaboratorio.

El primer lanzamiento fue genial. Le dio acceso a una interfaz de estilo portátil Jupyter que lo conectó a una máquina virtual (VM) ubicada en la nube de Google, todo de forma gratuita.

Sin embargo, lo que realmente despertó nuestro interés a fines de enero (2018) fue que Google actualizó Colabs para darle acceso gratuito a una GPU.

gratis,

acceso,

a,

una,

GPU

¿Mencionamos que era gratis? Bolas de caballa sagrada.

(como nota al margen: ¡Google te da acceso gratuito a una máquina virtual con 11 GB de RAM y GPU NVIDIA K80!, la última vez que lo comprobamos, las GPU NVIDIA K80 iban a $ 1500 en Amazon ...)

GPU NVIDIA Tesla K80

Lo que podría ser más sorprendente que entrenar su modelo de aprendizaje automático en la nube, completamente gratis, descargar los aprendizajes de sus modelos y luego ver los resultados en SU ​​computadora en 12 horas en lugar de días o semanas.

Cómo lo hicimos

La parte facil

Inmediatamente nos pusimos manos a la obra tratando de ver si la versión sin cabeza de Starcraft 2 lanzada el año pasado (también conocida como gráficos de lujo de Starcraft) podría descargarse en Colabs.

Para nuestra sorpresa funcionó.

! 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
Resolviendo blzdistsc2-a.akamaihd.net (blzdistsc2-a.akamaihd.net) ... 72.246.56.35, 72.246.56.72
Conectando a blzdistsc2-a.akamaihd.net (blzdistsc2-a.akamaihd.net) | 72.246.56.35 |: 80 ... conectado.
Solicitud HTTP enviada, esperando respuesta ... 200 OK
Longitud: 3457493499 (3.2G) [aplicación / zip]
Guardar en: "SC2.4.0.2.zip"

SC2.4.0.2.zip 37% [======>] 1.20G 28.2MB / s eta 84s
SC2.4.0.2.zip 100% [===================>] 3.22G 30.2MB / s en 2m 10s

2018-04-10 03:13:53 (25.3 MB / s) - ‘SC2.4.0.2.zip’ guardado [3457493499/3457493499]

El siguiente en la agenda fue descomprimir al cliente sin cabeza,

Eso funcionó también.

! descomprimir -P iagreetotheeula SC2.4.0.2.zip
Archivo: SC2.4.0.2.zip creación: StarCraftII / creación: StarCraftII / Reproducciones / creación: StarCraftII / Battle.net / creación: StarCraftII / Battle.net / Cache / creación: StarCraftII / Battle.net / Cache / 02 / creating : StarCraftII / Battle.net / Cache / 02 / 4e / inflado: StarCraftII / Battle.net / Cache / 02 / 4e / 024eaf5791a26ab0ab99e5c3ef5c2b96ebbdb176dd8862bfee38a9c3242e4115.s2ma

Por supuesto, necesita el PySc2 de Deepmind para poder obtener su código de Python hablando con Starcraft 2.

Entonces, con un simple comando de instalación ... ¡viola! PySc2 ahora está instalado en Colaboratory.

! pip install pysc2
Recopilando pysc2 Descargando PySC2-1.2-py3-none-any.whl (112kB) 100% | ██████████████████████████████ ██ | 112kB 2.1MB / s

La parte dificil

Luego logramos iniciar una instancia del cliente sin cabeza, pero cuando PySc2 intentó conectarse a través de una tecnología conocida como websockets, obtuvimos un error de tiempo de espera de conexión.

Bueno, eso fue una pérdida de tiempo.

No exactamente.

Después de una gran cantidad de trabajo duro, Frank He de nuestro equipo StarAi logró depurar Colabs (sin un depurador ...) sobre la causa raíz del error. Para una excelente explicación de cómo logró hacer esto, siéntase libre de dirigirse a su publicación mediana aquí.

Resultó que había un error de asignación de memoria que causaba que el cliente sin cabeza SC2 se bloqueara en Colaboratory.

Entonces, ahora tenemos una versión de trabajo del cliente sin cabeza en Colabs hablando con PySC2

¡Juego encendido!

Formación de un agente de aprendizaje automático

DQN de Will capacitado en Google Colabs.

En otro éxito reciente, uno de los miembros de nuestro equipo, William Xu, logró obtener una versión de un algoritmo de aprendizaje automático conocido como DQN que funciona en el problema de "mover a baliza" desde la versión inicial de PySC2.

¡Decidimos probar el agente de Will en Colabs y para nuestra sorpresa interminable, comenzó a entrenar!

! PYTHONPATH =. python ~ / pytorch / sc2_agents / BaseTrainer.py --map = MoveToBeacon --train = True
Entrando en la fase de carga del juego.
Lanzamiento del próximo juego.
La siguiente fase de lanzamiento comenzó:

Cómo entrenar a tu agente.

Primero y más importante, necesitará una conexión a Internet estable. La razón es que si se desconecta de Colabs mientras el modelo está entrenando, todo su trabajo duro se pierde.

Idealmente, es mejor dejar su entrenamiento modelo durante la noche para que pueda despertarse a la mañana siguiente para obtener nuevos resultados de aprendizaje automático. Si eres como nosotros y a tus compañeros de piso les gusta ver Netflix, ¡tal vez intentes encontrar una mejor conexión a Internet donde tu modelo pueda entrenar de manera segura!

También asegúrese de que su computadora no agote el tiempo de espera en la pantalla de bloqueo. Hemos descubierto que esto también parece desconectar Internet.

También deberá optimizar su modelo de aprendizaje automático para Colabs, este paso es fácil y hemos escrito un artículo de seguimiento y en la parte 2 le mostramos cómo optimizar su modelo para Colabs

¡¡Y eso es todo!!

Comience ahora >>

A continuación hay un enlace a nuestro cuaderno Colabs que, si está utilizando Google Chrome, ¡puede cargar y jugar en su navegador ahora mismo!

Agente base

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

Agente DQN

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

Parte 2: Cómo optimizar su modelo de aprendizaje automático de Starcraft para Google Colaboratory.

Nos gustaría agradecer a Blizzard, Deepmind y Google por el lanzamiento de estas increíbles herramientas para la comunidad de aprendizaje automático y esperamos que este trabajo inspire a otros a ampliar los límites del aprendizaje automático utilizando el entorno Starcraft 2.
Hemos hecho que esto suene fácil, pero la verdad es que fue mucho trabajo duro. También me gustaría agradecer personalmente a Frank He por la cantidad de tiempo que dedicó a depurar el problema del asignador de memoria y a William Xu por su increíble orientación sobre el algoritmo DQN.
StarAi es un pequeño equipo de desarrolladores, ingenieros de aprendizaje automático e investigadores con sede en Sydney, Australia.