JAX-is võivad mäluvälised (OOM) vead ilmneda mitmete tavaliste põhjuste tõttu:
1. GPU mälu preallokatsioon: Jax Preallokab 75% kogu GPU mälust vaikimisi, kui esimese JAX -toimingu käivitatakse. See võib põhjustada OOM -vigu, kui süsteemil pole piisavalt mälu. Selle leevendamiseks saate kohandada eelnevat fraktsiooni, kasutades keskkonnamuutujat `XLA_PYTHON_CLIENT_MEM_FRACTION`, või keelake PREALLOCATION, seadistades` xla_python_client_prealLocate = false` [1] [3].
2. mitme Jaxi protsessi käitamine Iga protsessi mälufraktsiooni kohandamine või eelteade keelamine võib aidata seda probleemi hallata [1] [3].
3. JAX ja GPU Tensorflow käitamine samaaegselt: nii Jax kui ka Tensorflow Preallocate GPU mälu vaikimisi, mis võib põhjustada konflikte ja põhjustada OOM -i vigu. Ainult CPU-ga tensorflow kasutamine teatud ülesannete jaoks või mälu eraldamiste kohandamine võib selle lahendada [1] [3].
4. kokkusobimatud CUDA ja CUDNN versioonid: Mõnikord ei pruugi oom vead olla otseselt seotud mäluga, kuid see võib olla tingitud versiooni ebakõladest CUDA ja CUDNNi vahel, mis võivad põhjustada sisemisi vigu, mis ilmnevad mäluprobleemidena [5].
5. Mälulekked või liigne mälu kasutamine: JAX -programmid võivad aja jooksul mälu koguda, kui massiive pole korralikult hallata. Jaxi seadme mäluprofiili kasutamine aitab selliseid probleeme tuvastada [7].
Tsitaadid:[1] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
]
[3] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
]
]
]
[7] https://docs.jax.dev/en/latest/device_memory_profiling.html
[8] https://github.com/google/jax/issues/3687
[9] https://discourse.pymc.io/t/out-of-memory-when-using-pm-sampling-jax-sample-blackjax-nuts/11544