Optimizing Memory Usage when Training Deep Neural Networks
Optimisation de la consommation mémoire pendant l’apprentissage
Résumé
Artificial Intelligence (AI) has seen remarkable growth in recent years, proving its utility across a wide range of fields including image recognition, nature language processing and autonomous systems. This success is largely driven by access to increasingly large datasets and the development of Deep Neural Networks (DNNs) with greater complexity and size, allowing AI systems to achieve unprecedented levels of performance. However, the growing scale of tasks presents significant challenges, particularly when it comes to training these massive models on devices with limited memory capacity. Efficiently managing memory during training has become a critical focus to ensure that even resource-constrained systems can handle complex AI tasks. There are several strategies to address memory constraints in neural network training. Memory footprints can be distributed across multiple devices or compressed using specialized algorithms that minimize information loss. This thesis focuses on lossless memory-saving techniques, primarily applied to single-device scenarios. The key approaches include reducing the memory cost of intermediate activations by discarding and recomputing them when required, and managing parameter memory costs by swapping them to larger capacity RAM. We have developed optimization algorithms that integrate these techniques, effectively lowering peak memory usage while maintaining efficient training iteration times. Our solutions are implemented in an open-source framework, tested and compatible with leading AI libraries such as PyTorch, HuggingFace, and DeepSpeed.
L’intelligence artificielle (IA) a connu une croissance remarquable ces dernières années, prouvant son utilité dans un large éventail de domaines, notamment la reconnaissance d’images, le traitement du langage naturel et les systèmes autonomes. Ce succès est largement dû à l’accès à des jeux de données toujours plus vastes et au développement de réseaux neuronaux profonds (Deep Neural Networks, DNNs) de taille et de complexité toujours plus importantes, permettant aux systèmes d’IA d’atteindre des niveaux de performance sans précédent. Cependant, la taille croissante des réseaux soulève des défis importants, en particulier lorsqu’il s’agit d’entraîner les modèles gigantesques sur des ressources de calcul dont la mémoire est limitée. La gestion efficace de la mémoire pendant l’apprentissage est devenue une question cruciale pour garantir que les systèmes à ressources limitées sont en mesure de réaliser l’apprentissage de gros modèles d’IA. Il existe plusieurs stratégies pour gérer les contraintes de mémoire lors de l’entraînement des réseaux neuronaux. L’empreinte mémoire peut être distribuée sur plusieurs ressources ou compressée à l’aide d’algorithmes spécialisés qui minimisent la perte d’information. Cette thèse se concentre sur les techniques de réduction de la mémoire sans perte, principalement à des scénarios avec une seule ressource de calcul. Les approches clés comprennent d’une part la réduction de l’empreinte mémoire des activations intermédiaires en en supprimant certaines et en les recalculant lorsque nécessaire et d’autre part la réduction de la mémoire utilisée pour les paramètres en les transférant vers et depuis une mémoire RAM de plus grande capacité. Nous avons développé des algorithmes d’optimisation qui intègrent ces techniques, réduisant efficacement le pic de mémoire tout en maintenant des temps d’itération d’entraînement efficaces. Nos solutions sont mises en oeuvre dans un environnement open-source, testé et compatible avec les principales bibliothèques d’IA telles que PyTorch, HuggingFace et DeepSpeed.
Domaines
Informatique [cs]Origine | Version validée par le jury (STAR) |
---|