El Supercómputo como herramienta de investigación para problemas difíciles de reconocimiento

A todos aquellos que hemos tenido la fortuna de vivir el crecimiento vertiginoso de la tecnología nos resulta complicado transmitir a los más jóvenes la sorpresa que nos ocasiona comprobar todo lo que se puede hacer actualmente con los dispositivos electrónicos. Por ejemplo, mi teléfono celular posee más poder de cómputo que la computadora que utilicé en los años 80’s para programar mi proyecto de grado de licenciatura. Sin embargo, lo que más me sorprende es que el crecimiento en velocidad de ejecución y el decremento en el costo de la fabricación de hardware, ha puesto al supercómputo al alcance de todos.

p-7

Big Sur: servidor basado en GPU’s desarrollado por Facebook para aplicaciones de inteligencia artificial usando aprendizaje profundo. Imagen tomada de https://scontent.xx.fbcdn.net/t3 9.2365- 6/12057171_16513078284800 35_1295090969_n.jpg

¿Qué es una supercomputadora y para qué puede servirme? La famosa enciclopedia digital Wikipedia define a una supercomputadora como “aquella computadora con una capacidad de cálculo de alto nivel, esto comparado con computadoras de propósito general.” Esta definición suena más bien vaga, pero es bastante representativa del concepto. La capacidad de las computadoras convencionales se mide en términos del número de instrucciones que pueden realizar por segundo, y dado que este valor es bastante grande y crece cada día, es más práctico usar como unidad de medida a “millones de instrucciones por segundo” (MIPS por sus siglas en inglés). Cuando se habla de supercomputadoras lo importante es el número de operaciones que pueden ejecutarse con números reales por segundo (FLOPS por sus siglas en inglés).

En la actualidad los científicos que deciden cuáles son las 500 computadoras más poderosas del mundo1 ya no se preocupan mucho por definir lo que es una supercomputadora, sino más bien evalúan a una computadora “candidata” a supercomputadora con respecto a una serie de parámetros, entre ellos la velocidad con que resuelve un problema típico donde hay una gran cantidad de operaciones matriciales: la solución de un sistema lineal de ecuaciones de la forma Ax = b que utiliza aritmética flotante, donde A es una matriz densa generada al azar.

Las computadoras que actualmente pueden resolver más rápidamente este problema son capaces de ejecutar 4×1015 instrucciones de aritmética flotante ¡por segundo! Además de estos monstruos del cálculo, existen otros sistemas de cómputo bastante más lentos, pero aun así mucho más poderosos que las computadoras de escritorio, conocidos como GPU’s  (siglas en inglés de “unidad de procesamiento gráfico”). Estos sistemas ejecutan multiplicaciones y sumas en paralelo a través de tarjetas de hardware que se añaden a la arquitectura original de una computadora. Los GPU’s son muy populares debido a su alto desempeño al utilizarse en videojuegos, además de que actualmente se utilizan en una gran cantidad de aplicaciones.

Sin embargo, es importante considerar que para utilizar al máximo el poder de las supercomputadoras, o de los procesadores basados en GPU’s, es necesario ajustar cuidadosamente la manera en que se formulan los problemas y en que se escriben los programas de cómputo, a fin de aprovechar el paralelismo en la ejecución de las instrucciones2.

La siguiente pregunta a responder es: ¿para qué necesitamos ejecutar tantas operaciones por segundo y tan rápidamente? Realmente hay muchas razones, algunas bien conocidas incluyen el resolver los sistemas de ecuaciones que permiten predecir el clima o estimar distancias entre sistemas solares. Sin embargo, una razón para usar supercómputo, que está ganando un profundo interés en la comunidad científica de la inteligencia artificial (IA), es para entrenar automáticamente sistemas capaces de reconocer patrones e inferir conocimiento a través de analizar millones de datos. Esta inferencia puede realizarse usando datos almacenados sin ningún tipo de estructura, lo cual es muy útil dada la cantidad de información que se genera y almacena diariamente en las computadoras. Yann LeCun, científico y actualmente director de Investigación de IA en Facebook, opina que en el futuro, la mayoría del conocimiento del mundo estará en las computadoras y será extraído de computadoras3.

La inteligencia computacional o “cómputo suave” es una de las ramas de la IA que se encarga de diseñar algoritmos capaces de representar conocimiento a través de modelos matemáticos que operan usando números. Entre las muchas técnicas que se han propuesto para extraer conocimiento, está la que se conoce actualmente con el nombre de “aprendizaje profundo” (DL por sus siglas en inglés). La gran ventaja del DL es que encuentra patrones en los datos sin necesidad de contar con una definición explícita y a priori de las características que identifican a los patrones que se buscan, sino que automáticamente se generan dichas características manipulando los datos crudos. Para extraer características, los sistemas DL utilizan una gran cantidad de niveles jerárquicos de procesadores-extractores, los cuales se encuentran dentro de un sistema que finalmente consigue aprender automáticamente. El adjetivo “profundo” en el nombre de la técnica, se refiere precisamente a que se utilizan varios niveles de aprendizaje para la extracción del conocimiento.

Los extractores  de conocimiento y clasificadores usados en DL se construyen con base en modelos matemáticos conocidos como “redes neuronales artificiales” (RNA), los cuales están inspirados en la arquitectura del cerebro y de las neuronas biológicas. De manera similar al cerebro, los componentes de una RNA están hechos de procesadores simples (neuronas) que funcionan de forma paralela y distribuida. El conocimiento de las RNA se representa en parámetros que son valores reales, cuyos valores son “aprendidos” de forma incremental a través de operaciones matriciales. Uno de los primeros experimentos notorios obtenidos con las redes neuronales profundas se publicó en 2012, cuando el proyecto de Google conocido como “Google Brain” presentó un sistema que aprendió a reconocer gatos sin ninguna supervisión, a través de “ver” cerca de 10 millones de imágenes en YouTube, usando aproximadamente 16 mil computadoras4. Actualmente DL ha mostrado su poderío y practicidad para el reconocimiento de caras y para el entendimiento del lenguaje. DeepFace5 es una de las aplicaciones más famosas de DL, ya que forma parte de los algoritmos que utiliza la compañía Facebook. Esta red neuronal utiliza alrededor de 120 millones de parámetros y fue entrenada usando una base de datos con 4 millones de imágenes pertenecientes a más de 4,000 clases.

De forma similar a la utilizada para analizar imágenes o texto, los algoritmos DL también pueden analizar series de tiempo u otro tipo de señales digitales, aunque este paradigma de aplicación está empezando a investigarse. En el INAOE estamos desarrollando un proyecto para diseñar algoritmos DL capaces de reconocer y predecir eventos en señales digitales complejas, tales como los electro-encefalogramas (EEG). Dichos algoritmos deberán descubrir patrones que permitan identificar automáticamente posibles estados anormales o enfermedades, a través de observar dichas señales de forma continua y encontrar automáticamente los patrones de señales que representen a dichos estados y que no son obvios a primera vista. Para realizar este proyecto, estamos utilizamos el equipo proporcionado por el Laboratorio de Supercómputo del INAOE, el cual forma parte del Laboratorio de Supercómputo del Sureste de México6.

pgomez@inaoep.mx

 

Referencias

 

1 Top 500, the List. https://www.top500.org

 

2 http://spectrum.ieee.org/tech-talk/computing/hardware/use-a-gpu-to-turn-a-pc-into-a-supercomputer

 

3 “The Five Tribes of Machine Learning (And What You Can Learn from Each),” Pedro Domingos, Webminar, Association of Computing Machinery (ACM). Dec. 29, 2015.

 

4 http://www.nytimes.com/2012/06/26/technology/in-a-big-network-of-computers-evidence-of-machine-learning.html

 

5 https://research.facebook.com/publications/deepface-closing-the-gap-to-human-level-performance-in-face-verification/

 

6 http://www.inaoep.mx/noticias/?noticia=341&anio=2015

 

7 https://code.facebook.com/posts/1687861518126048/facebook-to-open-source-ai-hardware-design/