Delen via


Horovod

Belangrijk

Horovod en HorovodRunner zijn nu afgeschaft. Releases na 15.4 LTS ML hebben dit pakket niet vooraf geïnstalleerd. Voor gedistribueerde deep learning raadt Databricks aan om TorchDistributor te gebruiken voor gedistribueerde training met PyTorch of de tf.distribute.Strategy API voor gedistribueerde training met TensorFlow.

Horovod is een framework voor gedistribueerde training voor TensorFlow, Keras en PyTorch. Azure Databricks ondersteunt gedistribueerde Deep Learning-training met behulp van HorovodRunner en het pakket horovod.spark. Voor Spark ML-pijplijntoepassing met Keras of PyTorch kunt u de estimator-API horovod.spark gebruiken.

Vereisten

Databricks Runtime ML.

Horovod gebruiken

De volgende artikelen bieden algemene informatie over gedistribueerde Deep Learning met Horovod en voorbeeldnotebooks waarin wordt gedemonstreerd hoe u HorovodRunner en het pakket horovod.spark gebruikt.

Een andere versie van Horovod installeren

Als u Horovod wilt upgraden of downgraden van de vooraf geïnstalleerde versie in uw ML-cluster, moet u Horovod opnieuw compileren door de volgende stappen uit te voeren:

  1. Verwijder de huidige versie van Horovod.
%pip uninstall -y horovod
  1. Als u een met GPU versneld cluster gebruikt, installeert u CUDA-ontwikkelbibliotheken die nodig zijn om Horovod te compileren. Laat de pakketversies ongewijzigd om compatibiliteit te garanderen.
%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
  1. Download de gewenste versie van de broncode van Horovod en compileer met de juiste vlaggen. Als u geen extensies nodig hebt (zoals HOROVOD_WITH_PYTORCH), kunt u deze vlaggen verwijderen.

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
  1. Gebruik %pip dit om Horovod opnieuw te installeren door het Python-wielpad op te geven uit de uitvoer van de vorige opdracht. 0.21.3 wordt weergegeven in dit voorbeeld.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Problemen met de installatie van Horovod oplossen

Probleem: Het importeren horovod.{torch|tensorflow} treedt op ImportError: Extension horovod.{torch|tensorflow} has not been built

Oplossing: Horovod is vooraf geïnstalleerd op Databricks Runtime ML, dus deze fout treedt meestal op als het bijwerken van een omgeving fout gaat. De fout geeft aan dat Horovod is geïnstalleerd voor een vereiste bibliotheek (PyTorch of TensorFlow). Aangezien Horovod tijdens de installatie wordt gecompileerd, wordt horovod.{torch|tensorflow} niet gecompileerd als die pakketten niet aanwezig zijn tijdens de installatie van Horovod. Volg deze stappen om het probleem op te lossen:

  1. Controleer of u zich in een Databricks Runtime ML-cluster bevindt.
  2. Zorg ervoor dat het PyTorch- of TensorFlow-project al is geïnstalleerd.
  3. Verwijder Horovod (%pip uninstall -y horovod).
  4. Installeer cmake (%pip install cmake).
  5. Installeer horovod opnieuw.