Voici une information qui pourrait bien avoir un impact durable sur le secteur.
Épidémiologie des « core dumps » : correction d’un bug vieux de 18 ans
Utilisation d’analyses à l’échelle de la population pour résoudre les plantages complexes au sein de notre infrastructure de éléments.
Par Nathan Bronson, membre de l’équipe technique. Les modèles et agents d’OpenAI s’appuient de plus en plus sur une infrastructure de informations évolutive afin de rechercher des données pertinentes au moment de l’inférence : c’est-à-dire lorsque les modèles traitent votre question. Certains de ces services sont écrits en C++, dont le contrôle de bas niveau du système nous permet d’optimiser les performances et de réduire au minimum l’utilisation de la mémoire. Ces gains d’efficacité sont importants à mesure que nous évoluons, mais l’absence de sécurité mémoire en C++ signifie que des bogues peuvent provoquer des plantages en écrivant à des adresses mémoire incorrectes ou inexistantes.
Certains de ces services sont écrits en C++, dont le contrôle de bas niveau du système nous permet d’optimiser les performances et de réduire au minimum l’utilisation de la mémoire.
Il y a quelques mois, nous avons constaté plusieurs plantages au sein du service Rockset, un composant sur mesure de notre infrastructure de éléments ChatGPT qui joue un rôle essentiel pour de nombreux plugins de données et pour la travaux de recherche dans les conversations. Dans chacun de ces plantages, une fonction C++ normale semblait s’exécuter jusqu’au bout, puis renvoyer une adresse erronée, ce qui provoquait l’arrêt du programme par le noyau, car le pointeur d’instruction ne pointait plus vers du code. Parfois, l’emplacement de l’adresse de retour dans la trame de pile était NULL. Parfois, le registre CPU du pointeur de pile lui-même semblait décalé de 8 octets, comme si %rsph avait été décrémenté d’une manière ou d’une autre au cours de l’exécution normale. Dans les deux cas, le plantage se produisait lors du retour.
Il faut souligner, ce ne sont pas là des modes de défaillance habituels pour le code d’une application. Une écriture erronée qui ne toucherait que l’adresse de retour enregistrée est possible, mais extrêmement improbable. Un bug qui désaligne %rsp de 8 sans impliquer d’assemblage en ligne, de setcontext ou de longjmp (que nous n’utilisons pas) est encore plus étrange, car le code compilé n’ajuste ce registre directement que dans le prologue et l’épilogue de la fonction. Toutes les hypothèses auxquelles nous (ou ChatGPT) pouvions penser se heurtaient à des preuves solides qui les contredisaient, si bien que ce bug semblait impossible.
Ce que nous avions pris pour un seul problème s’est finalement avéré être deux bogues sans rapport entre eux, découverts par hasard au même moment. Premièrement, une corruption matérielle silencieuse sur un hôte Azure, où le processeur n’effectuait tout simplement pas correctement les calculs. Deuxièmement, une condition de concurrence vieille de 18 ans dans GNU libunwind, un bogue passé inaperçu dans une bibliothèque open source largement utilisée.
De plus, cet article raconte comment nous avons identifié et résolu des plantages apparemment inexplicables en adoptant une approche épidémiologique et en constituant un ensemble de informations de grande qualité couvrant l’ensemble des plantages.
Commençons par approfondir le sujet de Rockset. Il s’agit d’un mécanisme de éléments « cloud-native » dédié à la recherche et à l’analyse en temps réel, que nous utilisons chez OpenAI pour de nombreux cas d’utilisation internes, tels que les connecteurs de synchronisation (Rockset a été racheté par OpenAI en 2024). Les mises à jour en continu permettent de maintenir à jour l’index de la base de connaissances d’un espace de travail, afin que ChatGPT puisse rechercher les informations pertinentes lorsqu’il répond à des questions ou effectue des actions.
Une chose est sûre : le secteur continue d’avancer à grande vitesse.
Pour aller plus loin :
- OpenAI lance GPT-Realtime-2.1 et GPT-Realtime-2.1-mini pour les agents vocaux à faible latence via son API
- Trump obtient d’OpenAI qu’elle propose une participation de 5 % aux États-Unis, un chiffre bien inférieur à l’objectif de Sanders
- SpaceX dispose d’un prototype d’appareil doté d’une IA, et celui-ci ressemble fort à un téléphone | TechCrunch
Selon l’information initialement publiée par OpenAI : OpenAI