A JAX konfigurálásához és a memórián kívüli (OOM) hibák elkerüléséhez több stratégiát használhat:
1. Tiltsa le a Preallocation -t: Alapértelmezés szerint a JAX Prealloke a teljes GPU -memória 75% -át. Ezt a viselkedést letilthatja az `xla_python_client_preallocate = false" környezeti változó beállításával. Ez szükség szerint elosztja a memóriát, csökkentve az OOM hibák valószínűségét, de potenciálisan növeli a memória fragmentálódását [1] [3].
2. Állítsa be a memória frakcióját: Ha az előreicionálás engedélyezve van, akkor beállíthatja a GPU -memória hányadát, amelyet Jax Prealloces az `xla_python_client_mem_fraction = .xx` használatával, ahol` .xx` a kívánt százalék. Ennek az értéknek a csökkentése segíthet megakadályozni az OOM hibákat az indításkor [1] [3].
3. Használja a Platform Allocator -t: Az `xla_python_client_allocator = platform" beállítása a JAX -t pontosan arra fordítja, amire szükség van, és a fel nem használt memóriával foglalkozik. Ez lassú és nem ajánlott általános felhasználásra, de hasznos lehet az OOM problémáinak hibakeresésében vagy a memória használatának minimalizálásában [1] [3].
4. Kerülje el az egyidejű folyamatok futtatását: A többszörös JAX folyamatok futtatása vagy a JAX használata a GPU TensorFlow mellett OOM hibákhoz vezethet. Használja az `xla_python_client_mem_fraction` -t az egyes folyamatokhoz megfelelő memória kiosztására, vagy az` xla_python_client_preallocate = false` [1] [3] beállítását.
5. Az eszköz tömbjeinek kezelése: Győződjön meg arról, hogy a "Devicearray" objektumok megfelelően kezelhetők. Használja a „Device_Get” -et az adatok letöltésére a gazdagépre, és biztosítja, hogy a „Devicearray” objektumokra való hivatkozás ne maradjon a szabad eszköz memóriájához [2].
6. A modell és az adatok optimalizálása: Fontolja meg a modell és az adatok tételét vagy optimalizálását a memóriaigény csökkentése érdekében. Ez különösen hatékony lehet, ha nagy adatkészletekkel vagy összetett modellekkel dolgozik [5].
Idézetek:[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.develicer.nvidia.com/t/batching-mcmc-oM-issue-in-numpyro-sax/321026
[6] https://www.ibm.com/docs/en/was-liberty/base?topic=liberty-runtime-environment-nown-resportictions
[7] https://discourse.pymc.io/t/has-yoneone--memory-issues-with-jax-gpuspecification/10078
[8] https://community.fabric.microsoft.com/t5/desktop/optimizing-measures-to-void-o-o-memory-errors/td-p/570067