V Jaxu se lahko zaradi več pogostih vzrokov pojavijo napake zunaj pomnilnika (OOM):
1. Preallokacija pomnilnika GPU: Jax privzeto privzeto privzeto 75% celotnega pomnilnika GPU, ko se izvaja prva operacija JAX. To lahko privede do napak OOM, če sistem nima dovolj pomnilnika. Če želite ublažiti to, lahko frakcijo predreallokacije prilagodite s spremenljivko okolja `xla_python_client_mem_mem_fraction` ali onemogoči predtekmovanje z nastavitvijo` xla_python_client_preallocate = false` [1] [3].
2. Hkrati izvajanje več procesov JAX: Ko se izvaja več procesov JAX, lahko skupaj porabijo več pomnilnika, kot je na voljo, kar vodi do napak OOM. Prilagoditev pomnilniškega deleža za vsak postopek ali onemogočanje predreallokacije lahko pomaga pri upravljanju te težave [1] [3].
3. Hkrati izvajata JAX in GPU Tensorflow: tako Jax kot Tensorflow privzeto predhodno opravljata pomnilnik GPU, kar lahko povzroči konflikte in vodi do napak v OOM. Uporaba tensorflow-a samo za CPU za določene naloge ali prilagajanje dodelitev pomnilnika lahko to reši [1] [3].
4. Nezdružljiva različica CUDA in CUDNN: Včasih napake OOM morda niso neposredno povezane s pomnilnikom, ampak bi lahko bile posledica neusklajenosti različic med CUDA in CUDNN, kar lahko povzroči notranje napake, ki se pojavljajo kot težave s spominom [5].
5. Puščanje pomnilnika ali prekomerna poraba pomnilnika: programi JAX lahko sčasoma nabirajo pomnilnik, če matriki ne bodo pravilno upravljani. Uporaba profila pomnilnika naprave JAX lahko pomaga prepoznati takšne težave [7].
Navedbe:[1] https://kolonist26-jax-kr.readthedocs.io/sl/latest/gpu_memory_allocation.html
[2] https://dzone.com/articles/root-causes-of-oom-issues-in-java-Containers
[3] https://jax.readthedocs.io/sl/latest/gpu_memory_allocation.html
[4] https://www.ibm.com/
[5] https://stackoverflow.com/questions/77065313/jax-produces-memory-error-for-simple-program-on-gpu
[6] https://stackoverflow.com/questions/15462192/jax-ws-soaphandler-with-large-messages-outofMemoryerror
[7] https://docs.jax.dev/sl/latest/device_memory_profiling.html
[8] https://github.com/google/jax/isissue/3687
[9] https://discourse.pymc.io/t/out-of-memory-when-using-pm-sampling-jax-sample-blackjax-nuts/11544