Att inaktivera preallokation i JAX påverkar GPU -minnesanvändning på flera sätt:
1. Strategi för minnesallokering: Som standard Preallocates 75% av det totala GPU -minnet när den första JAX -operationen körs. Denna strategi minimerar allokeringskostnader och minnesfragmentering men kan leda till fel i Memory (OOM) om systemet inte har tillräckligt med minne [1] [3]. Inaktivera PrealLocation med hjälp av miljövariabeln `XLA_PYTHON_CLIENT_PREALLOCATE = FALSE` Ändrar detta beteende för att tilldela minne efter behov, vilket kan minska den totala minnesanvändningen men kan öka minnesfragmenteringen [1] [3].
2. Minnesfragmentering: Med PrealLocation inaktiverad är JAX mer benägen att minnesfragmentering. Detta innebär att även om det totala minnet som används är mindre än det tillgängliga minnet, kan programmet fortfarande rinna ut ur minnet på grund av oförmågan att fördela stora sammanhängande minneblock [1] [3].
3. Prestandapåverkan: Inaktivering av preallokation kan leda till långsammare prestanda eftersom minnesallokering blir mer dynamisk och kan innebära mer omkostnader på grund av ofta tilldelningar och återförsäljningar [1] [3].
4. DealLocation: För att återlämna minne som inte längre behövs kan du använda `xla_python_client_allocator = plattform '. Detta tillvägagångssätt är emellertid mycket långsamt och rekommenderas inte för allmänt bruk, men det kan vara användbart för felsökning eller minimering av minnesavtryck [1] [3].
5. Kompatibilitet med andra paket: Inaktivering av PrealLocation måste göras innan du importerar JAX eller några paket som använder JAX, eftersom inställning av miljövariabler efter import inte har någon effekt [5] [7].
Sammantaget kan inaktivering av preallokation hjälpa till att hantera minnet mer flexibelt men kräver noggrant övervägande av strategier för prestanda och minneshantering.
Citeringar:[1] https://jax.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://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
]
[5] https://github.com/jax-ml/jax/discussions/21962
[6] https://dokumen.pub/google-jax-cookbook.html
]
[8] https://stackoverflow.com/questions/73322760/jax-gpu-memory-usage-even-with-cpu-allocation
[9] https://github.com/jax-ml/jax/discussions/19014