Ir al contenido principal
OpenAI

8 de diciembre de 2022

Empresa

Descubrimos los entresijos de los sistemas backend

Person gazing across the room with an optimistic expression

Fotografía: Jake Stangel

Cargando…

¿Qué es lo primero que te hizo tener interés por la ingeniería?

Tuve la suerte de descubrir la programación de pequeño y esto me abrió las puertas para explorar otros temas. En el colegio, un amigo me enseñó el fascinante lenguaje de programación BASIC que incluían las calculadoras Texas Instruments (mi código era imposible de mantener debido a la restricción de 27 letras variables por programa y una fuerte dependencia a las instrucciones GOTO). Sin embargo, creamos algunos programas sencillos, como videojuegos de aventuras basados en texto, una aplicación de chat para calculadoras vinculadas y la típica ayuda para las ecuaciones de segundo grado.

Más adelante, hice programas más complejos, como un ayudante visual para ilustrar el método de Newton y una calculadora de órbitas para estimar la posición de los planetas y sus lunas, proyectos que atrajeron la atención del club de Linux de mi colegio. Enseguida me encontré peleándome con NDISwrapper para conseguir que el adaptador wifi basado en CardBus de mi portátil funcionara y personalizando mi ordenador de sobremesa con Compiz. Seguí aprendiendo sobre el mundo del código y la programación a partir del instituto, lo que dio como resultado mi actual interés por la ingeniería.

¿Qué te llevó a trabajar en OpenAI?

En mi antiguo trabajo pasé de tener una posición backend a una full stack y entonces me di cuenta de que no me gusta trabajar en frontend ni en el diseño de la experiencia de usuario. Quería volver a una posición más relacionada con los sistemas backend y echaba de menos trabajar con los entornos Linux que usaba en mi época de estudiante. Entonces apareció OpenAI con el cambio laboral que estaba esperando (y la verdad es que me habría costado encontrar un puesto que me interesara más que trabajar con sus clústeres de supercomputación).

¿Qué problemas estás intentando resolver en OpenAI?

Los flujos de trabajo de la IA exploratoria son rápidos de por sí. Los investigadores quieren poder acceder a las primeras versiones de artículos en arXiv y probar los nuevos enfoques que encuentren sin tener que lidiar con las limitaciones de la plataforma donde programan. Estos flujos de trabajo también son extremadamente complejos. Los investigadores parecen más bien matemáticos y dependen de la intuición que han ido desarrollando a lo largo de sus carreras para resolver cualquier problema que les haya llamado la atención esa semana. Además, el hecho de que estos procesos se estén ejecutando en algunos de los superordenadores más grandes del mundo añade otra capa de complejidad. Mi equipo es el que se encarga de gestionar esta penúltima capa. Trabajamos para anticiparnos a las necesidades de los investigadores antes de que algún impedimento bloquee su progreso y, si no llegamos a tiempo, colaboramos con estos equipos para identificar los obstáculos e implementar soluciones alternativas tan rápido como sea posible.

Person sitting at a cafeteria table with a glass of water and closed laptop

Fotografía: Jake Stangel

¿Qué diferencias crees que hay entre trabajar en supercomputación en OpenAI y hacerlo en otro lugar?

Sinceramente, la escala a la que trabajamos aquí es impresionante. A menudo, los proveedores de hardware nos confiesan que solemos encontrar problemas que nunca antes habían visto. Normalmente, esto se debe a que nuestras instalaciones tienen más hardware en un solo superordenador que sus otros clientes, aunque otras veces es debido a nuestras expectativas de rendimiento. Como la mayoría de los enfoques de entrenamiento de modelos se basan en la sincronización, esto implica que el clúster entero funciona a la velocidad del nodo más lento.

Nuestros modelos más destacados se entrenan con superordenadores de miles de millones de dólares, así que, como es de esperar, acabamos detectando fallos en el funcionamiento que la mayoría de las empresas ignoraría. Es muy emocionante ver que un cambio de una sola línea influye en el núcleo principal, y que esto ahorrará seis días de cálculos por todo el sistema cada semana, o ver una línea en un nuevo driver y saber que uno de nuestros hallazgos dio lugar a esa corrección.

¿Cómo es un día normal en OpenAI para ti?

Mi día se resume en programar, investigar problemas y asistir a reuniones. Suelo tener todas las reuniones los martes (por suerte) y el resto de la semana me la paso programando y depurando código. Algunos de los problemas detectados acaban siendo trabajo de programación, como redactar un documento de diseño, hacer un pull request o añadir una lógica de comprobación de salud pasiva para excluir el hardware defectuoso de nuestros clústeres.

Indagar los problemas requiere un poco de investigación. El impacto de mi investigación oscila entre lo ambiguo («parece que avanzo más despacio que ayer») y lo horriblemente específico («creo que si envío más de 30 Gb/s al NIC del Ethernet, voy a causar un error irreparable en el núcleo»). En resumen, un día normal para mí suele ser productivo, cuando todo va como la seda, o emocionante, cuando surgen problemas y tengo la oportunidad de aprender algo nuevo.

«OpenAI brinda la oportunidad de indagar aspectos de la computación que no se tienen en cuenta en ninguna otra empresa».

¿Qué es lo que te motiva cada día?

Pocas veces voy al trabajo sin tener en mente qué voy a hacer. Suelo preocuparme por el equipo, el proyecto y los investigadores en concreto que se benefician de que las tareas se completen a tiempo. OpenAI es la empresa más grande para la que he trabajado, y que me agradezcan inmediatamente mi trabajo es clave para mi motivación diaria. También me motiva mucho descubrir las minucias de los sistemas. OpenAI no es la primera empresa para la que trabajo en sistemas backend, pero sí es la primera vez que trabajo en un espacio HPC.

Las tecnologías con las que trabajamos a menudo existen simplemente por los problemas de rendimiento tan específicos de este entorno. En las otras empresas no me tenía que preocupar por la topología física del hardware (por ejemplo, de asegurar que había una buena comunicación dentro de un mismo dominio NUMA; o que una GPU usara un NVME o un dispositivo InfiniBand a través de GPUDirect de NVIDIA; o que los procesos del sistema se asociaran a una CPU específica para evitar problemas con otros recursos durante los procesos de investigación). OpenAI brinda la oportunidad de indagar aspectos de la computación que no se tienen en cuenta en ninguna otra empresa, y es algo que mantiene mi interés en lo que hago.

¿Dónde encuentras la inspiración?

Nada me inspira más que ver nuestros equipos de investigación avanzando y mejorando sus modelos. Muchos grupos configuran bots de Slack o plataformas en las que puedes interactuar con los modelos y ponerlos a prueba durante la fase de desarrollo, lo que te permite ver cómo los modelos mejoran a medida que avanza el entrenamiento.

También uso el emoji :meow_party: para etiquetar contenido motivacional o inspirador en los múltiples canales de Slack que tenemos. Desde que llegué a mediados de 2020, he subido más de 400 publicaciones con el emoji :meow_party:, lo que vendría a ser unas cuatro por semana.