Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon JAX, TPU'lara kıyasla GPU'larda hafıza parçalanmasını nasıl ele alıyor?


JAX, TPU'lara kıyasla GPU'larda hafıza parçalanmasını nasıl ele alıyor?


Jax, bu cihazların doğal mimarisi ve tasarımı nedeniyle TPU'lara kıyasla GPU'larda hafıza parçalanmasını farklı şekilde ele alır.

GPU'larda bellek parçalanması

- Öncüllik Stratejisi: JAX, ilk işlem çalıştırıldığında varsayılan olarak toplam GPU belleğinin% 75'ini önceden oluşturur. Bu strateji, tahsis üstü ve bellek parçalanmasını en aza indirir, ancak düzgün yönetilmezse bellek dışı hatalara yol açabilir [1] [3].
- Bellek parçalanma sorunları: GPU'lar, bellek parçalanma sorunlarını şiddetlendirebilen karmaşık bir bellek hiyerarşisine sahiptir. Bu karmaşıklık, JAX'ın parçalanma olmadan belleği verimli bir şekilde yönetmesini zorlaştırır [6].
- Otomatik ayrıştırma eksikliği: TPU'ların aksine, GPU'lar JAX'ta yerleşik otomatik bellek bozulmasına sahip değildir. Böyle bir özelliğin uygulanması dikkate alınmıştır, ancak şu anda planlanmamıştır [7].

TPU'larda bellek parçalanması

- Basitleştirilmiş bellek hiyerarşisi: TPU'lar, önemli bellek parçalanma sorunlarının olasılığını azaltan GPU'lara kıyasla daha basit bir bellek hiyerarşisine sahiptir [6].
- Otomatik bellek bozulması: TFRT TPU arka uç, verimli bellek kullanımının korunmasına yardımcı olan ve parçalanmayı azaltan otomatik bellek bozulmasını destekler [7].
- Sıralı işlem: TPUS işlem verileri sırayla, bu da GPU'lardaki paralel işlemeye kıyasla daha öngörülebilir bellek kullanım modellerine ve potansiyel olarak daha az parçalanmaya yol açabilir [8].

Genel olarak, JAX'in GPU'lar üzerindeki bellek yönetimi, otomatik birleştirme eksikliği ve karmaşık GPU bellek hiyerarşisi nedeniyle parçalanmaya daha yatkındır, oysa TPU'lar yerleşik bozunma özellikleri ile daha akıcı bir yaklaşım sunmaktadır.

Alıntılar:
[1] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[2] https://arxiv.org/pdf/2309.07181.pdf
[3] https://kolonist26-jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://prowatings.neurips.cc/paper_files/paper/2023/file/42c40aff7814e9796266e12053b1c610-paper-conference.pdf
[5] https://docs.jax.dev/en/latest/device_memory_profiling.html
[6] https://massedcompute.com/faq-answers/?question=how+do+nvidia+gpus+handle+Memory+Fragmentation+Compared+to+tpus%3f
[7] https://github.com/google/jax/issues/9064
[8] https://docs.jax.dev/en/latest/pallas/tpu/details.html
[9] https://app.studyraid.com/en/read/11969/381958/memory-manemation-best-practices