Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon OOM 오류를 피하기 위해 JAX를 어떻게 구성 할 수 있습니까?


OOM 오류를 피하기 위해 JAX를 어떻게 구성 할 수 있습니까?


JAX를 구성하고 메모리 외 (OOM) 오류를 피하려면 몇 가지 전략을 사용할 수 있습니다.

1. PrealLocation 비활성화 : 기본적으로 JAX는 총 GPU 메모리의 75%를 기록합니다. 환경 변수`xla_python_client_preallocate = false`를 설정 하여이 동작을 비활성화 할 수 있습니다. 이것은 필요에 따라 메모리를 할당하여 OOM 오류의 가능성을 줄이지 않고 잠재적으로 메모리 조각화를 증가시킵니다 [1] [3].

2. 메모리 조정 분수 : PrealLocation이 활성화 된 경우`xla_python_client_mem_fraction = .xx`를 사용하여 Jax Preallocated의 GPU 메모리 분율을 조정할 수 있습니다. 여기서`.xx`는 원하는 백분율입니다. 이 값을 낮추면 시작시 OOM 오류를 방지 할 수 있습니다 [1] [3].

3. 플랫폼 할당 사용 :`XLA_PYTHON_CLIENT_ALLOCATOR = 플랫폼 설정 JAX는 주문에 필요한 것을 정확하게 할당하고 사용되지 않은 메모리를 처리합니다. 이것은 느리게 진행되며 일반적인 사용에는 권장되지 않지만 OOM 문제를 디버깅하거나 메모리 사용을 최소화하는 데 유용 할 수 있습니다 [1] [3].

4. 동시 프로세스를 피하십시오 : 여러 JAX 프로세스를 실행하거나 GPU 텐서 플로우와 함께 JAX를 사용하면 OOM 오류가 발생할 수 있습니다. `xla_python_client_mem_fraction`을 사용하여 각 프로세스에 적절하게 메모리를 할당하거나`xla_python_client_preallocate = false` [1] [3]를 설정하십시오.

5. 장치 배열 관리 : 'DevicearRay'객체가 올바르게 관리되도록하십시오. `device_get`을 사용하여 데이터를 호스트에 가져오고 'DevicearRay'객체에 대한 참조는 무료 장치 메모리에 대한 남아 있지 않습니다 [2].

6. 모델 및 데이터 최적화 : 메모리 요구 사항을 줄이기 위해 모델 및 데이터를 배치 또는 최적화하는 것을 고려하십시오. 이것은 대형 데이터 세트 나 복잡한 모델로 작업 할 때 특히 효과적 일 수 있습니다 [5].

인용 :
[1] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://github.com/google/flax/discussions/929
[3] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://docs.jax.dev/en/latest/faq.html
[5] https://forums.developer.nvidia.com/t/batching-mcmc-oom-issue-numpyro-jax/321026
[6] https://www.ibm.com/docs/en/was-liberty/base?topic=liberty-runtime- 환경-알고있는 알려진 것들
[7] https://discourse.pymc.io/t/has-anyone-had-memory-issues-with-jax-gpu-specificificiality/10078
[8] https://community.fabric.microsoft.com/t5/desktop/optimizing-measures-to-avoid-of-memory-errors/td-p/570067