„Jax“ tvarko atminties suskaidymą TPU per kelias strategijas, optimizuojančias atminties naudojimą ir sumažinant suskaidymą. Čia yra keletas pagrindinių požiūrių:
1. Atminties hierarchijos panaudojimas: TPU turi sudėtingą atminties hierarchiją, įskaitant didelę pralaidumo atmintį (HBM), vektoriaus atmintį, skaliarinę atmintį ir akumuliatoriaus atmintį. Jax optimizuoja skaičiavimus struktūrizuodamas duomenis, kad būtų sumažintas pervedimai tarp šių atminties lygių, o tai padeda sumažinti atminties suskaidymą užtikrinant efektyvų duomenų išdėstymą ir prieigą [1].
2. Efektyvus duomenų išdėstymas: JAX skatina optimizuoti duomenų išdėstymą, kad jis atitiktų TPU draugiškus dydžius, dažnai paminkštinimo matmenis, kad atitiktų optimalius TPU apdorojimo dydžius. Šis suderinimas padeda sumažinti atminties atliekas ir suskaidymą užtikrinant, kad duomenys būtų apdoroti dalimis, kurias efektyviai tvarko TPU [1].
3. Išankstinis ir buferis: Technikos, pavyzdžiui, išankstinio duomenų duomenų ir žiedinio ar dvigubo buferio naudojimas, gali padėti paslėpti prieigos prie atminties latenciją ir efektyviau valdyti atmintį. Išankstinis kūrimas užtikrina, kad prireikus būtų galima gauti duomenis, sumažinant atminties suskaidymo tikimybę dėl atidėtų paskirstymų [1].
4. „Sharding“ ir lygiagretus apdorojimas: „Jax“ palaiko sparnų skaičiavimus per TPU branduolius, kurie leidžia efektyviai apdoroti lygiagrečią tvarkymą. Padalijęs duomenis ir skaičiavimus per kelias šerdes, „Jax“ gali efektyviau valdyti atmintį, sumažindama suskaidymo riziką paskirstydama apkrovą [1].
5. Įrenginio atminties profiliavimas: „Jax“ teikia įrankius, skirtus naudoti įrenginio atminties naudojimą, o tai gali padėti nustatyti ir derinti su atminties problemomis, įskaitant suskaidymą. Supratę, kaip naudojama atmintis, kūrėjai gali optimizuoti savo kodą, kad sumažintų suskaidymą ir pagerintų bendrą našumą [5].
Apskritai, JAX požiūris į atminties suskaidymo tvarkymą TPU apima duomenų išdėstymo optimizavimo derinį, efektyviai panaudojant TPU atminties hierarchiją ir naudojant patobulintus lygiagrečius apdorojimo metodus.
Citatos:[1] https://app.studyraid.com/en/read/11969/381956/tpu-computation-Strategies
[2] https://kolonist26-Jax-kr.readthedocs.io/en/latest/gpu_memory_allocation.html
[3] https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html
[4] https://www.datacamp.com/tutorial/combine-google-gemma-with-tpus-fine-nune-and-run-inference-with-evenced-gherance-and-speed
[5] https://docs.jax.dev/en/latest/device_memory_profiling.html
[6] https://github.com/google/jax/discussions/16177
[7] https://jax.readthedocs.io/en/latest/pallas/tpu/distribed.html
[8] https://nbi.ku.dk/english/theses/masters-seses/albert-alonso-de-la-fuente/albert_alonso_de_la_fuente.pdf