Come inviare lavori SLURM a un cluster

Invio di lavori SLURM a cluster

Un tutorial su come inviare lavori SLURM a un cluster, soprattutto per deep learning e data science

Foto di imgix su Unsplash

Quindi sei abituato a allenare modelli di deep learning con le GPU gratuite di Google Colab, ma sei pronto a salire di livello e sfruttare la potenza di un cluster e non hai idea di come farlo? Sei nel posto giusto! 🚀

Durante il mio tirocinio di ricerca in Neuroscienze presso l’Università di Cambridge, stavo allenando modelli di grandi dimensioni per compiti di Computer Vision e le GPU gratuite fornite da Google non erano sufficienti, quindi ho deciso di utilizzare il cluster locale.

Tuttavia, c’era molto poca documentazione disponibile e ho dovuto chiedere gli script ad altre persone per cercare di capirli, e ho più o meno compilato diverse cose che mi sono state utili. Ora ho raccolto tutto ciò che è necessario per eseguire script python di base. Questa guida è quella che avrei voluto avere durante il mio periodo lì.

Un tipico caso d’uso di Machine Learning

Supponiamo che tu voglia allenare un classificatore di uccelli, con 500 diverse classi e immagini ad alta risoluzione. Qualcosa che non funzionerebbe mai su Google Colab.

La prima cosa che devi fare è assicurarti che lo script di addestramento del tuo modello di deep learning sia pronto. Questo script dovrebbe contenere il codice necessario per caricare il tuo dataset, definire l’architettura della tua rete neurale e impostare il ciclo di addestramento.

Dovresti essere in grado di eseguire questo script dal tuo terminale.

Ad esempio, supponiamo che tu abbia uno script chiamato train_bird_classifier.py, dovresti essere in grado di eseguirlo con:

python train_bird_classifier.py

Questo script potrebbe avere un aspetto simile a questo:

# train_bird_classifier.pyimport torchfrom torch.utils.data import DataLoader# Supponendo che le funzioni, i modelli e le trasformazioni necessarie siano definite in vari file.dalle utils import build_model, BirdDataset, collate_fn, train_modelfrom transformations import train_transforms, test_transformsdef main():    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")    # Configurazione del dataset e del DataLoader    train_dataset = BirdDataset('data/train/', transform=train_transforms)    train_loader =…