Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 用于配置JAX内存分配的环境变量是什么


用于配置JAX内存分配的环境变量是什么


要配置JAX内存分配,可以使用几个环境变量:

1。`Xla_python_client_preallocate`:此变量控制JAX PREALLOCELLOCELLOCENTING GPU内存。将其设置为`false`禁用预先定位,从而根据需要分配内存。但是,这可能会导致内存碎片,并且在某些版本的JAX [1] [3] [5]中可能并不总是正常工作。

2。`xla_python_client_mem_fraction`:此变量指定jax应该在PREALLOCATE的总GPU内存的百分比。例如,将其设置为`.10`将在GPU内存的10%中预先分配。这可以有助于避免内存错误,但如果无法正确管理,可能会导致OOM警告[1] [3] [5]。

3。`xla_python_client_allocator = platform`:此设置使JAX完全分配了需求所需的内容和不再需要的内存。虽然不建议由于其缓慢的性能而成为一般使用,但它对于调试或最小化GPU内存使用情况可能很有用[1] [3]。

可以在运行JAX应用程序以自定义其内存分配行为之前设置这些变量。但是,一些用户在某些版本的JAX [5] [9]中报告了与这些设置不一致的行为。

引用:
[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-usage-even-with-cpu-alocation