Vaincre l'OOM dans PyTorch : entraîner d'immenses graphes sur un GPU ordinaire
Disk Sparse Adam
Un développeur a créé Disk Sparse Adam (DSA), un optimiseur hors mémoire pour PyTorch qui déplace les états de moment de l'optimiseur sur le disque via mmap, réduisant considérablement l'utilisation de la mémoire pour l'entraînement de grands modèles épars. Cela permet l'entraînement sur des GPU grand public et même sur Google Colab gratuit, avec un benchmark montrant une surcharge de mémoire VRAM nulle sur un million d'entités.
L'article présente Disk Sparse Adam (DSA), un nouvel optimiseur hors mémoire pour PyTorch, conçu pour entraîner des modèles parcimonieux de grande taille, tels que des plongements de graphes de connaissances avec des millions de nœuds, sur des GPU grand public. Le torch.optim.SparseAdam standard stocke les moments du premier et du second ordre en mémoire, ce qui, pour un modèle avec 10 millions d'entités et des vecteurs de dimension 128, consomme environ 10,24 Go supplémentaires, entraînant souvent des erreurs de mémoire insuffisante sur le GPU. DSA stocke plutôt ces matrices de moments sur disque sous forme de fichiers binaires et les mappe en mémoire via le mécanisme mmap du système d'exploitation, ne lisant et n'écrivant que les états du lot actif à chaque étape d'optimisation. L'optimiseur est conçu comme un remplacement direct pour les pipelines standard de PyTorch, et il prend en charge à la fois les espaces euclidiens et hyperboliques (boule de Poincaré). L'auteur rapporte que l'utilisation mémoire pour les états de l'optimiseur passe de gigaoctets à mégaoctets, et un benchmark sur Kaggle avec 1 million d'entités a montré une surcharge mémoire GPU de 0,00 Mo et un débit de 134 212 échantillons par seconde. DSA est disponible sur GitHub sous licence MIT, avec des limitations incluant le besoin d'un SSD NVMe pour des performances optimales et la compatibilité uniquement avec les gradients parcimonieux, comme ceux de torch.nn.Embedding ou EmbeddingBag.
Source: Habr — хаб ИИ —
original
