Come semplificare lo sviluppo di modelli AI basati su PyTorch?
In PyTorch si deve spesso scrivere del codice che di fatto è codice ripetuto in numerosi punti (boilerplate code).
Per superare questa situazione, è stato introdotto PyTorch Lightning, un framework per Deep Learning, basato su PyTorch, che ha rapidamente catturato l'interesse di tantissime persone.
Infatti, il suo repository GitHub ha più di 20000 stars e conta più di 750 contributors.
PyTorch consente di controllare completamente il codice del training loop.
Ciò da una parte permette di comprendere bene come è strutturato il training loop, ma dall'altra ha uno svantaggio: nei vari progetti gran parte del codice si ripete. Da un lato una noiosa ripetizione e dall'altro aumenta il rischio di errori.
Lightning consente di strutturare meglio il codice in modo da evitare la ripetizione del codice.
I vantaggi:
- molta parte del codice "ripetitivo" (boilerplate) è eseguito in modo trasparente dal framework
- sono definite le funzioni in cui collocare le operazioni (training_step, validation_step)
- il logging e la gestione della progress bar sono semplificati
- è semplice eseguire su GPU (non ci si deve preoccupare di spostare i tensori...)
Esaminiamo i vari punti:
-
Scriviamo soltanto il codice per il singolo training_step ed il validation_step (elaborazione di un singolo batch)
-
Non dobbiamo preoccuparci di spostare i vari tensori sulla GPU
-
Gestiamo in modo semplice la scrittura di loss ed altre metriche sulla progress bar, usando self.log
-
Per salvare la storia delle metriche possiamo usare il CSVLogger
- come strutturare un progetto utilizzando PyTorch Lightning: first_fc_lightning.ipynb
- impiego del CSVLogger: first_fc_lightning.ipynb
- calcolo del migliore LR: first_fc_lightning_best_lr.ipynb
- impiego di un LR Scheduler multi_input_nn.ipynb
- come implementare una rete multi-input multi_input_nn.ipynb
- il classico esempio: CNN su MNIST dataset lightning_mnist_cnn.ipynb
- Salvare il modello nel Model Catalog utilizzando ADS pytorch_model_catalog.ipynb
- Come utilizzare un modello pre-trained avanzato (EfficientNet V2)
- Addestrare un modello basato su EffNetB2 per identificare la tipologia di nuvola
- Applicare Grad-CAM per spiegare i risultati del modello precedente.