Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon JAX 메모리 할당을 구성하는 데 사용되는 환경 변수는 무엇입니까?


JAX 메모리 할당을 구성하는 데 사용되는 환경 변수는 무엇입니까?


JAX 메모리 할당을 구성하기 위해 여러 환경 변수를 사용할 수 있습니다.

1.`xla_python_client_preallocate` :이 변수는 Jax가 GPU 메모리를 preallocate지를 제어합니다. 'false'로 설정하면 preallocation이 비활성화되어 Jax가 필요에 따라 메모리를 할당합니다. 그러나 이것은 메모리 조각화로 이어질 수 있으며 일부 버전의 JAX [1] [3] [5]에서 항상 예상대로 작동하지 않을 수 있습니다.

2.`XLA_PYTHON_CLIENT_MEM_FRACTION` :이 변수는 jax가 PrealLoce에 있어야하는 총 GPU 메모리의 백분율을 지정합니다. 예를 들어,`.10`로 설정하면 GPU 메모리의 10%를 prealloce습니다. 이것은 메모리 외 오류를 피하는 데 도움이 될 수 있지만 제대로 관리되지 않으면 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/advanccics_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