L'ottimizzazione della velocità di costruzione per Pytorch e Pytorch/XLA comporta diverse strategie:
Ottimizzazione della velocità di costruzione di Pytorch
1. Usa binari pre-costruiti: invece di costruire dalla fonte, utilizzare binari pre-costruiti disponibili dal sito ufficiale di Pytorch. Questi binari sono ottimizzati con librerie come MKL e Magma, che sono cruciali per le prestazioni [5].
2. Ottimizza il processo di build: se è necessario creare dalla fonte, utilizzare strumenti come `ccache` per memorizzare nella cache i file compilati. Ciò riduce significativamente i tempi di ricostruzione dopo aver apportato piccole modifiche al codice [7].
3. Compilation parallelizza: utilizzare processori multi-core impostando il numero di lavori di build per abbinare il numero di core della CPU disponibili. Questo può essere fatto usando flag come `-j` con` make` o opzioni simili nel sistema di build.
Ottimizzazione delle prestazioni Pytorch/XLA
1. Usa l'esecuzione pigra: Pytorch/XLA utilizza l'esecuzione del tensore pigro, che registra le operazioni in un grafico prima dell'esecuzione. Ciò consente l'ottimizzazione fondendo più operazioni in un'unica operazione ottimizzata [4] [6].
2. Dati di precarico: utilizzare `mpdeviceloader` per precaricare i dati su dispositivi XLA, riducendo le spese generali di comunicazione tra la CPU host e il dispositivo [8].
3. Ridurre al minimo la comunicazione del dispositivo della CPU: ridurre o rimuovere le operazioni che richiedono la sincronizzazione tra il dispositivo CPU e XLA, come istruzioni di stampa o callback di registrazione [8].
4. Usa barriere per l'ottimizzazione: inserire barriere come `xm.mark_step ()` per rompere i grafici di calcolo di grandi dimensioni in quelli più piccoli, consentendo al compilatore XLA di ottimizzarli in modo più efficace [8].
5. Sfrutta le TPU del cloud: per l'allenamento su larga scala, utilizzare il cloud TPU con Pytorch/XLA per ottenere una formazione ad alte prestazioni ed economiche [2] [9].
Citazioni:[1] https://www.reddit.com/r/machinelearning/comments/kvs1ex/d_here_are_are_17_ways_of_making_pytorch_training/
[2] https://www.youtube.com/watch?v=pspmrtwums8
[3] https://sebastianraschka.com/blog/2023/pytorch-paraster.html
[4] https://pytorch.org/xla/release/r2.4/index.html
[5] https://discuss.pytorch.org/t/is-building-from-source-really-speed-up-inference-speed/91057
[6] https://pytorch.org/xla/release/2.2/index.html
[7] https://discuss.pytorch.org/t/any-tips-for-speeding-up-the-source-build-process/184558
[8] https://pytorch.org/xla/master/learn/xla-overview.html
[9] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloads-pytorch-xla-and-cloud-tpu-vm