Pytorch Lightning은 TPU 아키텍처의 기능을 활용하여 TPU의 데이터 병렬 처리를 처리합니다. TPU 아키텍처는 매트릭스 곱셈 및 컨볼 루션과 같은 고 처리량 워크로드에 최적화됩니다. TPU에 대한 교육시 Lightning은 TPU 코어 전체의 데이터 분포를 자동으로 관리하여 각 핵심이 데이터의 적절한 부분을 처리하도록합니다. 번개는 TPU 훈련을 위해 올바른 샘플러를 자동으로 삽입하므로 분산 샘플러의 수동 구현이 필요하지 않고 달성됩니다 [7].
TPU 설정에서 모델은 각 장치에 걸쳐 복제되며 데이터 병렬 교육을 통해 모델은 단일 TPU 장치에 장착 할 수 있으며 분산 구성에서 여러 장치에서 복제 될 수 있습니다 [6]. 이 접근법은 대규모 데이터 세트의 효율적인 병렬 처리를 가능하게하여 교육 시간을 크게 속도를 높입니다.
Pytorch Lightning과 함께 TPU를 사용하려면 TPU 코어 수를 지정하여 '트레이너'를 구성 할 수 있습니다. 예를 들어, 8 코어가 장착 된 전체 TPU 포드를 사용하려면 '트레이너'초기화 [7]에서`tpu_cores = 8`를 설정합니다. 이 설정을 통해 TPU 코어 전체의 데이터 배포를 명시 적으로 관리하지 않고도 원활한 데이터 병렬 처리가 가능합니다.
그러나 TPU에서 최적의 성능을 얻으려면 배치 크기, 텐서 평가, 동적 텐서 모양 및 자원 제한과 같은 요소를 고려하여 TPU 자원의 효율적인 활용을 보장하는 것이 중요합니다 [9].
인용 :[1] https://pytorch-leightning.readthedocs.io/en/1.5.10/advanced/multi_gpu.html
[2] https://pytorch-leightning.readthedocs.io/en/1.1.8/multi_gpu.html
[3] https://pytorch-leightning.readthedocs.io/en/0.9.0/multi_gpu.html
[4] https://github.com/lightning-ai/pytorch-leightning/issues/11922
[5] https://www.restack.io/p/pytorch-lightning-answer-multi-cpu-usage-cat-ai
[6] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloads-pytorch-xla-and-cloud-tpu-vm
[7] https://lightning.ai/docs/pytorch/1.5.9/advanced/tpu.html
[8] https://forums.fast.ai/t/how-to-create-a-callback-using-torch-multiprocessing-tpu/56264?page=7
[9] https://www.restack.io/p/pytorch-lightning-answer-set-device-cat-ai