Freigeben über


Horovod

Wichtig

Horovod und HorovodRunner sind jetzt veraltet. Bei Releases nach 15.4 LTS ML ist dieses Paket nicht vorinstalliert. Für verteiltes Deep Learning empfiehlt Databricks die Verwendung von TorchDistributor für verteiltes Training mit PyTorch oder der tf.distribute.Strategy-API für verteiltes Training mit TensorFlow.

Horovod ist ein Framework für verteiltes Training für TensorFlow, Keras und PyTorch. Azure Databricks unterstützt verteiltes Deep Learning-Training unter Verwendung von HorovodRunner und des Pakets horovod.spark. Für Spark ML-Pipelineanwendungen, die Keras oder PyTorch nutzen, können Sie die Schätzer-API horovod.spark verwenden.

Anforderungen

Databricks Runtime ML.

Verwenden von Horovod

Die folgenden Artikeln enthalten allgemeine Informationen zu verteiltem Deep Learning mit Horovod sowie Beispielnotebooks, die die Verwendung von HorovodRunner und des Pakets horovod.spark veranschaulichen.

Installieren einer anderen Horovod-Version

Wenn Sie die in Ihrem ML-Cluster vorinstallierte Horovod-Version upgraden oder herabstufen möchten, müssen Sie Horovod mit den folgenden Schritten erneut kompilieren:

  1. Deinstallieren Sie die aktuelle Version von Horovod.
%pip uninstall -y horovod
  1. Wenn Sie einen GPU-beschleunigten Cluster verwenden, installieren Sie CUDA-Entwicklungsbibliotheken, die zum Kompilieren von Horovod erforderlich sind. Lassen Sie die Paketversionen unverändert, um die Kompatibilität sicherzustellen.
%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. Laden Sie die gewünschte Version des Horovod-Quellcodes herunter, und kompilieren Sie ihn mit den entsprechenden Flags. Wenn Sie keine der Erweiterungen (etwa HOROVOD_WITH_PYTORCH) benötigen, können Sie diese Flags entfernen.

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. Verwenden Sie %pip für die Neuinstallation von Horovod, indem Sie den Python-Pfad aus der Ausgabe des vorherigen Befehls angeben. In diesem Beispiel wird 0.21.3 gezeigt.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Beheben von Problemen bei der Horovod-Installation

Problem: Beim Importieren von horovod.{torch|tensorflow} wird ImportError: Extension horovod.{torch|tensorflow} has not been built ausgelöst.

Lösung: Horovod ist in Databricks Runtime ML vorinstalliert. Dieser Fehler tritt in der Regel dann auf, wenn eine Umgebung nicht ordnungsgemäß aktualisiert werden kann. Der Fehler weist darauf hin, dass Horovod vor einer erforderlichen Bibliothek (PyTorch or TensorFlow) installiert wurde. Da Horovod während der Installation kompiliert wird, wird horovod.{torch|tensorflow} nicht kompiliert, wenn diese Pakete bei der Installation von Horovod nicht vorhanden sind. Führen Sie diese Schritte aus, um das Problem zu beheben:

  1. Vergewissern Sie sich, dass Sie sich in einem Databricks Runtime ML-Cluster befinden.
  2. Stellen Sie sicher, dass das PyTorch- oder TensorFlow-Paket bereits installiert ist.
  3. Deinstallieren Sie Horovod (%pip uninstall -y horovod).
  4. Installieren Sie cmake (%pip install cmake).
  5. Installieren Sie horovod neu.