El descubrimiento de los detalles de los sistemas backend

Foto: Jake Stangel
¿Qué fue lo primero que te interesó de la ingeniería?
Tuve la suerte de descubrir el mundo de la programación desde muy pequeño y me sirvió como puerta de entrada para incursionar en otras áreas. En la escuela media, un amigo me introdujo a las bondades del lenguaje de programación BASIC que venía en las calculadoras de Texas Instruments (el código no se podía actualizar de manera predecible porque tenía una restricción de 27 variables de letras únicas por programa y porque se apoyaba demasiado en las instrucciones GOTO). Pese a eso, creamos algunos programas sencillos, como videojuegos de aventuras narrativas, una aplicación de chat para calculadoras vinculadas y la típica ayuda para las ecuaciones de segundo grado.
Luego, desarrollé programas más complejos: un asistente visual para graficar el método de Newton y una calculadora de órbitas para estimar la posición de los planetas y sus lunas. Este último le llamó la atención al club de Linux que había en mi escuela. Más tarde me empeciné con usar NDISwrapper para hacer andar un adaptador inalámbrico CardBus en mi computadora portátil y en usar Compiz para crear efectos visuales en mi computadora de escritorio. En la secundaria y después también, seguí descubriendo el mundo por medio del código. Así fue como me interesé por la ingeniería.
¿Por qué elegiste OpenAI?
En mi último trabajo, pasé de trabajar como desarrollador backend a full-stack y descubrí que no me gustaba la programación front-end ni el diseño de la experiencia de usuario. Quería volver a un puesto relacionado con los sistemas backend. Extrañaba la interacción con los entornos Linux que tanto había disfrutado cuando estudiaba. OpenAI resultó ser el cambio de trabajo que estaba buscando; básicamente, era casi imposible dar con algo más parecido a lo que quería: trabajar con los clústeres de supercomputación de OpenAI.
¿Qué problemas te has planteado resolver en OpenAI?
Los procesos de exploración relacionados con la IA de por sí son vertiginosos. Por un lado, los investigadores necesitan poder acceder a adelantos en línea en arXiv y probar nuevos métodos sin las limitaciones de la plataforma para la cual programan código. Por el otro, son personas extremadamente complejas. Tienen un comportamiento muy parecido al de los matemáticos: se guían por la intuición que han aguzado a lo largo de su trayectoria para diseñar soluciones a fin de resolver el problema que les llamó la atención esta semana. Ejecutar estos procesos en algunas de las supercomputadoras más potentes del mundo añade otro grado de complejidad. Mi equipo y yo nos ocupamos de esta penúltima capa. Nuestro objetivo es anticiparnos a las necesidades de los equipos de investigación para sortear inconvenientes que dificulten el progreso. Cuando no lo logramos, trabajamos con ellos para detectar los obstáculos e implementar soluciones alternativas lo más rápido posible.

Foto: Jake Stangel
En tu opinión, ¿cómo es trabajar en el área de Supercomputación de OpenAI en relación con la de otras empresas?
A decir verdad, la magnitud de lo que hacemos, es extraordinaria. Habitualmente, los proveedores de hardware nos confiesan que tenemos problemas que jamás han visto. Esto sucede simplemente porque, en nuestras instalaciones, las supercomputadoras están equipadas con más hardware del que tienen sus otros clientes en una sola unidad. Aunque, también se puede dar porque las expectativas de rendimiento que tenemos son muy altas. La sincronía de la mayoría de los métodos con los que se entrenan los modelos requiere una configuración óptima en la que todo el clúster se ejecuta a la velocidad del nodo más lento.
Nuestros modelos más importantes están entrenados con supercomputadoras multimillonarias y, por ende, terminamos analizando fallas de rendimiento que otras empresas pasarían por alto. Es interesante ver cómo un cambio en una sola línea afecta el núcleo principal, sabiendo que por semana ahorra unos seis días de cálculos a todo el sistema. Otro ejemplo, es saber que la nueva actualización de determinado controlador implementó una corrección que descubrimos nosotros.
¿Qué haces en un típico día de trabajo en OpenAI?
Por lo general, hago un poco de todo: trabajo con código, investigo problemas y asisto a reuniones. El martes es día de reuniones (y, por suerte, normalmente son solo los martes). El resto de la semana queda repartida entre depurar código y programar. Por lo general, los problemas detectados se convierten en trabajo de programación; por ejemplo, redactar un documento de diseño, implementar una corrección rápida en una rama de solicitud de cambios o agregar métodos de comprobación de estado pasivos para aislar hardware defectuoso en los clústeres.
Investigar estos problemas se parece bastante a ser detective. El resultado de este trabajo puede ser poco claro (“Me parece que el sistema anda más lento que ayer”) o tan específico que da pavor (“Creo que si envío más de 30 Gbps a través de la tarjeta de red de Ethernet, causaré un error irrecuperable en el kernel”). Es una fórmula más bien conocida: los días en los que las cosas salen como esperaba son más productivos y aquellos en los que surge un problema, la cosa se pone interesante y tenemos la oportunidad de aprender algo nuevo.
“OpenAI ofrece la posibilidad de ahondar en ciertos aspectos de la informática que otras empresas no tienen en cuenta”.
¿Qué te da energías a diario?
En mi trabajo, casi siempre hay prioridades que deben cumplirse. Por lo general, estoy pendiente del equipo, el proyecto y los investigadores a los que les vendría muy bien que se termine cierta tarea a tiempo. OpenAI es la empresa más grande para la que he trabajado y recibir reconocimiento inmediato por los resultados de mi trabajo me motiva muchísimo a diario. También me divierto descubriendo los pequeños detalles de los sistemas. OpenAI no fue la primera empresa para la que trabajé en sistemas backend, pero sí es la primera vez que me desempeño en el área de computación de alto rendimiento (HPC).
En muchos casos, las tecnologías con las que trabajamos existen estrictamente por los problemas de rendimiento específicos que tiene este entorno. Por ejemplo, en las otras empresas, no tenía que preocuparme por la topología física del hardware, cerciorarme de que la comunicación se establezca dentro de un mismo dominio NUMA, ni de que una GPU use un dispositivo NVME o InfiniBand ubicado en el mismo sistema a través de GPUDirect de NVIDIA, ni tampoco de que los procesos del sistema estén asignados a una CPU determinada para evitar conflictos con otros recursos cuando se ejecutan tareas de investigación. OpenAI ofrece la posibilidad de ahondar en ciertos aspectos de la informática que otras empresas no tienen en cuenta. Eso hace que mantenga el interés en lo que tengo que hacer.
¿Qué te inspira?
Nada me inspira más que ver cómo nuestros equipos de investigación progresan y mejoran los modelos. Muchos grupos configuran bots de Slack o entornos de prueba sencillos en donde se puede interactuar con los modelos que aún están en fase de desarrollo, ¡con lo cual es posible observar cómo mejoran con el entrenamiento constante!
También uso el célebre emoji de Slack :meow_party: para etiquetar contenido motivacional o inspirador en los diversos canales de Slack. Desde que me sumé al equipo a mediados de 2020, etiqueté más de 400 mensajes con el emoji :meow_party:, un promedio casi de cuatro por semana.


