Voit määrittää Jaxin ja välttää muistin ulkopuolisia (OOM) virheitä, voit käyttää useita strategioita:
1. Poista esikulmio: Oletuksena Jax Preallloces 75% GPU -muistista. Voit poistaa tämän käyttäytymisen käytöstä asettamalla ympäristömuuttujan `xla_python_client_prealocacate = false`. Tämä jakaa muistin tarpeen mukaan, mikä vähentää OOM -virheiden todennäköisyyttä, mutta mahdollisesti lisää muistin pirstoutumista [1] [3].
2. Säädä muistifraktio: Jos esilaivotus on käytössä, voit säätää GPU -muistin osuutta, jonka Jax PreAlllocates käyttää `xla_python_client_mem_fraction = .xx`, missä` .xx` on haluttu prosenttiosuus. Tämän arvon alentaminen voi auttaa estämään OOM -virheitä käynnistyksen yhteydessä [1] [3].
3. Käytä Platform Allocator -sovellusta: `XLA_PYTHON_CLIENT_ALLOCATOR = Platform` -asetus tekee Jaxista tarkalleen, mitä tarvitaan pyynnöstä ja jakamaan käyttämätön muistin. Tämä on hidasta eikä sitä suositella yleiseen käyttöön, mutta voi olla hyödyllistä OOM -ongelmien virheenkorjaamisessa tai muistin käytön minimoimisessa [1] [3].
4 Käytä `xla_python_client_mem_fraction` muistin allokoimiseksi asianmukaisesti jokaiselle prosessille tai aseta` xla_python_client_prealocacate = false` [1] [3].
5. Hallitse laitejärjestelmiä: Varmista, että "DevicArray" -kohteita hallitaan asianmukaisesti. Käytä `Device_Get` saadaksesi tietoja isäntälle ja varmista, että viittauksia` devicArray` -objekteihin pysyvät vapaassa laitemuistissa [2].
6. Malli ja tiedot optimoivat: Harkitse mallin ja datan eristämistä tai optimointia muistin vaatimusten vähentämiseksi. Tämä voi olla erityisen tehokasta, kun työskentelet suurten tietojoukkojen tai monimutkaisten mallien kanssa [5].
Viittaukset:[1] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://github.com/google/flax/discussions/929
[3] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://docs.jax.dev/en/latest/faq.html
[5] https://forums.developer.nvidia.com/t/batching-mcmc-oom-issue-in-numkyro-jax/321026
.
.
.