Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Pytorch Lightning은 TPU의 기울기 통신을 어떻게 처리합니까?


Pytorch Lightning은 TPU의 기울기 통신을 어떻게 처리합니까?


Pytorch Lightning은 TPU에서 최적화 된 성능을 위해 XLA 라이브러리와 통합되는 Pytorch의 DedtaTaparAllel (DDP) 전략을 활용하여 TPU의 기울기 통신을 처리합니다. 작동 방식은 다음과 같습니다.

1. 분산 교육 : Pytorch Lightning의 'Trainer'Class는 TPU 코어에 대한 분산 교육을 포함하여 교육 과정을 관리합니다. `distributeddatasampler '를 사용하여 각 TPU 코어에 데이터를 적절하게 배포합니다 [1].

2. 모델 복제 : 모델은 각 TPU 코어에 걸쳐 복제되어 병렬 계산이 가능합니다. 이 복제는 Pytorch의 DDP 전략에 의해 처리되므로 각 핵심은 데이터의 일부를 처리 할 수 ​​있습니다 [1].

3. 그라디언트 커뮤니케이션 : 각 코어에서 로컬 그라디언트를 계산 한 후 Pytorch Lightning은 XLA 라이브러리를 사용하여 코어를 가로 질러 이러한 그라디언트를 동기화합니다. 이것은 모든 코어의 그라디언트를 집계하고 모든 복제품에 걸쳐 모델 매개 변수를 균일하게 업데이트하는 AllReduce 작업을 통해 달성됩니다 [2].

4. 동기 업데이트 : Pytorch / XLA의`Optimizer_step (Optimizer)`기능은 그라디언트를 계산하고 동기 업데이트를 시작하는 데 사용됩니다. 이를 통해 모든 모델 복제본은 모든 훈련 반복에서 동일한 상태에서 시작하여 분산 환경에서 일관성을 유지합니다 [2].

전반적으로 Pytorch Lightning은 데이터 및 그라디언트의 분포를 자동화하여 TPU의 교육 모델 프로세스를 단순화하여 사용자가 기본 분산 교육 복잡성에 대해 걱정하지 않고 모델 개발에 집중할 수 있습니다.

인용 :
[1] https://cloud.google.com/blog/products/ai-machine-learning/train-ml--mlels-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.lightningmodule.html
[6] https://pytorch-leightning.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[7] https://devblog.pytorchlightning.ai/announcing-lightning-1-4-8cd20482aee9
[8] https://github.com/lightning-ai/lightnning/issues/18089
[9] https://pytorch-leightning.readthedocs.io/en/1.3.8/advanced/advanced_gpu.html