Hardware utilizado en AlphaZero vs Stockfish match

22

Entiendo que AlphaZero tiene que usar un tipo diferente de hardware que Stockfish normal. Esperaría que el hardware tenga un gran efecto en la resistencia del motor. Es por eso que me pregunto si se han realizado intentos para proporcionar hardware comparable a ambos. Además, ¿qué significaría "comparable" aquí?

Específicamente leí que la gente se queja de:

  • Stockfish recibe solo 1 GB de caché, y
  • el límite de tiempo de 1 min / movimiento (¿Cómo perjudicaría a Stockfish?)
usuario1583209
fuente
Tamaño de hash , no caché, aparentemente.
Federico Poloni
2
Yo fuertemente sugiero preguntar esto en un foro técnico (como la pila Cambio de AI , tal vez titulado "La equidad de la evaluación en AlphaZero vs partidos STOCKFISH"), debido a que las respuestas aquí no son buenas.
Veedrac

Respuestas:

20

Es por eso que me pregunto si se han realizado intentos para proporcionar hardware comparable a ambos.

¡Estás hablando de Google! Entonces la respuesta es obviamente "No".

Del hardware de papel original utilizado para inicializar y capacitar:

La capacitación se llevó a cabo durante 700,000 pasos (mini lotes de tamaño 4,096) a partir de parámetros inicializados aleatoriamente, utilizando 5,000 TPU de primera generación (15) para generar juegos de auto-juego y 64 TPU de segunda generación para entrenar las redes neuronales

y hardware utilizado para los juegos:

AlphaZero y el anterior AlphaGo Zero usaron una sola máquina con 4 TPU Stockfish y Elmo jugaron en su nivel de habilidad más fuerte usando 64 hilos y un tamaño de hash de 1GB.

Entonces, AlphaZero utilizó hardware especial desarrollado por Google. Utilizó Unidades de Procesador Tensor (TPU) especializadas en lugar de Unidades de Procesamiento Central (CPU) generales como están disponibles comercialmente.

Así es como Wikipedia describe los TPU de segunda generación que usaron:

La segunda generación de TPU se anunció en mayo de 2017. Google declaró que el diseño de TPU de primera generación tenía un ancho de banda de memoria limitado, y el uso de 16 GB de memoria de alto ancho de banda en el diseño de segunda generación aumentó el ancho de banda a 600 GB / sy el rendimiento a 45 TFLOPS. Los TPU se organizan en módulos TFLOPS 180 de 4 chips.

Usaron 4 TPU para los juegos, por lo que una potencia de procesamiento de 180 TFLOPS. Nota TFLOPS = 1000 mil millones de operaciones de punto flotante por segundo.

A modo de comparación, el último chip más potente de Intel es el procesador Core i9 Extreme Edition, que funciona a 1 TFLOP. Una parte superior de la línea I7 que encontraría en una máquina de juego sería típicamente alrededor de 100 GFLOP (es decir, una décima parte de un TFLOP).

Creo que es justo decir que AlphaZero estaba usando un gorila de 800 libras de configuración de hardware en comparación con el mouse Stockfishes.

Brian Towers
fuente
1
FLOPS significa operaciones de punto flotante por segundo. La aritmética de coma flotante probablemente no se usa en absoluto en los algoritmos centrales de Stockfish y AlphaZero. Por lo tanto, el número de FLOPS no es realmente una medida significativa de la velocidad del procesador relevante para el motor de ajedrez.
René Pijl
99
Por el contrario, creo que las redes neuronales usan la aritmética de coma flotante con bastante intensidad. (Pero, por supuesto, su comentario tiene mucho sentido y se aplica a Stockfish.)
Federico Poloni
3
Una comparación mucho más adecuada sería con una GPU; El NVIDIA Tesla V100 puede hacer 120 TFLOPS, en comparación con la generación anterior (P100), que solo tenía unos 20. Las CPU están optimizadas de manera muy diferente a las GPU que hacen grandes volúmenes de números.
Nick T
12

Creo que es mejor si profundizo en su segundo punto con un movimiento de ejemplo en el juego 1 entre AlphaZero y Stockfish que también sirvió para satisfacer mi curiosidad hoy.

el límite de tiempo de 1 min / movimiento (¿Cómo perjudicaría a Stockfish?)

El rendimiento de Stockfish depende tanto del límite de tiempo como de la configuración del hardware, así que piense en cuando alguien duplica los hilos de la CPU, entonces Stockfish necesita menos tiempo (no necesariamente la mitad) para encontrar la solución de lo que lo haría con la primera configuración.

En el primer informe publicado en Chess.com, alguien afirmó que Stockfish no estaba jugando de manera óptima porque no podía reproducir los mismos resultados usando el mismo Stockfish en su computadora. Dijo que en la posición de abajo (juego 1 - movimiento 11) Stockfish jugó Kg1-h1 (movió a su rey), lo que no tenía ningún sentido. Por otro lado, stockfish en su computadora mostró un movimiento más desarrollado como Be3 (mover el alfil cuadrado oscuro), veamos la posición:

Juego 1 en la jugada 11

Sí, fue un movimiento pasivo y parece que Stockfish debería haber jugado un movimiento más desarrollado. Pero estaba equivocado. ¿Por qué? Debido a que corrió Stockfish durante 15 segundos, y si lo hubiera hecho durante una hora, habría obtenido Kg1-h1 como el mejor movimiento en esa posición. Stockfish cambia su decisión cuando analiza todos los movimientos posibles con más profundidad. Esto es lo que dije originalmente en mi respuesta :

Ejecuté el último stockfish en la posición (en el movimiento 11):

  • Al principio, da b4 como el movimiento óptimo cuando el motor está funcionando durante aproximadamente un minuto. Después de eso, decide que Be3 es mejor.
  • Pero después de 5 minutos en mi hardware que se ejecuta en 1,400k nodos / s, decidirá usar Kh1 como el movimiento óptimo.

  • En el documento, se dice que stockfish calcula 70,000k posiciones por segundo y se ejecuta durante 1 minuto por movimiento, eso es aproximadamente 50 veces mi hardware, así que dejaré que el mío funcione durante 50 minutos ... Kg1-h1 sigue siendo el elección para Stockfish.

Límite de tiempo es la clave

En el caso anterior, probablemente no importaba mucho si Stockfish corría el doble de tiempo porque la decisión hubiera sido la misma, pero en el siguiente movimiento definitivamente :

ingrese la descripción de la imagen aquí

En esta posición, Stockfish eligió mover el peón del lado izquierdo ( a4-a5 ). Digamos que tengo una computadora que ejecuta el motor Stockfish a una velocidad de 1,400k nodos por segundo, que es aproximadamente 50 veces menor que el Stockfish en el juego real ( en el documento , dice 70,000kn / s). Entonces puedo simular el juego si lo ejecuto durante 50 minutos en cada movimiento. Bueno.

Ejecuté el análisis de Stockfish en la posición anterior y obtuve los siguientes resultados:

  • Stockfish comenzó sugiriendo algunos movimientos, pero después de 6 minutos en mi computadora (corresponde a 7.2 segundos en el Stockfish en el juego real) prefirió a4-a5 tal como fue el juego .

Eso es bueno, pero lo mantuve funcionando durante 50 minutos completos para alcanzar los cálculos del Stockfish en el juego que se permitió 1 minuto:

La triste verdad es que creo que Stockfish perdió todos sus juegos debido al límite de tiempo. Stockfish obtiene una búsqueda y evaluación más profunda a medida que pasa el tiempo y en el juego no se le permitió usar un libro de apertura que lo hace considerar muchos movimientos en profundidades poco profundas. Tenga en cuenta que en el juego real se jugó a4-a5 que muestra que (suponiendo que pudiera evaluar 70 millones de posiciones por segundo) el Stockfish en el juego no pasó más de 21.6 segundos en movimiento. De lo contrario, habría cambiado su decisión a esos otros tres movimientos en el juego real. La razón de esto todavía no está clara para mí, ya que mi Stockfish también consumía menos memoria (aproximadamente ~ 130 MB de RAM en comparación con el 1 GB mencionado en el documento original , suponiendo que todo vaya a tablas hash).


Conclusión

El hardware que ejecutaba Stockfish, como señalé, fue en el mejor de los casos 18 veces más rápido que el mío (Actualización: en un solo núcleo) según el movimiento que analicé. No estoy seguro de si AlphaZero realmente podría hacer uso de dicho hardware para entrenar sus redes en 4 horas, solo puedo suponer que es demasiado bajo para un juego como el ajedrez. Además, AlphaZero pasó esas horas aprendiendo, lo que también incluye construir aperturas sólidas (y como señala el documento, preferencias sobre ciertas vacantes). Por otro lado, Stockfish fue discapacitado en las aberturas, y no evaluó 70 millones de posiciones por segundo durante 60 segundos en cada movimiento.

Como nota final, todas las cosas que dije se basaron en mis suposiciones. Por supuesto, el resultado de AlphaZero y los juegos fueron muy interesantes para mí. Sin embargo, me hubiera encantado ver un juego en el que el juego Stockfish fuera igual que el que tengo en mi computadora. Es decir, más tiempo y un libro de apertura permitido. También es fácil obtener los resultados del análisis de Stockfish en cada movimiento, y deseo que lo publiquen para mostrar qué tan bien funcionó.

ReZzT
fuente
1
Con respecto al límite de tiempo, la Figura 2 en el documento de AlphaZero muestra lo contrario: Stockfish es mejor en un presupuesto más bajo, pero se escala peor, cuando hay más potencia disponible. arxiv.org/pdf/1712.01815.pdf
old-ufo
1
@ old-ufo Gracias por señalar eso. Como dije, el rendimiento de Stockfish (y AlphaZero) depende del hardware y del límite de tiempo. Por ejemplo, si le damos a Stockfish más hardware (y AlphaZero menos) y regeneramos esa cifra, su línea podría transformarse de modo que siempre se mantenga por encima de la línea AlphaZero. Así que supongo que es un buen punto para comparar el hardware de ambos sistemas, que también responde a la pregunta principal.
REZzT
4

Uno de los autores originales de Stockfish responde las quejas específicas que mencionó aquí:

Mientras tanto, Chess.com también recibió un extenso comentario de uno de los autores originales de Stockfish, Tord Romstad, que daremos en su totalidad:

Los resultados del partido en sí mismos no son particularmente significativos debido a la elección bastante extraña de los controles de tiempo y la configuración de los parámetros de Stockfish: los juegos se jugaron en un tiempo fijo de 1 minuto / movimiento, lo que significa que Stockfish no utiliza sus heurísticas de gestión del tiempo ( Se ha hecho un gran esfuerzo para que Stockfish identifique puntos críticos en el juego y decida cuándo pasar un tiempo extra en un movimiento; en un tiempo fijo por movimiento, la fuerza se verá afectada significativamente). La versión de Stockfish utilizada tiene un año de antigüedad, jugaba con muchos más hilos de búsqueda de los que había recibido una cantidad significativa de pruebas y tenía tablas hash demasiado pequeñas para la cantidad de hilos. Creo que el porcentaje de sorteos habría sido mucho mayor en un partido con condiciones más normales.

Por otro lado, no hay duda de que AlphaZero podría haber jugado mejor si se hubiera puesto más trabajo en el proyecto (aunque las "4 horas de aprendizaje" mencionadas en el documento son muy engañosas cuando se tienen en cuenta los recursos de hardware masivos utilizados durante esas 4 horas). Pero en cualquier caso, Stockfish vs AlphaZero es en gran medida una comparación de manzanas con orangutanes. Uno es un programa de ajedrez convencional que se ejecuta en computadoras ordinarias, el otro utiliza técnicas fundamentalmente diferentes y se ejecuta en hardware de diseño personalizado que no está disponible para la compra (y estaría fuera del presupuesto de los usuarios comunes si lo fuera).

Desde otra perspectiva, el ángulo de las manzanas contra los orangutanes es lo más emocionante de esto: ahora tenemos dos entidades hechas por el hombre extremadamente diferentes (tanto en el lado del hardware como del software) que muestran habilidades de ajedrez sobrehumanas. Eso es mucho más interesante que otro programa de ajedrez que hace lo mismo que los programas de ajedrez existentes, solo que un poco mejor. Además, la adaptabilidad del enfoque AlphaZero a nuevos dominios abre posibilidades emocionantes para el futuro.

Para los jugadores de ajedrez que utilizan programas de ajedrez como herramienta, es poco probable que este avance tenga un gran impacto, al menos a corto plazo, debido a la falta de hardware adecuado a precios asequibles.

Para los programadores de motores de ajedrez, y para programadores en muchos otros dominios interesantes, la aparición de técnicas de aprendizaje automático que requieren recursos masivos de hardware para ser efectivos es un poco desalentador. En unos pocos años, es bastante posible que un programa de ajedrez similar a AlphaZero pueda ejecutarse en computadoras comunes, pero los recursos de hardware necesarios para crearlos seguirán siendo mucho más allá del presupuesto de los aficionados o las empresas de tamaño medio. Es posible que un proyecto de código abierto con una gran red distribuida de computadoras administradas por voluntarios pueda funcionar, pero los días de cientos de motores de ajedrez únicos, cada uno con sus propias peculiaridades y personalidades, se habrán ido.

Fuente: https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Xonatron
fuente
2

Sería necesario ejecutar hardware comparable si el objetivo final de Google fuera construir un motor de ajedrez superior, pero este ejercicio no se trataba realmente de ajedrez. El ajedrez es solo una forma conveniente de demostrar la capacidad de la IA para aprender tareas complicadas desde cero. Si puede funcionar bien contra alguna configuración vagamente razonable de Stockfish, está marcada la casilla.

Predigo que el equipo de Google no gastará mucho más esfuerzo en el ajedrez; en cambio, pasarán a otros problemas que la IA nunca ha podido lograr.

T Scherer
fuente
Le di +1 porque tengo el mismo sentimiento.
SmallChess
Suena probable, aunque dudo que lo hubieran publicado, si Alphazero hubiera perdido solo por un pequeño margen (lo que significa que aún sería de una fuerza comparable al stockfish).
user1583209
@ user1583209 Probablemente lo ejecutaron muchas veces para calcular la cantidad mínima de tiempo de aprendizaje que necesitaba para aplastar Stockfish. Luego hicieron una carrera final y publicaron esos resultados.
T Scherer
1

Visite Talkchess Forum para saber más, allí encontrará unos 3000 programadores. Todo esto fue una estafa. Alpha jugó en hardware 30 veces más grande que SF, 4TPU frente a 64 núcleos. 4TPU es alrededor de 1000 núcleos o incluso más. Alpha había simulado el libro de apertura, entrenado en innumerables juegos ganadores de GM. SF tenía muy poco hash. El TC se fijó en 1 minuto por movimiento, lo que de nuevo es perjudicial para SF, que tiene una gestión avanzada del tiempo. Los TPU carecen de las ineficiencias SMP con más núcleos, por lo que la ventaja del hardware fue aún mayor. Etc, etc., así que, básicamente, esto fue solo un gran truco publicitario por parte de Google. Actualmente, Alpha tiene alrededor de 2800 en un solo núcleo, por lo que 400 elos por debajo de SF, y no avanzará mucho en el futuro, ya que, a partir de ahora, necesitará una evaluación avanzada que no podrá descubrir. Con respecto al problema de 4 horas, bueno, LOL, Esto fue hace 48 horas, ¿ahora Alpha está en 5000 elo? Venga.

Lyudmil Tsvetkov
fuente
55
Parece creer que AlphaZero hace lo mismo que Stockfish, solo 1000 veces más rápido porque utiliza hardware 1000 veces más fuerte. Esto no es cierto en absoluto. Utiliza un enfoque muy diferente y ese enfoque requiere muchos recursos. De hecho, durante el partido, AlphaZero estaba evaluando 80 mil posiciones por segundo, mientras que Stockfish registraba 70 millones de posiciones por segundo. Ahora dime que AlphaZero ganó por un hardware más fuerte. Por supuesto, en 64 CPU sería más lento y quién sabe cómo funcionaría, pero el punto es que AlphaZero lo hace mejor, aunque a un costo más alto.
IA Petr Harasimovic
3
El hardware SF cuesta menos de $ 10k, Alpha one más de $ 250k. Saca las conclusiones tú mismo. Los Nps no tienen sentido, y todo programador de ajedrez lo sabe. Puedes hacer todo tipo de trucos para que los nps bajen, pero eso no significa que jugarás más fuerte. Me gustaría ver que implemente ese enfoque en el hardware SF y SF en el hardware Alpha. Adivina el resultado? +85-0 = 15 para SF. Si son tan geniales, permítales publicar su código.
Lyudmil Tsvetkov
3
"Alpha había simulado el libro de apertura, entrenado en innumerables juegos ganadores de GM". Libro de apertura simulado, sí, pero ¿entrenó en juegos de GM? ¿Tienes una fuente para esto? Comprendí que Alpha estaba completamente forzado.
Akavall
0

Stockfish está limitado a las CPU, por lo que nunca podrá escalar al nivel que las GPU pueden.

Las GPU de cálculos de matriz Gor escalan con n, mientras que las CPU escalan con n 3 , estos núcleos tensoriales se optimizan aún más, por lo que es probable que el rendimiento sea aún mejor a medida que escala.

Jameis famosos
fuente
-2

Primer párrafo más detalle, segunda respuesta corta y simple tercer párrafo mis opiniones sobre la situación

Con AlphaZero, el hardware tiene 0 efectos sobre la fuerza de su juego. Puede llevar más tiempo, pero no porque esté pensando. Es una red neuronal, lo que significa que alimenta su información en un vector (una tabla de una sola columna), realiza cálculos matemáticos simples a través de un tensor gigante (una tabla tridimensional o más) y luego escupe la respuesta. Stockfish necesita tiempo para ser bueno porque verifica las posibles posiciones para ver si un movimiento es beneficioso, por lo que cuanto más se analice el problema, más posiciones / movimientos puede comprobar.

Realmente no hay una configuración de hardware comparable. Debido a que tienen diferentes necesidades, Stockfish necesita analizar más posiciones, mientras que AlphaZero solo necesita hacer un movimiento. Y la gente está molesta porque la computadora de AlphaZero es técnicamente mucho más poderosa y piensan que deberían ser iguales en ese sentido. Pero, AlphaZero no necesita esa supercomputadora después del entrenamiento.

En mi opinión, no importa lo que le den a ambos lados, a menos que Stockfish tenga una cantidad de tiempo irrazonable, probablemente vinculará algunos juegos más, pero en general sucederá un efecto similar. Por eso creo que, Stockfish inicialmente evalúa con piezas y sus valores, mientras que Alpha jugó (probablemente) millones de juegos para darse cuenta de lo que es estratégicamente importante. Es por eso que Alpha sacs mucho más que Stockfish, pero gana enormes ventajas posicionales.

Ezecal
fuente
Eso está mal. AlphaZero hace búsqueda de árbol. Más hardware lo hace más fuerte. Y necesita una tonelada de hardware para jugar mejor que el stockfish.
BlindKungFuMaster
Nada en esta publicación es correcto ...
SmallChess
Este sistema se basa en 3 redes neuronales y una búsqueda parcial de árboles de Monroe Carlo, por lo que está en lo correcto al usar la búsqueda de árboles. Durante el juego utiliza 2 principios de redes neuronales desarrollados en alphago de valor y política. Go es un juego que no se puede hacer mediante potencia computacional porque es astronómicamente más complejo que el ajedrez. Entonces, si creo que necesita más potencia informática que un algoritmo de fuerza bruta, entonces estás delirando. O señorita informada. La tercera red neuronal se usa para tratar de mejorar el proceso de aprendizaje al adivinar los cambios de propagación hacia atrás. El poder de Alphazeros está en las redes, no en los mcts.
Ezecal