Udostępnij za pośrednictwem


Horovod

Ważne

Horovod i HorovodRunner są teraz przestarzałe. Wersje po wersji 15.4 LTS ML nie będą miały wstępnie zainstalowanego pakietu. W przypadku rozproszonego uczenia głębokiego usługa Databricks zaleca używanie narzędzia TorchDistributor do trenowania rozproszonego za pomocą biblioteki PyTorch lub interfejsu tf.distribute.Strategy API na potrzeby trenowania rozproszonego za pomocą biblioteki TensorFlow.

Horovod to platforma do trenowania rozproszonego dla bibliotek TensorFlow, Keras i PyTorch. Usługa Azure Databricks obsługuje trenowanie rozproszone dla uczenia głębokiego przy użyciu interfejsu HorovodRunner i pakietu horovod.spark. W przypadku aplikacji potoku Spark ML korzystających z bibliotek Keras lub PyTorch można użyć horovod.spark.

Wymagania

Databricks Runtime ML.

Używanie struktury Horovod

Poniższe artykuły zawierają ogólne informacje o rozproszonym uczeniu głębokim przy użyciu struktury Horovod oraz przykładowe notesy pokazujące, jak korzystać z interfejsu HorovodRunner i pakietu horovod.spark.

Instalowanie innej wersji struktury Horovod

Aby uaktualnić lub obniżyć wersję horovod ze wstępnie zainstalowanej wersji w klastrze uczenia maszynowego, należy ponownie skompilować bibliotekę Horovod, wykonując następujące kroki:

  1. Odinstaluj bieżącą wersję struktury Horovod.
%pip uninstall -y horovod
  1. W przypadku korzystania z klastra przyspieszonego przez procesor GPU zainstaluj biblioteki programistyczne CUDA wymagane do skompilowania struktury Horovod. Aby zapewnić zgodność, pozostaw niezmienione wersje pakietu.
%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. Pobierz żądaną wersję kodu źródłowego horovodu i skompiluj ją z odpowiednimi flagami. Jeśli nie potrzebujesz żadnych rozszerzeń (takich jak HOROVOD_WITH_PYTORCH), możesz usunąć te flagi.

Procesor 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

Procesor 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. Użyj polecenia %pip , aby ponownie zainstalować platformę Horovod, określając ścieżkę koła języka Python z danych wyjściowych poprzedniego polecenia. 0.21.3 pokazano w tym przykładzie.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Rozwiązywanie problemów z instalacją struktury Horovod

Problem: Importowanie horovod.{torch|tensorflow} zgłaszanych problemów ImportError: Extension horovod.{torch|tensorflow} has not been built

Rozwiązanie: Platforma Horovod jest wstępnie zainstalowana w środowisku Databricks Runtime ML, więc ten błąd zwykle występuje w przypadku nieprawidłowego aktualizowania środowiska. Błąd wskazuje, że struktura Horovod została zainstalowana przed wymaganą biblioteką (PyTorch lub TensorFlow). Ponieważ struktura Horovod jest kompilowana podczas instalacji, moduł horovod.{torch|tensorflow} nie zostanie skompilowany, jeśli te pakiety nie będą obecne podczas instalowania struktury Horovod. Aby rozwiązać ten problem, wykonaj poniższe kroki:

  1. Sprawdź, czy korzystasz z klastra Databricks Runtime ML.
  2. Upewnij się, że pakiet PyTorch lub TensorFlow jest już zainstalowany.
  3. Odinstaluj strukturę Horovod (%pip uninstall -y horovod).
  4. Zainstaluj program cmake (%pip install cmake).
  5. Ponownie zainstaluj strukturę horovod.