Pregunta:
Alpha Zero vs Lc0 - es hora de auto-juego
acye
2018-12-08 20:11:27 UTC
view on stackexchange narkive permalink

Alpha Zero derrotó a Stockfish después de solo 9 horas de juego propio. Por otro lado, Lc0 ha estado entrenando durante varios meses y, aunque alcanza una fuerza impresionante (por decir lo menos ...), todavía no aplasta a Stockfish. ¿Cuál puede ser la razón de una diferencia tan dramática en la eficiencia del aprendizaje?

Tenga en cuenta que Stockfish no se estaba ejecutando en condiciones óptimas en el partido Alpha0. Era un poco más débil que una versión completa de Stockfish.
Bueno, durante el segundo partido parece que las condiciones fueron justas ...
Por lo que puedo ver, Lc0 se ejecuta en un hardware mucho más normal que AlphaZero.
Dos respuestas:
ahiijny
2019-01-14 12:44:52 UTC
view on stackexchange narkive permalink

En resumen, porque DeepMind tiene TPU . Montones, montones de TPU.

De lejos, la parte más lenta del proceso de entrenamiento es generar juegos de auto-juego . DeepMind usó 5000 TPU para generar juegos de auto-juego, que es una gran potencia de procesamiento. Mientras tanto, Lc0 recurre al poder de procesamiento de clientes voluntarios, que es mucho más lento.

Del artículo de DeepMind publicado en diciembre de 2017 (el énfasis es mío):

Entrenamos una instancia separada de AlphaZero para cada juego. El entrenamiento se llevó a cabo durante 700,000 pasos (mini lotes de tamaño 4096) a partir de parámetros inicializados aleatoriamente, utilizando 5,000 TPU de primera generación para generar juegos de auto-reproducción y 64 TPU de segunda generación para entrenar las redes neuronales.

Para lograr el nivel de rendimiento que AlphaZero obtuvo contra la versión 8 de Stockfish (subóptimamente sintonizada), la ejecución de entrenamiento tomó alrededor de 9 horas y 44 millones de -Juegos de ajedrez:

Table S3: Selected statistics of AlphaZero training in Chess, Shogi, and Go: Mini-batches, training time, training games, and thinking time

Mientras tanto, el proyecto Lc0 se inició en algún momento de enero de 2018 y en abril de 2018, solo habían generado 8.2 millones de los 44 millones de juegos necesarios . Creo que estaban generando alrededor de 200.000 juegos por día en ese momento.

También encontraron muchos errores en el proceso y estaban resolviendo muchas cosas a medida que avanzaban, así que cuando se realizó el primer entrenamiento estancado, la mejor red no era tan buena como AlphaZero. Desde entonces, el proyecto Lc0 ha reiniciado la ejecución de entrenamiento varias veces:

  • antigua principal: la ejecución "principal" original de 192x15, utilizando el motor lczero.exe original. Terminó en agosto de 2018, siendo la última red ID595. (Sin embargo, parece que estas redes ya no aparecen en la lista. Los primeros ID al final de la lista de redes parecen ser estas redes de prueba).
  • test10 : la ejecución de prueba original de 256 x 20. Se trataba de una canalización independiente que utilizaba un motor lc0.exe completamente reescrito que era mucho más rápido en la generación de juegos de auto-juego. La numeración neta para esta ejecución comenzó con ID10000 el 27 de junio de 2018 y finalizó con ID11262 el 30 de agosto de 2018.
  • test20 : una ejecución con varios cambios, comenzando con ID20001 el 30 de agosto de 2018 y finalizando con ID22201 el 16 de noviembre de 2018.
  • test30 : una prueba de ejecución varias ideas nuevas, comenzando con ID30001 el 9 de septiembre de 2018. A partir del 14 de enero de 2019, la mejor red era ID32598.
  • test40 : el 6 de diciembre de El documento AlphaZero de 2018 reveló muchas diferencias entre lo que hizo DeepMind y lo que hizo Lc0, y parece que una nueva ejecución de prueba comenzó con ID40001 el 8 de enero de 2019. A partir de El 14 de enero de 2019, la mejor red fue ID40202.

Para tener una idea de lo bien que le está yendo a Lc0 en comparación con AlphaZero, es más útil observar el Elo con respecto al número total de juegos generados, no tiempo transcurrido. Así es como se ve el gráfico para todo el proyecto Lc0 al 14 de enero de 2019 (tenga en cuenta que se trata de Elo de juego automático, que está inflado en comparación con el Elo real):

graph of self-play Elo vs. number of accumulated games

Como puede ver, han reiniciado la ejecución de entrenamiento muchas veces. También hubo una serie de mini-restablecimientos de arranque durante la ejecución principal original para corregir algunos errores críticos, y también hubo una prueba35 temporal para probar los ajustes de configuración recientemente revelados de el documento AlphaGo de diciembre de 2018. ¡Sí, esto no es confuso en absoluto! (/ s)

Hay muchos cálculos y gráficos en esta hoja de cálculo aquí que comparan el rendimiento de lc0 con AlphaZero. Por ejemplo, aquí está el gráfico de la primera ejecución principal anterior (en la pestaña "Gráficos"):

AlphaZero vs. Leela progression comparison Desde ese enlace, una explicación de lo que "Leela Max" es:

"Leela Max" es el rendimiento máximo teórico de Leela cuando se le da hardware y / o tiempo hasta el punto de rendimientos absolutamente disminuidos. Puede ser más comparable a AlphaZero, ya que AlphaZero operaba en 4.8 millones de nodos por movimiento, mientras que una configuración convencional solo obtiene una pequeña fracción de eso.


En estos días, el auto- La velocidad de generación de juegos es mucho más rápida de lo que era al principio. Al 14 de enero de 2019, parece que el proyecto genera aproximadamente 1,5 millones de juegos por día. Pero a esta velocidad, todavía tomará un mes lograr lo que DeepMind logró en 9 horas. En realidad, es más como el doble de tiempo si los juegos de entrenamiento se desvían hacia dos carreras separadas.

Además de usar muchas TPU para entrenar, DeepMind también usó TPU durante el partido. Por lo tanto, AlphaZero también se ejecutó con un hardware significativamente más potente durante el partido que LC0.
Allure
2018-12-09 17:20:11 UTC
view on stackexchange narkive permalink

Esto sucede porque AlphaZero y Leela no están jugando contra el mismo Stockfish. Si lees el periódico, AlphaZero venció a Stockfish 8 (también jugó una serie contra Stockfish 9; sin embargo, se aplica la misma lógica). Ambas versiones de Stockfish son antiguas y significativamente inferiores a la última versión de Stockfish.

AlphaZero venció a Stockfish 8 por +155 -6 = 839. Esa es una diferencia de ~ 50 elo. Por otro lado, Stockfish 10 es mejor que Stockfish 8 por ~ 100 elo. Leela, jugando contra Stockfish Dev (que es incluso mejor que Stockfish 10, el motor se actualiza continuamente) y no Stockfish 8, podría ser tan bueno como AlphaZero pero no aplastar a Stockfish. Aplastaría a Stockfish 8 bien, pero no a Stockfish Dev.

En una nota al margen: no está claro que AlphaZero aplastaría a Stockfish 10 tampoco, o viceversa, porque elo no es transitivo: si A vence a B por 50 elo y B vence a C por 50 elo, no significa que A vence a C por 100 elo.

Editar: Para ilustrar, en la copa TCEC semifinales, Leela vs. Stockfish, la versión de Stockfish que jugó fue Stockfish 270918. Los últimos seis números son la fecha - Stockfish al 27 del 9º mes de 2018. Puede ver en el enlace de arriba que este La versión de Stockfish es aproximadamente 100 elo más fuerte que Stockfish 8, por lo que el hecho de que Leela rinda peor no es una sorpresa.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 4.0 bajo la que se distribuye.
Loading...