Core dump epidemiología: arreglando un bug de 18 años
El equipo de ingeniería de OpenAI ha resuelto un bug de 18 años en la biblioteca GNU libunwind que causaba problemas en su infraestructura de datos. La solución se logró mediante el análisis de datos a nivel de población para depurar problemas difíciles en su sistema.
OpenAI utiliza una infraestructura de datos escalable para buscar información relevante en tiempo de inferencia, cuando los modelos están pensando en una pregunta. Algunos de estos servicios están escritos en C++, lo que permite un control de bajo nivel del sistema y maximiza el rendimiento y minimiza el uso de memoria. Sin embargo, la falta de seguridad de memoria en C++ significa que los errores pueden causar problemas por escritura en direcciones de memoria incorrectas o inexistentes.
“El equipo inicialmente intentó depurar el problema examinando algunos volcados de núcleo, pero no pudo encontrar la causa del problema”
El equipo de OpenAI observó algunos problemas en el servicio Rockset, una parte clave de su infraestructura de datos para ChatGPT. En cada uno de estos problemas, una función normal de C++ parecía terminar y luego regresar a una dirección incorrecta, lo que causaba que el kernel detuviera el programa. El equipo inicialmente intentó depurar el problema examinando algunos volcados de núcleo, pero no pudo encontrar la causa del problema. Sin embargo, al analizar un conjunto de datos más grande, descubrieron que el problema era en realidad dos errores no relacionados: una corrupción de hardware silenciosa en un host de Azure y un error de condición de carrera de 18 años en la biblioteca GNU libunwind.
La solución del equipo de OpenAI se logró mediante el análisis de un conjunto de datos de alta calidad sobre la población de problemas. Al pensar como epidemiólogos, pudieron identificar y solucionar problemas aparentemente inexplicables en su sistema. El equipo utiliza un controlador de señales fatales para registrar una traza de pila cuando ocurre un problema y subir los volcados de núcleo correspondientes a Azure para su análisis posterior. La resolución del bug ha mejorado la confiabilidad y la calidad de su infraestructura de datos.
La experiencia de OpenAI destaca la importancia de analizar datos a nivel de población para depurar problemas difíciles en sistemas complejos. Al utilizar un enfoque epidemiológico, los equipos de ingeniería pueden identificar y solucionar problemas que de otro modo podrían ser difíciles de detectar. Esto es especialmente importante en sistemas que requieren alta confiabilidad y calidad, como la infraestructura de datos de OpenAI.