„Pytorch Lightning“ tvarko „TPUS“ gradiento ryšį, pasinaudodama „Pytorch“ „DistributedDataparAllel“ (DDP) strategija, kuri yra integruota su XLA biblioteka, kad būtų galima optimizuoti TPU našumą. Štai kaip tai veikia:
1. Paskirstyti mokymai: „Pytorch Lightning“ „Trener“ klasė valdo mokymo procesą, įskaitant paskirstytus mokymus per TPU šerdį. Jis naudoja „paskirstymoDataSampler“, kad būtų tinkamai paskirstyti duomenis kiekvienai TPU šerdyje [1].
2. Modelio replikacija: modelis atkartojamas kiekvienoje TPU šerdyje, leidžiantis lygiagrečiai apskaičiuoti. Šį replikaciją tvarko Pytorcho DDP strategija, kuri užtikrina, kad kiekvienas branduolys apdorotų dalį duomenų [1].
3. Gradiento ryšys: Apskaičiavus vietinius gradientus kiekvienoje šerdyje, „Pytorch Lightning“ naudoja XLA biblioteką, kad sinchronizuotų šiuos gradientus per branduolius. Tai pasiekiama atliekant „Allreduce“ operaciją, kuri surinko visų branduolių nuolydžius ir vienodai atnaujina modelio parametrus visose replikose [2].
4. Sinchroniniai atnaujinimai: „Optimizer_step (Optimizer“) „Pytorch / XLA“ funkcija naudojama apskaičiuojant gradientus ir inicijuoti sinchroninius atnaujinimus. Tai užtikrina, kad visos modelio kopijos prasidėtų nuo tos pačios būsenos kiekvienoje mokymo iteracijoje, išlaikant nuoseklumą paskirstytoje aplinkoje [2].
Apskritai „Pytorch Lightning“ supaprastina TPU mokymo modelių procesą, automatizuodamas duomenų ir gradientų paskirstymą, leisdamas vartotojams sutelkti dėmesį į modelio kūrimą, nesijaudindami dėl pagrindinio paskirstyto mokymo sudėtingumo.
Citatos:[1] https://cloud.google.com/blog/products/ai-machine-learning/train-ml-models-with-pytorch-lighting-on-tpus
[2] https://cloud.google.com/blog/topics/developers-praktioners/scaling-deep-learning-workloads-pytorch-xla-and-cloud-tpu-vm
[3] https://www.youtube.com/watch?v=ebzcivdr21o
[4] https://pytorch-lighting.readthedocs.io/en/1.1.8/multi_gpu.html
[5] https://lightning.ai/docs/pytorch/lts/api/pytorch_lightning.core.lightingmodule.html
[6] https://pytorch-lighting.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[7] https://devblog.pytorchlighting.ai/announcing-lighting-1-4-8cd20482aee9
[8] https://github.com/lightning-ai/lightning/issues/18089
[9] https://pytorch-lighting.readthedocs.io/en/1.3.8/advanced/advanced_gpu.html