AI supremacía: Leela Chess. O sobre cómo ganó una red neuronal completamente abierta

imagen

Honestamente, estoy muy decepcionado con Habr. ¿Por qué nadie destacó algo como ganar un enfoque de red neuronal con un código totalmente abierto , eh? ¿Y datos de red neuronal completamente abiertos? De hecho, bueno, DeepMind Technologies describió cómo enseñaron una IA de ajedrez jugando consigo mismo ... Solo que ahora el código está cerrado allí, y la capacitación se llevó a cabo en grupos de Google, y no se distribuyó en Nvidia Turing con núcleos tensoriales , como en este caso. ¿Por qué tengo que editar yo mismo la Wikipedia en inglés para llamar la atención sobre esto?

De acuerdo, algo que llegué demasiado lejos con las emociones, supongo. (Todavía hay un enlace en los comentarios que menciona a leela). Este artículo es un experimento: una forma de mostrarme cómo mi otro artículo , que es demasiado popular, en mi opinión, afectará esto.

La historia comenzó cuando actualicé mi viejo Nvidia Geforce GTX 770 al RTX 2080 Ti. Bueno, dado lo que cuesta, quería maximizarlo. Al principio jugué con Ray Tracing , leí acerca de cómo funciona con CUDA a través de NVIDIA OptiX . Leí acerca de cómo una persona logró usar núcleos RT para otros fines. Repetido Pero la cantidad de comentarios de que una chaqueta de cuero se divorciaba de las personas era tan grande que estaba cansada de leer al respecto. Sobre todo teniendo en cuenta que sé que el trazado de ruta es el algoritmo más importante de la industria del cine y los juegos, y este no es el descubrimiento de Nvidia. En absoluto Incluso hardware.

Entonces decidí mirar hacia NVENC . Generalmente soy un amante de los regalos. Al final resultó que, había mucho en este codificador de hardware. Primero, el artículo más popular sobre Habr sobre NVENC habla sobre cómo YourChief , armado con un depurador, fue capaz de romper el límite en la cantidad de transmisiones simultáneas de codificación (y resultó que mi tarjeta puede ser increíble ). Además, el parche, como suele suceder, cambia solo un par de bytes .

Luego resultó que la tecnología NvFBC (captura ultrarrápida de un fotograma completo) también se puede habilitar en la tarjeta geforce, si usa un parche mágico en la parte superior del marco de Looking Glass, antes de activar esta tecnología (el parche se puede ver aquí ).

Entonces quería un color de 30 bits en Photoshop. Repitiendo el éxito de otros, encontré un byte que limitaba el soporte de OpenGL en modo ventana (como en DirectX en modo ventana y pantalla completa y en OpenGL en modo pantalla completa, el color de 30 bits funcionaba de esta manera). Y Nvidia escribió al respecto, prometiendo presentar el parche. Tal vez esto sea una coincidencia, pero eliminaron esta restricción en Gamescom 2019. Pero todavía hay soporte no oficial para HDR10 + (metadatos dinámicos HDR).

Entonces, ahora ha llegado el momento para el acelerador matricial, el acelerador neural, los núcleos tensoriales, llámalo como quieras. Fue un poco más complicado. Diré enseguida que me quedé dormido en una conferencia sobre la red neuronal en la universidad, así que tuve que resolverlo. Pero después de ver un par de videos donde un hombre genera miles de pájaros para atravesar el Flappy Bird, y después de un par de generaciones, estos pájaros pasan obstáculos como un reloj, me inspiró la idea. La pregunta era qué lanzar. Y luego recordé que Google aquí recientemente se jactó de que vencieron a su mejor jugador en Go con su IA, lo que se consideraba imposible antes de usar algoritmos "normales". Honestamente, le encantan las versiones complejas de Google DeepMind. Bueno, es decir, quién lo inventó: AlphaGo Lee → AlphaGo Master → AlphaGo Zero → AlphaZero (este último ya puede estar en ajedrez, y en shogov, y en go, y en general, ya que implementaron un mecanismo largo para explicar las reglas del juego, el póker se puede adaptar). Soy consciente del póker, en todo caso, no escribas sobre él, de lo contrario te conozco.

Mi búsqueda en Google "código fuente alphazero" no arrojó nada. Bueno, es decir, ¡resultó que no pensaron en abrir el código! Pero no lo podía creer. Bueno, es decir, Elon Musk significa OpenAI (supuestamente para que cuando se desarrolle la IA, sea más estudiada, o algo así, y esté más libre de derechos de autor de los autores). Y aquí en reddit me encontré con un enlace . Al final resultó que, algunas personas compasivas de DeepMind todavía decidieron dar parte del código fuente, sin embargo, imprimiéndolo directamente en un archivo pdf. / facepalm

Bueno, aquí descargué inmediatamente y la red neuronal desde aquí . Y después de jugar con ella, me di cuenta de que por alguna razón no juega ajedrez. Me llevó unos 20 minutos entender que juega go, no ajedrez, y otros 40 minutos para encontrar una versión para el ajedrez. Y aquí me sorprendió. Primero, ya han logrado implementar el backend de cuda con soporte para núcleos tensoriales de Nvidia tanto para el juego como para el entrenamiento ( voluntario y distribuido , por otra parte). En segundo lugar, ¡justo en ese momento tuvieron un duelo con Stockfish por el 1er lugar en el ranking de ajedrez informático! ¡No dormí media noche, viendo la super final de TCEC y ganó la red neuronal! Inmediatamente corrí a editar Wikipedia, que en ese momento tenía poca información, ¡y al día siguiente todos escribieron al respecto! Al final resultó que, durante el juego, Leela usó solo un montón de 2080 Ti y 2080, es decir, mi tarjeta fue suficiente. Después de descargar la red neuronal desde aquí , ¡la lancé tranquilamente en mi computadora! Bueno, por supuesto, la red neuronal me rompió. Aquí se explica cómo configurarlo.

Personalmente, realmente utilicé el shell del explorador de ajedrez HIARCS. Además, también le di a la gente en Android para probar Leela en DroidFish. Android usa una red destilada, más simple y más pequeña, pero aún no débil.

En principio, puedo pintar las instrucciones de instalación con más detalle, agregar enlaces, escribir: =))
Por cierto, tal pregunta, ¿alguien ha escuchado sobre el uso no estándar de NVENC y NVDEC? Parece que se puede adaptar para acelerar las operaciones matemáticas. Lo leí en alguna parte, pero no había detalles.

Source: https://habr.com/ru/post/468775/


All Articles