Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip Jaxas skirtingai tvarko atminties suskaidymą GPU, palyginti su TPU


Kaip Jaxas skirtingai tvarko atminties suskaidymą GPU, palyginti su TPU


Jaxas skirtingai tvarko atminties fragmentaciją GPU, palyginti su TPU dėl būdingos šių įrenginių architektūros ir projektavimo.

Atminties suskaidymas GPU

- „PrealLocation Strategy“: „Jax“ išankstinis 75% visos GPU atminties pagal numatytuosius nustatymus, kai vykdoma pirmoji operacija. Ši strategija sumažina paskirstymo pridėtinę vertę ir atminties suskaidymą, tačiau gali sukelti klaidas už atminties, jei jis nebus tinkamai valdomas [1] [3].
- Atminties suskaidymo problemos: GPU turi sudėtingą atminties hierarchiją, kuri gali pabloginti atminties suskaidymo problemas. Dėl šio sudėtingumo JAX sudėtinga efektyviai valdyti atmintį be suskaidymo [6].
- Automatinio defragmentacijos trūkumas: skirtingai nei TPU, GPU neturi įmontuotos automatinės atminties defragmentacijos JAX. Įdiegti tokią funkciją svarstoma, bet šiuo metu neplanuojama [7].

Atminties suskaidymas TPU

- Supaprastinta atminties hierarchija: TPU turi paprastesnę atminties hierarchiją, palyginti su GPU, o tai sumažina reikšmingų atminties suskaidymo problemų tikimybę [6].
- Automatinė atminties defragmentacija: „TFRT TPU Backend“ palaiko automatinę atminties defragmentaciją, kuri padeda išlaikyti efektyvų atminties naudojimą ir sumažina suskaidymą [7].
- Nuoseklus apdorojimas: TPU proceso duomenys nuosekliai, o tai gali sukelti labiau nuspėjamus atminties naudojimo modelius ir potencialiai mažiau suskaidymą, palyginti su lygiagrečiu apdorojimu GPU [8].

Apskritai, JAX atminties valdymas GPU yra labiau linkęs suskaidyti dėl automatinio defragmentacijos ir sudėtingos GPU atminties hierarchijos trūkumo, tuo tarpu TPU siūlo racionalesnį požiūrį su įmontuota defragmentacijos galimybėmis.

Citatos:
[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://prouveringings.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+t+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-management-best-praktices