jueves, 24 de septiembre de 2015

Watson: El ordenador que ganó al hombre por segunda vez.

¿Como es el ordenador que venció a los concursantes de Jeopardy? Una entrada para explicar la tremenda capacidad de computación e inteligencia que la máquina de IBM dotó a Watson, para poder ganar a los concursantes del concurso televisivo.



En 1997 la primera batalla intelectual entre un hombre y una máquina (el "Deep Blue" de IBM), tuvo como desenlace la derrota del campeón del mundo de ajedrez Gary Kasparov.

Esa primera victoria de una supercomputadora, posicionada en el puesto 259 dentro de una lista de las 500 mejores, fue revalidada por el supercomputador Watson, también -como no podría ser de otra manera- diseñada por IBM, ganando el concurso Jeopardy! en Estados Unidos el febrero del 2011.

Recordaremos el formato del concurso: "Jeopardy! es un concurso de televisión estadounidense con preguntas sobre historia, literatura, arte, cultura popular, ciencia, deportes, geografía, juegos de palabras, y otros temas. El programa tiene un formato de “respuesta y pregunta”, en el cual a los concursantes se les presentan pistas en forma de respuestas, y deben dar sus respuestas en forma de una pregunta.”-  fuente Wikipedia.


¿Que hace que estas máquinas sean tan potentes?

La capacidad de proceso de estas supercomputadoras se logra sumando varias decenas de servidores entre sí mediante una red de muy altas prestaciones, usando sistemas operativos escalables y programas que permitan trabajar con miles de nodos y extensas cantidades de datos.

Para poder vencer a los concursantes, la solución presentada por IBM usó software de código libre -exceptuando la base de datos propietaria DB2- y una integración de procesadores masivamente paralelos.

Watson respondía "la pregunta" usando una estructuración de la información indexada en su memoria, tomada de variopintos orígenes, siendo el motivo de esta entrada, desgranar el hardware (servidores y red) y software de la solución exitosa aportada por IBM.


Componentes hardware de Watson (servidores).

Para poder dar una gran capacidad de indexación de la información y, teniendo en cuenta que Watson no tenía conexión a internet, el servidor escogido por los investigadores de IBM fue el Power 750.

Para poder cargar toda la información en la RAM, tener una latencia de computación extrema, usaron 4 tarjetas con un procesador RISC de 8 núcleos cada uno, teniendo un total de 32 núcleos lógicos por servidor.

Diez armarios para alojar un total de 90 servidores, dotaban al sistema de 2880 núcleos (cores) de 3.25 GHz. 

Todos esos servidores estaban unidos mediante un conmutador Ethernet de Juniper -de alta capacidad de proceso- a una velocidad de 10 Gbps. La unión física de los servidores se realizó con fibra óptica.

El total de memoria RAM conseguida era de unos 15 TBbytes. Los investigadores creyeron, acertadamente, que era necesario tanta memoria de acceso aleatorio para conseguir almacenar la mayor información posible y, disminuir la más que probable penalización en el caso de tener que acceder a disco (Hard Disk).

Para encontrar paralelismos con la vida cotidiana, remarcar que con todos esos TeraBytes podríamos: escuchar música durante 2 años ininterrumpidamente, visualizar más de 5 millones de fotos, ver más de 3 millones de películas o almacenar 90 millones de veces la Enciclopedia Británica.

Esta configuración de hardware permitía disponer de 80.000.000.000.000 de operaciones por segundos, es decir 80 TeraFLOPSs. En una lista de 500 superordenadores, Watson ocupaba el puesto 114.



Componentes hardware de Watson (red).

Para poder mover una cantidad ingente de datos entre los 90 servidores con una ridícula latencia, los investigadores usaron un IBM J16E con 15 tarjetas 10GBytes Ethernet.


La capacidad de computación de esta excelente caja de comunicaciones es impresionante y necesaria, para poder dotar de velocidad a la capa de software del que hablaremos en el siguiente punto.

Este mastodóntico conmutador de paquetes Ethernet, permite mover 2 billones de paquetes por segundo (pps) con un velocidad de 12.4 TeraBytes por segundo.

Con esta potencia Watson es capaz de correr con garantias los mas de 100 algoritmos, para poder llegar a la respuesta en menos de 3 segundos.

Probablemente no se le de nunca la importancia que tiene el tener una buena infraestructura LAN (red de área local), pero sin este hardware de red, Watson no podría responder con tanta rapidez, pues su software no podría procesar paralelamente mediante sus algoritmos con garantías.

Junos OS, es el sistema operativo que corre en el hardware de Juniper. El principal atractivo del producto es que permite virtualización y balanceo de carga a voluntad, teniendo controlado en todo momento la interconexión de los 2880 núcleos -con sus respectivas pilas de proceso- controladas por el sistema operativo SUSE.


El Software de Watson.

El sistema operativo que Watson usó para gestionar un repositorio de datos des-estructurados y el DeepQA, fue la  distribución de Linux Suse Enterprise Server v11.

Para poder trabajar con datos estructurados, semi-estructurados o no-estructurados, usaron el Framework de Hadoop. Tenemos que pensar que Watson tenia "cargada" en RAM muchísimas enciclopedias, diccionarios, noticias, artículos, títulos literarios, bases de datos de música y bases de datos de películas.

Hadoop es un software de código libre, surge a través de un proyecto (Dug Cutting, Mike Cafarella), soporta aplicaciones distribuidas y, permite trabajar con volumenes de TeraBytes, PetaBtye o ExaBytes.

Está insipirado en la tecnologías Map&Reduce de Google y Google File System (GFS). Está desarrollado en JAVA y sus bloques principales son HDFS Map&Reduce.

HDFS es un sistema de ficheros distribuido y Map&Reduce es el paradigma de la computación en paralelo. Para poder tener la información controlada existen componentes Hadoop que alojan la información en bases de datos no SQL, como son: HBase, Hive y CassandraHadoop es el nombre de un elefante que tenía un hijo de los dos creadores.

La gran aportación realizada por IBM fue el software DeepQA. Básicamente gestionaba un centenar de algoritmos que, en base a la pregunta realizada por el presentador, hacia los siguientes pasos (apoyándose en una arquitectura UIMA) :
  • Analizaba la pregunta en lenguaje natural.
  • Identificaba fuentes alojados en sistema.
  • Separaba y generaba hipótesis.
  • Buscaba y puntuaba evidencias.
  • Sintetizaba los datos para dar finalmente la respuesta, dependiendo de la puntuación obtenida.
La gran potencia del sistema era la posibilidad de gestionar múltiples procesos, para poder lanzar "queries" (preguntas) y obtener decenas de hipótesis. Con estas hipótesis el software sintetizaba los resultados para poder dar una respuesta.

Para poder buscar, analizar y evaluar semánticamente o lexicográficamente la pregunta, se usaron librerías de Lucene y Lemur / Indri. Son librerías de código abierto. La gran importancia de estas librerías, es poder buscar en diferentes formatos de documento. Es decir, buscar textos que puede estar en PFD o en páginas Web, así como documentos realizados con cualquier procesador de textos.



En la imagen resumen de arriba, vemos un esquema del UIMA (Unstructed Information Management Architecture) usado por DeepQA.

Básicamente este componente software analiza y gestiona información no estructurada (texto, audio o vídeo). Permite construir una herramienta para poder extraer la información solicitada. Es licenciado por Apache y de código abierto.


¿Para que servirá Watson en el futuro?

Teniendo en cuenta que casi toda la información que circula por Internet no esta estructurada, de las decenas de TeraBytes generados cada hora, Watson crea un sistema de lenguaje natural para responder a una pregunta de manera rápida y segura.

Ejemplos de aplicación inmediata:

Call Center o asistencia telefónica: el primer nivel, responde a las preguntas que le puede hacer un usuario básico. En el caso de no poder solucionar la consulta, se pasaría a un segundo nivel con un operador humano.

Marketing / Desarrollo de producto: Predicciones en el comportamiento de las personas en la compra y utilización de bienes. Seguimiento de la post-venta mediante redes sociales y web. Seguimiento de pre-venta en redes sociales, documentos internet y encuestas físicas en tienda.

Finanzas: Predicciones en el comportamiento bursátil, teniendo en cuenta las noticias, redes sociales e indices de contratación. El hombre ya ha sido ganado por aplicaciones en una competición simulada de comercio financiero.

Sanidad: Interpretación masiva de datos en busca de patrones para poder solucionar mutaciones. Consulta de casos repetitivos para poder mejorar el diagnostico.

Recursos Humanos: Búsquedas heurísticas en los empleados para determinar horarios, proyectos o cualquier otra información que se precise.

Infinitas aplicaciones serán apoyadas con micro o mini Watsons. Pero lo que de momento no podrá hacer Watson, es tomar decisiones. 

Serán  utilizados como asistentes interactuados por voz, un nuevo interfaz de usuario-maquina. De esta manera la indexación de la información de múltiples fuentes, sera realizada por el asistente liberándonos de esa tediosa tarea.

Lo que no sabrán todos los sistemas IT similares a Watson es saber qué son, todavía.

La cita:


“Todas las piezas deben unirse sin ser forzadas. Debe recordar que los componentes que está reensamblando fueron desmontados por usted, por lo que si no puede unirlos debe existir una razón. Pero sobre todo, no use un martillo” — Manual de mantenimiento de IBM, año 1925