Come eseguire il benchmark di DeepLearning
L'esecuzione di benchmark sui server di apprendimento automatico non è un compito semplicissimo. I test più diffusi includono benchmark come MLperf, ai-benchmark e deeplearning-benchmark. Il primo è un insieme di test destinati ai produttori di apparecchiature, non agli utenti comuni. Pertanto, l'esecuzione dei test della suite MLperf richiede una profonda conoscenza della programmazione e un'esperienza con le applicazioni containerizzate.
Il secondo benchmark citato è un po' più semplice, ma presenta alcune sfumature dovute alle sue istruzioni di installazione non aggiornate. Il pacchetto tensorflow-gpu è dichiarato "deprecato" e il comando pip install tensorflow[and-cuda] continua a produrre errori di inizializzazione. Pertanto, ci concentreremo sul terzo benchmark. Per prima cosa, aggiorniamo la cache dei pacchetti e installiamo automaticamente i driver della GPU. Queste istruzioni sono valide per Ubuntu 22.04
Prerequisiti
Aggiornamento del sistema
sudo apt update && sudo apt -y upgrade && sudo apt ubuntu-drivers autoinstall
Riavviare il server:
sudo shutdown -r now
Aggiungere i repository
Poiché il pacchetto nvidia-container-toolkit e le sue dipendenze non fanno parte del repository standard, è necessario aggiungere un repository separato secondo la guida di NVIDIA®:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Aggiornare la cache dei pacchetti:
sudo apt-get update
Docker e NVIDIA® Container Toolkit
Installare il motore Docker e NVIDIA® Container Toolkit:
sudo apt-get install docker.io nvidia-container-toolkit
Per evitare di usare ogni Volta™ sudo con Docker, aggiungere l'utente al gruppo appropriato e crearlo:
sudo usermod -aG docker $USER
newgrp docker
Preparare un contenitore
Successivamente, è necessario scaricare un'immagine del contenitore preparata dal registro dei contenitori NVIDIA®, denominata pytorch:22.10-py3. Per evitare di digitarlo ogni Volta™, utilizziamo la capacità della shell di comando di creare variabili. Assegniamo questo valore alla variabile NAME_NGC:
export NAME_NGC=pytorch:22.10-py3
Ora, si estrae l'immagine dal registro usando la variabile creata:
docker pull nvcr.io/nvidia/${NAME_NGC}
Una Volta™ che l'immagine del contenitore è sul server, è necessario scaricare il contenuto da due repository. Clonare il primo repository con gli esempi di codice e passare al ramo di cui abbiamo bisogno:
git clone https://github.com/LambdaLabsML/DeepLearningExamples.git && \
cd DeepLearningExamples && \
git checkout lambda/benchmark && \
cd ..
Clonare il secondo repository, che contiene l'implementazione PyTorch del codice di benchmark:
git clone https://github.com/lambdal/deeplearning-benchmark.git && \
cd deeplearning-benchmark/pytorch
Avviare il contenitore creato, montando contemporaneamente le directory necessarie e richiamando lo script per preparare il set di dati. Questo comando può richiedere circa mezz'ora per essere completato, quindi siate pazienti e aspettate che finisca:
docker run --gpus all --rm --shm-size=64g \
-v ~/DeepLearningExamples/PyTorch:/workspace/benchmark \
-v ~/data:/data \
-v $(pwd)"/scripts":/scripts \
nvcr.io/nvidia/${NAME_NGC} \
/bin/bash -c "cp -r /scripts/* /workspace; ./run_prepare.sh"
Eseguire il benchmark
Infine, eseguire i test di benchmark. La directory /deeplearning-benchmark/pytorch/scripts/ contiene molte configurazioni tipiche. Si può scegliere una di quelle già pronte o crearne una propria, la più adatta alla configurazione attuale del server. Per questo esempio, abbiamo usato la configurazione 4xA100_SXM4_80GB_v1:
docker run \
--rm --shm-size=128g \
--gpus all \
-v ~/DeepLearningExamples/PyTorch:/workspace/benchmark \
-v ~/data:/data \
-v $(pwd)"/scripts":/scripts \
-v $(pwd)"/results":/results \
nvcr.io/nvidia/${NAME_NGC} \
/bin/bash -c "cp -r /scripts/* /workspace; ./run_benchmark.sh 4xA100_SXM4_80GB_v1 all 1500"
Una Volta™ completati i benchmark, i risultati dei test si trovano nell'omonima directory. Inoltre, è possibile utilizzare script aggiuntivi per convertirli in altri formati.
Vedere anche:
Aggiornato: 28.03.2025
Pubblicato: 24.07.2024