Pytorch Lightning spracúva gradientovú komunikáciu na TPU tak, že využíva stratégiu DistributedDataParalele (DDP) spoločnosti Pytorch, ktorá je integrovaná s knižnicou XLA pre optimalizovaný výkon na TPU. Takto to funguje:
1. Distribuovaný výcvik: Trieda trénera Pytorch Lightning riadi proces výcviku vrátane distribuovaného výcviku naprieč jadrami TPU. Používa `DistributedDatasAmpler` na vhodné distribúcie údajov do každého jadra TPU [1].
2. Replikácia modelu: Model sa replikuje v každom jadre TPU, čo umožňuje paralelný výpočet. Túto replikáciu rieši Pytorchova stratégia DDP, ktorá zaisťuje, že každá jadro spracuje časť údajov [1].
3. Gradient Communication: Po výpočte miestnych gradientov v každom jadre používa Pytorch Lightning knižnicu XLA na synchronizáciu týchto gradientov naprieč jadrami. To sa dosahuje prostredníctvom operácie ALLREDUCE, ktorá agreguje gradienty zo všetkých jadier a aktualizuje parametre modelu rovnomerne vo všetkých replikách [2].
4. Synchrónne aktualizácie: Na výpočet gradientov a iniciovanie synchrónnych aktualizácií sa používa `Optimalizátor (Optimalizátor)` V funkcii Pytorch / XLA. To zaisťuje, že všetky repliky modelu začínajú z rovnakého stavu v každej iterácii školenia, čím sa zachováva konzistentnosť v celom distribuovanom prostredí [2].
Celkovo Pytorch Lightning zjednodušuje proces tréningových modelov na TPU automatizáciou distribúcie údajov a gradientov, čo používateľom umožňuje zamerať sa na vývoj modelu bez obáv z podkladovej zložitosti distribuovaného tréningu.
Citácie:[1] https://cloud.google.com/blog/products/ai-machine-learning/train-models-with-pytorch-lightning-on-tpus
[2] https://cloud.google.com/blog/topics/Developers-practitioners/scaling-deep-learning-workloads-pytorch-xla-and-clloud-tpu-vm
[3] https://www.youtube.com/watch?v=ebzcivdr21o
[4] https://pytorch-lightning.readthedocs.io/en/1.1.8/multi_gpu.html
[5] https://lighning.ai/docs/pytorch/lts/api/pytorch_lighning.core.lighningModule.html
[6] https://pytorch-lightning.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[7] https://devblog.pytorchlighning.ai/anouncing-lightning-1-4-8cd20482aee9
[8] https://github.com/lighning-ai/lighning/issues/18089
[9] https://pytorch-lightning.readthedocs.io/en/1.3.8/advanced/advanced_gpu.html