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
.
- HorovodRunner: rozproszone uczenie głębokie za pomocą struktury Horovod
- Przykłady interfejsu HorovodRunner
-
horovod.spark
: rozproszone uczenie głębokie za pomocą struktury Horovod
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:
- Odinstaluj bieżącą wersję struktury Horovod.
%pip uninstall -y horovod
- 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
- 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
- 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:
- Sprawdź, czy korzystasz z klastra Databricks Runtime ML.
- Upewnij się, że pakiet PyTorch lub TensorFlow jest już zainstalowany.
- Odinstaluj strukturę Horovod (
%pip uninstall -y horovod
). - Zainstaluj program
cmake
(%pip install cmake
). - Ponownie zainstaluj strukturę
horovod
.