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.
- HorovodRunner: Verteiltes Deep Learning mit Horovod
- HorovodRunner-Beispiele
horovod.spark
: Verteiltes Deep Learning mit Horovod
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:
- Deinstallieren Sie die aktuelle Version von Horovod.
%pip uninstall -y horovod
- 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
- 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
- Verwenden Sie
%pip
für die Neuinstallation von Horovod, indem Sie den Python-Pfad aus der Ausgabe des vorherigen Befehls angeben. In diesem Beispiel wird0.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:
- Vergewissern Sie sich, dass Sie sich in einem Databricks Runtime ML-Cluster befinden.
- Stellen Sie sicher, dass das PyTorch- oder TensorFlow-Paket bereits installiert ist.
- Deinstallieren Sie Horovod (
%pip uninstall -y horovod
). - Installieren Sie
cmake
(%pip install cmake
). - Installieren Sie
horovod
neu.