OOM-verslaan in PyTorch: Gigantische grafieken trainen op een gewone GPU
Disk Sparse Adam
Een ontwikkelaar heeft Disk Sparse Adam (DSA) gecreëerd, een out-of-core optimizer voor PyTorch die optimizer-momenttoestanden via mmap naar de schijf verplaatst, waardoor het geheugengebruik voor het trainen van grote sparse modellen drastisch wordt verminderd. Dit maakt trainen op consumenten-GPU's en zelfs gratis Google Colab mogelijk, met een benchmark die nul VRAM-overhead aantoont op een miljoen entiteiten.
Het artikel presenteert Disk Sparse Adam (DSA), een nieuwe out-of-core optimizer voor PyTorch die is ontworpen om massieve sparse modellen te trainen, zoals knowledge graph embeddings met miljoenen knooppunten, op consumenten-GPU's. De standaard torch.optim.SparseAdam slaat eerste en tweede momentstatussen op in het geheugen, wat voor een model met 10 miljoen entiteiten en 128-dimensionale vectoren ongeveer 10,24 GB extra verbruikt, wat vaak leidt tot CUDA out-of-memory fouten. DSA slaat deze momentmatrices in plaats daarvan op als binaire bestanden op schijf en mapt ze in het geheugen met behulp van het OS mmap-mechanisme, waarbij alleen de statussen van de actieve batch worden gelezen en geschreven bij elke optimalisatiestap. De optimizer is ontworpen als een directe vervanging voor standaard PyTorch-pipelines en ondersteunt zowel Euclidische als hyperbolische (Poincaré-bal) ruimtes. De auteur meldt dat het geheugengebruik voor optimizerstatussen daalt van gigabytes naar megabytes, en een benchmark op Kaggle met 1 miljoen entiteiten toonde 0,00 MB VRAM-overhead en een doorvoer van 134.212 samples per seconde. DSA is beschikbaar op GitHub onder de MIT-licentie, met beperkingen waaronder de noodzaak van een NVMe SSD voor optimale prestaties en compatibiliteit alleen met sparse gradients, zoals die van torch.nn.Embedding of EmbeddingBag.
Bron: Habr — хаб ИИ —
origineel
