K konfiguraci alokace paměti Jax lze použít několik proměnných prostředí:
1. `xla_python_client_preallocate`: Tato proměnná řídí, zda JAX preallocates paměť GPU. Nastavení na „False“ zakáže preallokaci, což způsobí, že JAX podle potřeby přiděluje paměť. To však může vést k fragmentaci paměti a nemusí vždy fungovat podle očekávání v některých verzích Jax [1] [3] [5].
2. `Xla_Python_Client_Mem_fraction`: Tato proměnná specifikuje procento celkové paměti GPU, kterou by měl Jax předplatit. Například jeho nastavení na `.10` bude předchůdce 10% paměti GPU. To může pomoci zabránit chybám mimo paměti, ale může to vést k varování OOM, pokud nebude správně zvládnuto [1] [3] [5].
3. `xla_python_client_allocator = platforma`: Toto nastavení způsobuje, že JAX přiděluje přesně to, co je potřeba na vyžádání, a rozdává paměť, která již není potřeba. I když se nedoporučuje pro obecné použití kvůli jeho pomalému výkonu, může být užitečný pro ladění nebo minimalizaci využití paměti GPU [1] [3].
Tyto proměnné lze nastavit před spuštěním aplikace JAX, aby se přizpůsobila chování při přidělování paměti. Někteří uživatelé však uvedli nekonzistentní chování s těmito nastaveními v určitých verzích Jax [5] [9].
Citace:[1] https://kolonist26-jax-Kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://docs.nvidia.com/deeplearning/dalis/user-guide/docs/advanced_topics_performance_tuning.html
[3] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://docs.jax.dev/en/latest/installation.html
[5] https://github.com/google/jax/issues/19267
[6] https://www.maplesoft.com/support/help/maple/view.aspx?path=envvar
[7] https://docs.jax.dev/en/latest/faq.html
[8] https://github.com/google/jax/issues/1491
[9] https://github.com/google/jax/issues/19035
[10] https://stackoverflow.com/Questions/73322760/jax-gpu-Memory-sage-even-with-cpu-allocation