Simulaciones del cerebro

El superordenador BlueGene/L ha estado ocupado últimamente con una simulación interesante: la del córtex cerebral de un ratón. Los reporteros de ciencia suelen cometer errores de bulto con frecuencia, y esta no es una excepción: si observáis con atención el artículo (y sus traducciones/copias en español) comprobaréis como se habla de “medio cerebro de un ratón”, lo que es obviamente incierto. El cerebro de un ratón tiene bastantes más neuronas que 16 millones, como puede comprobarse en esta interesantísima página de datos y cifras cerebrales.

Pero hoy no quería cebarme en los periodistas, sino reflexionar sobre el estado del arte en computación, y las consecuencias a medio plazo de desarrollos como el que relato. Tomando como base los números de la página citada anteriormente, vemos que el córtex humano tiene un número de neuronas estimado en 1010, con aproximadamente el mismo número de sinapsis por neurona que un ratón (6000, 8000… no es una diferencia significativa). BlueGene/L es una máquina capaz de alcanzar los 360 TFLOPS (360·1012 operaciones de punto flotante por segundo). Suponiendo que ése fue su rendimiento durante la simulación cortical, que duró 10 segundos, tenemos que se requirieron 3,6·1015 operaciones para realizarla.

Bienvenidos a la Ley de Moore. En su versión más conservadora, afirma que la capacidad computacional de los procesadores se dobla cada dos años (últimamente, parece que se dobla cada 18 meses). ¿Cuándo podemos esperar la simulación del córtex humano? En el mejor de los casos, considerando tan sólo un incremento lineal en el número de neuronas, será una simulación 1250 veces mayor. Pongamos 10000. Se necesitarán 3,6·1019 operaciones para realizarla, y BlueGene/L tardaría hoy, suponiendo que no tiene problemas de almacenamiento, alrededor de… 28 horas por segundo simulado. Para estudiar el funcionamiento del córtex cerebral, es perfectamente factible (y en el Laboratorio Goodman de Computación Cerebral de la Universidad de Nevada tienen ya el software).

¿Y en tiempo real? Hay una diferencia de 105 entre la capacidad actual de BlueGene/L y lo que haría falta para simular un córtex humano en tiempo real. Tomando logaritmos en base 2, tenemos la respuesta:

log2(105) = 16,6096

Recordemos la cifra estimada por Moore: el doble de capacidad cada 24 meses. Tendríamos una simulación en tiempo real de un córtex humano en 33 años (en 25 al ritmo actual). Sólo queda esperar que la ley de Moore no se cumpla por las limitaciones cuánticas de la miniaturización de transistores u otros efectos. Pero el ingenio humano va por delante —de momento.

Anuncios

¡Organización, organización!

… Como decía el del chiste de la orgía (no, no lo voy a contar; si no te lo sabes, lo buscas). La evidencia la revela El País (La multitarea, rival del rendimiento). Y digo evidencia porque lo que cuenta me parece obvio, y no sólo por cuestiones de sentido común, sino porque creo que el cerebro, como máquina de pensar, se parece más de lo que creemos —y queremos creer, a veces— a las computadoras.

Para un ordenador, la multitarea no es un modo de hacer más cosas en menos tiempo, sino una forma de manipular la percepción del usuario para que parezca que se hace más. La realidad es que, dado un ordenador (no importa la velocidad, es un ordenador teórico) y un conjunto de tareas cualquiera, éstas se terminarán en el mismo tiempo independientemente de cómo se distribuyan. Más concretamente: si un ordenador puede realizar n operaciones por segundo, y se tiene el conjunto de tareas {T0, … , Tm} que suponen {O0, … , Om} operaciones, tardarán en ejecutarse como mínimo un tiempo t igual a:
Esto supone que no se tarda nada en repartir juego entre las diferentes tareas. En la realidad, existen diferentes algoritmos de planificación (scheduling), con diferentes impactos sobre el tiempo de proceso. Siempre habrá una fracción de tiempo destinada a alternar entre tareas, a cambiar de contexto. En el mejor de los casos, cada cambio de contexto llevará un tiempo constante, que no dependerá de las tareas en liza. Es decir, será una operación O(1).
Aquí, N es el número de cambios de contexto que se darán en t, y tc es el tiempo que tarda en efectuarse un cambio. A la vista de esta fórmula, está claro que el rendimiento de un ordenador será mayor cuanto menor sea el tiempo dedicado a cambios de contexto. Es decir: hará más trabajo útil si no se pierde el tiempo en la multitarea. Igual que en el cerebro humano.

La máquina de pensar de carne tiene trucos muy buenos para mejorar su rendimiento. En particular, parece ser masivamente paralela. Varios procesadores independientes pueden realizar varias tareas a un tiempo sin pérdidas por multitarea, y el cerebro humano se organiza de esa forma si tenemos en cuenta las funciones inconscientes del organismo. Pero en el dominio de la consciencia somos algo similar a una máquina con arquitectura SISD, buffers (memoria a corto plazo) muy pequeños y un modo bastante ineficiente de cambiar el contexto. Es decir, que estamos casi obsoletos.