Horovod
Importante
Horovod e HorovodRunner sono ora deprecati. Le versioni successive alla 15.4 LTS ML non avranno questo pacchetto preinstallato. Per l'apprendimento avanzato distribuito, Databricks consiglia di utilizzare TorchDistributor per il training distribuito con PyTorch o l'API tf.distribute.Strategy
per il training distribuito con TensorFlow.
Horovod è un framework di training distribuito per TensorFlow, Keras e PyTorch. Azure Databricks supporta il training di Deep Learning distribuito tramite HorovodRunner e il pacchetto horovod.spark
. Per le applicazioni della pipeline di ML Spark che usano Keras o PyTorch, è possibile usare l'horovod.spark
del pacchetto .
Requisiti
Databricks Runtime ML.
Usare Horovod
Gli articoli seguenti contengono informazioni generali su Deep Learning distribuito con Horovod ed esempi di notebook che illustrano come usare HorovodRunner e il pacchetto horovod.spark
.
- HorovodRunner: Deep Learning distribuito con Horovod
- Esempi di HorovodRunner
-
horovod.spark
: Deep Learning distribuito con Horovod
Installare un'altra versione di Horovod
Per eseguire l'aggiornamento o il downgrade di Horovod dalla versione preinstallata nel cluster ML, è necessario ricompilare Horovod seguendo questa procedura:
- Disinstallare la versione corrente di Horovod.
%pip uninstall -y horovod
- Se si usa un cluster con accelerazione GPU, installare le librerie di sviluppo CUDA necessarie per compilare Horovod. Per garantire la compatibilità, lasciare invariate le versioni del pacchetto.
%sh
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
dpkg -i ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
apt-get update
apt-get install --allow-downgrades --no-install-recommends -y \
cuda-nvml-dev-11-0=11.0.167-1 \
cuda-nvcc-11-0=11.0.221-1 \
cuda-cudart-dev-11-0=11.0.221-1 \
cuda-libraries-dev-11-0=11.0.3-1 \
libnccl-dev=2.11.4-1+cuda11.5\
libcusparse-dev-11-0=11.1.1.245-1
- Scaricare la versione desiderata del codice sorgente di Horovod e compilare con i flag appropriati. Se non sono necessarie estensioni, ad esempio
HOROVOD_WITH_PYTORCH
, è possibile rimuovere tali flag.
CPU
%sh
HOROVOD_VERSION=v0.21.3 # Change as necessary
git clone --recursive https://github.com/horovod/horovod.git --branch ${HOROVOD_VERSION}
cd horovod
rm -rf build/ dist/
HOROVOD_WITH_MPI=1 HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1 \
# For Databricks Runtime 8.4 ML and below, replace with /databricks/conda/envs/databricks-ml/bin/python
sudo /databricks/python3/bin/python setup.py bdist_wheel
readlink -f dist/horovod-*.whl
GPU
%sh
HOROVOD_VERSION=v0.21.3 # Change as necessary
git clone --recursive https://github.com/horovod/horovod.git --branch ${HOROVOD_VERSION}
cd horovod
rm -rf build/ dist/
HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_CUDA_HOME=/usr/local/cuda HOROVOD_WITH_MPI=1 HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1 \
# For Databricks Runtime 8.4 ML and below, replace with /databricks/conda/envs/databricks-ml-gpu/bin/python
sudo /databricks/python3/bin/python setup.py bdist_wheel
readlink -f dist/horovod-*.whl
- Usare
%pip
per reinstallare Horovod specificando il percorso wheel di Python dall'output del comando precedente.0.21.3
è illustrato in questo esempio.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
Risolvere i problemi di installazione di Horovod
Problema: importare horovod.{torch|tensorflow}
genera ImportError: Extension horovod.{torch|tensorflow} has not been built
Soluzione: Horovod è preinstallato in Databricks Runtime ML, quindi questo errore si verifica in genere se l'aggiornamento di un ambiente non riesce. L'errore indica che Horovod è stato installato prima di una libreria obbligatoria (PyTorch o TensorFlow). Poiché Horovod viene compilato durante l'installazione, la compilazione di horovod.{torch|tensorflow}
non verrà eseguita se tali pacchetti non sono presenti durante l'installazione di Horovod.
Per correggere il problema, attenersi alla seguente procedura:
- Verificare di trovarsi in un cluster Databricks Runtime ML.
- Assicurarsi che il pacchetto PyTorch o TensorFlow sia già installato.
- Disinstallare Horovod (
%pip uninstall -y horovod
). - Installare
cmake
(%pip install cmake
). - Reinstallare
horovod
.