← Derniers articles
🤖 machine learning

Memory-Efficient Activation Checkpointing with Sliding Window and Hirschberg's Algorithm for 0/1 Knapsack Solving in PyTorch

Cet article introduit un solveur de point de contrôle d'activation (activation checkpointing) économe en mémoire pour PyTorch qui combine les algorithmes de fenêtre glissante et de Hirschberg afin de réduire la consommation de mémoire de pointe de O(nW)O(nW) à O(W)O(W), permettant la résolution de problèmes de sac à dos 0/1 nettement plus grands avec une accélération du temps d'exécution de 25 à 28 % et une intégration ultérieure dans PyTorch 2.10.

Auteurs originaux : Jędrzej Maczan

Publié 2026-08-11
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Jędrzej Maczan

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous essayez de cuisiner le gâteau le plus délicieux et le plus complexe au monde, mais que vous ne disposez que d'une cuisine minuscule et exiguë. Vous avez une recette qui vous oblige à garder une trace de chaque ingrédient mélangé, de chaque changement de température et de chaque mouvement de fouet afin de pouvoir parfaitement inverser le processus plus tard pour voir comment le gâteau a tourné. Le problème est que votre plan de travail (la mémoire de votre ordinateur) est trop petit pour contenir toutes ces notes. Si vous essayez de tout noter, le plan de travail déborde et vous devez arrêter la cuisine. C'est la lutte quotidienne des scientifiques qui entraînent des modèles d'intelligence artificielle massifs. Ils doivent se souvenir de beaucoup d'étapes pour enseigner à l'IA, mais leurs ordinateurs manquent d'espace. Pour résoudre cela, ils utilisent une astuce ingénieuse appelée « activation checkpointing » (point de contrôle d'activation). Au lieu de noter chaque étape, ils choisissent les plus importantes à sauvegarder et conviennent de refaire les moins importantes plus tard. C'est comme décider quelles photos garder dans un petit album photo et lesquelles vous pouvez vous permettre de reprendre si vous les oubliez. Le but est de faire entrer tout le processus de confection du gâteau dans cette petite cuisine sans perdre la magie de la recette.

Pendant longtemps, le programme informatique PyTorch, que de nombreux scientifiques en IA utilisent pour construire ces modèles, avait une manière spécifique de décider quelles étapes sauvegarder. Il traitait la décision comme un puzzle classique appelé le « problème du sac à dos 0/1 ». Imaginez que vous êtes un randonneur avec un sac à dos qui ne peut supporter qu'un certain poids. Vous avez une liste d'objets, chacun avec un poids et une valeur (ce qu'il vous apporte). Vous voulez choisir les objets qui offrent le plus de valeur sans casser votre sac à dos. La méthode par défaut de PyTorch pour résoudre ce problème revenait à essayer d'écrire toutes les combinaisons possibles d'objets sur une feuille de papier géante. Bien que cette méthode soit parfaite et trouve la réponse absolue, la feuille de papier devenait si grande que la mémoire de l'ordinateur explosait, provoquant le plantage du programme. Les chercheurs ont découvert que si l'on avait seulement 100 objets à choisir, la feuille de papier nécessaire était si grande qu'elle nécessitait 304 gigaoctets d'espace, ce qui est bien plus que les 64 gigaoctets disponibles sur leur machine. C'était une solution parfaite qui ne pouvait tout simplement pas tenir dans la pièce.

Dans cet article, l'auteur présente une nouvelle façon plus intelligente de résoudre ce puzzle, qu'il appelle dp_knapsack_sliding_hirschberg. Au lieu d'essayer d'écrire toute cette feuille géante d'un coup, il utilise une astuce de « fenêtre glissante » (sliding window). Imaginez que vous lisez un long livre, mais que vous n'avez qu'une petite loupe qui peut vous montrer deux pages à la fois. Vous faites glisser la loupe le long du livre, regardant deux pages, puis les deux suivantes, et ainsi de suite. De cette façon, vous n'avez besoin de garder en tête que deux pages à la fois, économisant ainsi un espace mental massif. Cependant, regarder seulement deux pages ne suffit pas pour se souvenir de toute l'histoire ; vous devez savoir quels objets spécifiques choisir. Pour corriger cela, ils combinent la fenêtre glissante avec une vieille stratégie ingénieuse appelée « algorithme de Hirschberg ». Considérez cela comme un jeu de « diviser pour régner ». Au lieu d'essayer de résoudre tout le problème du sac à dos d'un coup, ils divisent la liste d'objets en deux. Ils résolvent la moitié gauche, puis la moitié droite, puis cherchent comment combiner les deux meilleures solutions. Ils font cela de manière récursive, en décomposant le problème en morceaux de plus en plus petits jusqu'à ce qu'ils puissent le résoudre facilement, tout en utilisant une quantité infime de mémoire.

Les résultats de cette nouvelle méthode sont impressionnants. L'auteur a testé cette méthode sur un ordinateur doté de 64 gigaoctets de RAM. Alors que l'ancienne méthode plantait en essayant de résoudre un problème avec seulement 100 objets, la nouvelle méthode a résolu avec succès un problème de 2 000 objets, en utilisant un pic de 58,4 gigaoctets de mémoire. Cela signifie que l'ordinateur peut désormais gérer un problème 20 fois plus grand qu'auparavant sans manquer d'espace. De plus, la nouvelle méthode n'est pas seulement une économie de mémoire ; elle est aussi plus rapide. Dans leurs tests, elle s'est avérée 25 % à 28 % plus rapide que l'ancienne méthode. L'auteur a mesuré cela en faisant tourner le même puzzle 1 000 fois sur une machine spécifique et a constaté que le nouveau solveur battait systématiquement l'ancien en termes de vitesse. Crucialement, contrairement à d'autres méthodes de « correction rapide » qui devinent la réponse et peuvent être légèrement erronées, cette nouvelle méthode trouve toujours la solution exacte et parfaite. Elle est aussi précise que l'ancienne méthode, mais beaucoup plus efficace.

L'article confirme que cette nouvelle approche n'est pas seulement une théorie ; elle a été intégrée avec succès dans le logiciel PyTorch et est disponible dans la version 2.10. L'auteur montre qu'en utilisant cette combinaison de fenêtres glissantes et de division pour régner, ils peuvent résoudre le goulot d'étranglement de la mémoire qui empêchait les modèles d'IA de croître davantage. Ils ne prétendent pas que c'est la seule façon de résoudre le problème, ni suggèrent que cela fonctionne pour tous les types de puzzles informatiques, mais pour la tâche spécifique de décider quelles étapes d'IA sauvegarder, c'est une mise à niveau prouvée, exacte et hautement efficace. L'article écarte l'idée que l'ancienne méthode soit suffisante pour les grands modèles, montrant clairement qu'elle échoue lorsque le nombre d'éléments devient trop élevé. Au lieu de cela, ils proposent une solution qui conserve la précision parfaite de l'ancienne méthode tout en supprimant le plantage de mémoire, permettant aux scientifiques de cuisiner des gâteaux d'IA plus grands et plus complexes dans leurs petites cuisines.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →