Pytorch Lightning zpracovává komunikaci s gradientem na TPU tím, že využívá strategii Pytorch DistributedDataparallel (DDP), která je integrována do knihovny XLA pro optimalizovaný výkon na TPU. Takto to funguje:
1. Distribuované školení: Třída Pytorch Lightningová „Trainer“ spravuje proces tréninku, včetně distribuovaného školení napříč jádry TPU. Používá `distributedDataSampler` k náležitě distribuci dat do každého jádra TPU [1].
2. Replikace modelu: Model je replikován v každém jádru TPU, což umožňuje paralelní výpočet. Tuto replikaci řeší strategii DDP Pytorch, která zajišťuje, že každé jádro zpracovává část dat [1].
3. Komunikace gradientu: Po výpočtu místních gradientů na každém jádru používá Pytorch Lightning knihovnu XLA k synchronizaci těchto gradientů napříč jádry. Toho je dosaženo prostřednictvím operace AllReduce, která agreguje gradienty ze všech jader a aktualizuje parametry modelu rovnoměrně napříč všemi replikami [2].
4. Synchronní aktualizace: Funkce `Optimizer_STEP (Optimizer)` v Pytorch / XLA se používá pro výpočet gradientů a zahájení synchronních aktualizací. Tím je zajištěno, že všechny repliky modelu začínají ze stejného stavu v každé iteraci tréninku a udržují konzistenci napříč distribuovaným prostředím [2].
Celkově Pytorch Lightning zjednodušuje proces tréninkových modelů na TPU automatizací distribuce dat a gradientů, což uživatelům umožňuje soustředit se na vývoj modelů, aniž by se obával základní distribuované složitosti tréninku.
Citace:[1] https://cloud.google.com/blog/products/ai-machine-learning/train-ml-models-with-Pytorch-lightning-on-tpus
[2] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloads-Pytorch-xla-and-cloud-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://lightning.ai/docs/pytorch/lts/api/pytorch_lightning.core.lightmodule.html
[6] https://pytorch-lightning.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[7] https://devblog.pytorchlight.ai/announging-lightning-1-4-8CD20482AEE9
[8] https://github.com/lightning-ai/lightning/issues/18089
[9] https://pytorch-lightning.readthedocs.io/en/1.3.8/advanced/advanced_gpu.html