Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Pytorch Lightning TPU'larda gradyan iletişimini nasıl ele alır


Pytorch Lightning TPU'larda gradyan iletişimini nasıl ele alır


Pytorch Lightning, TPU'larda optimize edilmiş performans için XLA kütüphanesi ile entegre edilen Pytorch'un Dağıtım Kütüphanesi ile entegre edilen DağıtımlıDataparallel (DDP) stratejisinden yararlanarak TPU'lar üzerindeki gradyan iletişimini kullanır. İşte böyle çalışıyor:

1. Dağıtılmış eğitim: Pytorch Lightning'in `trainer 'sınıfı, TPU çekirdekleri arasında dağıtılmış eğitim de dahil olmak üzere eğitim sürecini yönetir. Verileri her bir TPU çekirdeğine uygun şekilde dağıtmak için bir `dağıtımDatasPler 'kullanır [1].

2. Model Çoğaltma: Model, paralel hesaplamaya izin veren her TPU çekirdeğinde çoğaltılır. Bu çoğaltma, Pytorch'un DDP stratejisi tarafından ele alınır, bu da her çekirdek verilerin bir kısmını işlemesini sağlar [1].

3. Gradyan İletişimi: Her bir çekirdekte yerel gradyanları hesapladıktan sonra, Pytorch Lightning, bu gradyanları çekirdeklerde senkronize etmek için XLA kütüphanesini kullanır. Bu, tüm çekirdeklerden gradyanları toplayan ve model parametrelerini tüm kopyalarda eşit olarak güncelleyen bir AllReduce işlemi ile elde edilir [2].

4. Senkron güncellemeler: Pytorch / XLA'daki `optimizer_step (optimize edici)` işlevi, gradyanları hesaplamak ve senkron güncellemeleri başlatmak için kullanılır. Bu, tüm model kopyalarının her eğitim yinelemesinde aynı durumdan başlamasını ve dağıtılmış ortamda tutarlılığı korumasını sağlar [2].

Genel olarak, Pytorch Lightning, veri ve gradyanların dağılımını otomatikleştirerek, kullanıcıların temel dağıtılmış eğitim karmaşıklıkları hakkında endişelenmeden model gelişimine odaklanmalarını sağlayarak TPU'lar üzerinde eğitim modelleri sürecini basitleştirir.

Alıntılar:
[1] https://cloud.google.com/blog/products/ai-machine-learning/train-mlodels-with-pytorch-lightning-ont-tpus
[2] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloloads-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.lightningmole.html
[6] https://pytorch-lightning.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[7] https://devblog.pytorchlightning.ai/Announcing-ightning-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