Untuk mengonfigurasi alokasi memori JAX, beberapa variabel lingkungan dapat digunakan:
1. `Xla_python_client_preallococed`: variabel ini mengontrol apakah jax preallocates memori GPU. Mengaturnya ke `false` menonaktifkan preallocation, menyebabkan Jax mengalokasikan memori sesuai kebutuhan. Namun, ini dapat menyebabkan fragmentasi memori dan mungkin tidak selalu berfungsi seperti yang diharapkan dalam beberapa versi JAX [1] [3] [5].
2. `XLA_PYTHON_CLIENT_MEM_FRACTION`: Variabel ini menentukan persentase dari total memori GPU yang harus dipacu oleh JAX. Misalnya, mengaturnya ke `.10` akan melakukan prealokasi 10% dari memori GPU. Ini dapat membantu menghindari kesalahan di luar memori tetapi dapat menyebabkan peringatan OOM jika tidak dikelola dengan benar [1] [3] [5].
3. `Xla_python_client_allocator = Platform`: Pengaturan ini membuat JAX mengalokasikan dengan tepat apa yang dibutuhkan sesuai permintaan dan memori yang tidak lagi diperlukan. Meskipun tidak disarankan untuk penggunaan umum karena kinerjanya yang lambat, ini dapat berguna untuk men -debug atau meminimalkan penggunaan memori GPU [1] [3].
Variabel -variabel ini dapat diatur sebelum menjalankan aplikasi JAX Anda untuk menyesuaikan perilaku alokasi memori. Namun, beberapa pengguna telah melaporkan perilaku yang tidak konsisten dengan pengaturan ini dalam versi JAX tertentu [5] [9].
Kutipan:[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-even-with-cpu-alocation