Per configurare l'allocazione della memoria Jax, è possibile utilizzare diverse variabili di ambiente:
1. `Xla_python_client_preallocate`: questa variabile controlla se Jax prealloca la memoria GPU. Impostarlo su `False` disabilita la preallocazione, causando a Jax per allocare la memoria secondo necessità. Tuttavia, ciò può portare alla frammentazione della memoria e potrebbe non funzionare sempre come previsto in alcune versioni di Jax [1] [3] [5].
2. `Xla_python_client_mem_fraction`: questa variabile specifica la percentuale di memoria totale della GPU che Jax dovrebbe preallocare. Ad esempio, l'impostarlo su `.10` preallogerà il 10% della memoria GPU. Ciò può aiutare a evitare errori fuori memoria, ma può portare a avvertimenti OOM se non gestiti correttamente [1] [3] [5].
3. `xla_python_client_allocator = Platform`: questa impostazione rende Jax allocare esattamente ciò che è necessario su richiesta e si è deallocalizzato la memoria che non è più necessaria. Sebbene non sia raccomandato per uso generale a causa delle sue prestazioni lente, può essere utile per il debug o minimizzare l'utilizzo della memoria GPU [1] [3].
Queste variabili possono essere impostate prima di eseguire l'applicazione JAX per personalizzare il suo comportamento di allocazione della memoria. Tuttavia, alcuni utenti hanno riportato un comportamento incoerente con queste impostazioni in alcune versioni di Jax [5] [9].
Citazioni:[1] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://docs.nvidia.com/deeplearning/dali/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-usage-even-with-cpu-allocation