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?)
Respuestas:
¡Estás hablando de Google! Entonces la respuesta es obviamente "No".
Del hardware de papel original utilizado para inicializar y capacitar:
y hardware utilizado para los juegos:
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:
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.
fuente
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 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:
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):
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 :
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:
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ó.
fuente
Uno de los autores originales de Stockfish responde las quejas específicas que mencionó aquí:
Fuente: https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente