OOM-ongelman voitettu PyTorchissa: Jättigraafien kouluttaminen tavallisella GPU:lla
Disk Sparse Adam
Kehittäjä on luonut Disk Sparse Adam (DSA) -optimoijan PyTorchia varten, joka siirtää optimoijan momenttitilat levylle mmap:n avulla, vähentäen huomattavasti muistinkäyttöä suurten harvojen mallien kouluttamisessa. Tämä mahdollistaa kouluttamisen kuluttajatason GPU:lla ja jopa ilmaisella Google Colabilla, ja benchmark osoittaa nollan VRAM-ylikuormituksen miljoonalla entiteetillä.
Artikkelissa esitellään Disk Sparse Adam (DSA), uusi out-of-core -optimoija PyTorchille, joka on suunniteltu suurten harvojen mallien, kuten miljoonia solmuja sisältävien tietograafien upotusten, kouluttamiseen kuluttajatason GPU:illa. Tavallinen torch.optim.SparseAdam tallentaa ensimmäisen ja toisen momentin tilat muistiin, mikä 10 miljoonan entiteetin ja 128-ulotteisten vektoreiden mallissa kuluttaa noin 10,24 gigatavua lisää, mikä johtaa usein CUDA-muistin loppumiseen. DSA tallentaa sen sijaan nämä momenttimatriisit levyllä olevina binaaritiedostoina ja liittää ne muistiin käyttöjärjestelmän mmap-mekanismin avulla, lukien ja kirjoittaen vain aktiivisen erän tilat jokaisella optimointiaskeleella. Optimoija on suunniteltu suoraksi korvaajaksi tavallisissa PyTorch-putkissa, ja se tukee sekä euklidista että hyperbolista (Poincarén pallo) avaruutta. Kirjoittaja raportoi, että optimoijan tilojen muistinkäyttö laskee gigatavuista megatavuihin, ja Kaggle-vertailu 1 miljoonalla entiteetillä osoitti 0,00 megatavun VRAM-ylikuormituksen ja 134 212 näytteen läpäisyn sekunnissa. DSA on saatavilla GitHubissa MIT-lisenssillä, ja sen rajoituksiin kuuluu NVMe-SSD-levyn tarve parhaan suorituskyvyn saavuttamiseksi sekä yhteensopivuus vain harvojen gradienttien kanssa, kuten torch.nn.Embedding- tai EmbeddingBag-funktioista tulevien.
Lähde: Habr — хаб ИИ —
Alkuperäinen
