jueves, 13 de diciembre de 2007

Deep Blue: Y mañana, ¿el mundo?

Luego de 10 años, el misterio continúa...Aquellos que hayan leído mi investigación intitulada como La Humanidad en Problemas sobre el match entre Garry Kasparov y la supercomputadora RS6000 de IBM llamada (acertadamente, y muy bonito por cierto) Deep Blue (DB), seguramente que advirtieron, como yo, que hubo "un caso", oscuro a mi forma de ver. Y usted entonces se puede preguntar, "¿por qué insistir otra vez con este tema? Está claro que parece que hubo algo raro...". ¿Parece?

Bien. Primero que nada, me apasionó el tema a partir de la mismísima 2da.partida del match, que me causó tristeza, felicidad, y repugnancia, todas estas sensaciones juntas, a la vez. Tristeza porque alguien a quien admiraba (y admiro) y que me sentía identificado con él, había sido derrotado por un programa de ajedrez; felicidad, porque me dije: "Bueno, esto quizás ponga un poco de color al encuentro"; repugnancia, por lo que ocurrió después.

Y segundo, parece no es parece: ¡es!

Este caso en particular siempre ahondó profundamente en mí, y no porque una computadora le haya ganado a un ídolo (mío), sino porque un ídolo sucumbió ante un enjambre de silicio y tuercas.

(Mmmm...¿silicio y tuercas dije? ¡Sorry!).


La discusión que presento a continuación podría resultar algo aburrida para aquellos que no están experimentados en la Inteligencia Artificial o el ajedrez, ni siquiera para aquellos que les llegue un poco; depende de cada uno. Pero resulta interesante conocer quién fue que derrotó en un match a 6 partidas al mejor jugador de ajedrez de todos los tiempos.

¿Quién (qué) es (fue) Deep Blue?

DB es, piramidalmente, considerado el pico (misteriosamente) más alto de la investigación humana sobre la Inteligencia Artificial (AI), y en él no hay Prolog, ni Lisp: hay puro C (ningún programa escrito con los primeros dos u otros podría haber alcanzado este logro (?), porque no contienen la capacidad suficiente para inferir "juegos de la mente" (me recuerda al tema "Mind Games" de John Lennon", siempre, atendiendo tan solo al título del tema, no a su letra) de la talla del ajedrez). Más allá "de lo que pudo haber ocurrido" en el match, no hay dudas de que DB fue un hardware/software maravillosamente construido; aún si James Bond hubiera estado encubierto tras el sistema, solo el diseño habría hecho posible "al menos algo". Comencemos entonces (sugiero abundante café si va a leer esto de una sola vez).

El mapa de DB


Si bien, como dije, todo fue muy oscuro (a partir de la 2da. partida), hubo igualmente un número de factores que contribuyeron a este suceso, entre los que se incluyen:
  • un motor basado en un chip que juega ajedrez,
  • un sistema masivo con múltiples niveles de paralelismo,
  • un fuerte énfasis en extensiones de búsqueda,
  • una compleja función de evaluación, y
  • un uso efectivo de una base de datos de Gran Maestro.
Luego del match de 1996, donde Kasparov humilló a DB, estaba claro que había un número de deficiencias en el juego de DB. Entonces, para el match de 1997, se hicieron una serie de cambios en su preparación. Primero que nada, fue diseñado un nuevo y sofisticado chip de ajedrez. Este nuevo chip contenía funciones de evaluación completamente nuevas, con features de entre 6400 y más de 8000. Estas features eran respuesta a problemas específicamente observados en el match anterior (1996), y fueron chequeadas por el Gran Maestro Joel Bejamin.

El nuevo chip también agregaba detección de repetición por hardware, un número de generación especializados de movimientos (por ejemplo, generar todos los movimientos que atacan las piezas del oponente), y algunas mejoras que incrementaban la velocidad de búsqueda por chip de entre 2 y 2,5 millones de posiciones por segundo.

El segundo mejor cambio fue la inclusión de más del doble del número de chips de ajedrez en el sistema, y el uso de la nueva generación de computación de SP para soportar la mayor demanda de procesamiento jamás creada. O sea, IBM lo había apostado todo a esto.

Un tercer cambio fue el desarrollo de un set de herramientas para ayudar al debugging y la preparación del match (por ejemplo, la puesta a punto).

Finalmente, con todo esto, la gente de DB llegó a la conclusión de que DB era aceptable, y esperaban que el tiempo transcurrido entre el match anterior y este, las cosas les fueran mejor (?).

Una visita al sistema

Como dije, DB era un sistema masivamente paralelo, diseñado para llevar a cabo búsquedas (de movimientos de ajedrez) en árbol. El sistema estaba compuesto de procesadores IBM RS/6000 SP y 480 motores de búsqueda basados en chips diseñados para jugar ajedrez, con 16 chips por cada procesador SP. El sistema SP consistía de 28 nodos con procesadores P2SC a 128 MHz. Estos nodos se comunicaban con cada uno de los otros vía switches de altísima velocidad. Todos los nodos tenían 1 GB de RAM, y 4 GB de disco. Durante el match, el sistema corría bajo el sistema operativo AIX 4.2.

Cada uno de los chips de ajedrez de DB eran capaces de buscar de 2 a 2.5 millones de posiciones de ajedrez por segundo y comunicarse con su nodo host vía un bus microcanal.

DB estaba organizado en tres capas. Una del procesador SP, que estaba designada como master, y el resto como workers. Master buscaba los niveles más altos del juego en el árbol, y entonces distribuía las hojas a los workers para obtener mejores evaluaciones. Los workers llevaban a cabo otros niveles (no muchos) de evaluación de búsqueda, y así distribuían sus posiciones a los chips de ajedrez, con las últimas búsquedas del árbol. Perfecto, ¿verdad?

El hecho es que esto no alcanzaría, por sí solo, para derrotar al mejor jugador de ajedrez de todos los tiempos.

El Chip de ajedrez

El chip usado en DB se divide en tres partes:
  • el generador de movimientos,
  • la función de evaluación, y
  • el control de búsqueda.
Nota. Este "Control de Búsqueda" fue lo que me llamó la atención en 1999, cuando yo, obsesionado con el match, seguía buscando una explicación al resultado del mismo. ¿El control de búsqueda había hecho trastabillar a Kasparov en la segunda y en la última partida? ¿Cuán bueno era? ¡¿Tanto?!

Vamos a ver uno por uno.

Generador de Movimientos

Este generador estaba basado en el mismo chip de la versón anterior, el cual, a su vez, estaba basado el generador de la máquina de ajedrez Belle. Pero el chip de DB tenía otras funciones adicionales de funciones, incluyendo la generación de movidas de evasión, como también cierto género de movimientos de ataque, los cuales permitían mejorar la quiescencia de las búsquedas. El chip también soportaba muchas extensiones de búsqueda, incluyendo extensiones singulares.

El generador de movimientos estaba implementado en un array combinaciones lógicas de 8 x 8, lo cual es, efectivamente, un tablero de ajedrez de silicona. Un "telegráfico" estado de DB controlaba la generación de movimientos. Este generador de movimientos, aunque generaba solo una movida a la vez, implícitamente computaba todos los movimientos posibles y seleccionaba uno, vía a una arbitraria red de trabajo. Toda la computación se mueve simultáneamente en un camino para dar una mínima latencia mientras se generan movimientos en un orden razonable.

Función de evaluación

La función de evaluación implementada en el chip de DB estaba compuesta de una "rápida evaluación" y de una "retardada evaluación". Esta es una técnica estándar para saltear una evaluación muy costosa cuando un aproximación es suficiente. La rápida evaluación, la cual computa un score pra una posición de ajedrez en un ciclo de reloj, contiene todos los términos de máxima computación de evaluación con altos valores. la parte más significante de esta rápida evaluación es el valor "colocar la pieza", por ejemplo, la suma de los valores básicos de la pieza con los ajustes del lugar según la posición en el tablero. Las características posicionales que pueden ser computadas rápidamente, tales como "el peón puede correr", también son parte de la evaluación rápida. La evaluación lenta inspecciona el tablero una columna a la vez, computando valores de ajedrez conceptuales, tales como el control de la casilla, pins, seguridad del rey, estructura de peones, peones pasados, mayoría de peones, torre en séptima, restricciones, complejidad de colores, piezas atrapadas, desarrollo, y así sucesivamente.