Aller au contenu principal

Horovod

important

Horovod et HorovodRunner sont désormais obsolètes. Les versions après 15.4 LTS ML n’auront pas ce package préinstallé. Pour le deep learning distribué, Databricks recommande d'utiliser TorchDistributor pour l'entraînement distribué avec PyTorch ou l'API tf.distribute.Strategy pour l'entraînement distribué avec TensorFlow.

Horovod est un framework d'entraînement distribué pour TensorFlow, Keras et PyTorch. Databricks prend en charge l'entraînement de deep learning distribué à l'aide de HorovodRunner et du package horovod.spark. Pour les applications de pipelines de ML Spark utilisant Keras ou PyTorch, vous pouvez utiliser l'API horovod.spark d'estimateur.

Exigences

Databricks Runtime ML.

Utiliser Horovod

Les articles suivants fournissent des informations générales sur le deep learning distribué avec Horovod et des notebooks d'exemples illustrant comment utiliser HorovodRunner et le package horovod.spark.

Installer une version différente de Horovod

Pour mettre à niveau ou rétrograder Horovod à partir de la version préinstallée dans votre cluster ML, vous devez recompiler Horovod en suivant ces étapes :

  1. Désinstaller la version actuelle de Horovod.
%pip uninstall -y horovod
  1. Si vous utilisez un cluster accéléré par GPU, installez les bibliothèques de développement CUDA requises pour compiler Horovod. Pour garantir la compatibilité, laissez les versions des packages inchangées.
%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 la version souhaitée du code source d'Horovod et compilez avec les indicateurs appropriés. Si vous n'avez pas besoin d'aucune des extensions (telles que HOROVOD_WITH_PYTORCH), vous pouvez supprimer ces indicateurs.
%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
  1. Utilisez %pip pour réinstaller Horovod en spécifiant le chemin d'accès au Python wheel à partir de la sortie de la commande précédente. 0.21.3 est affiché dans cet exemple.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Dépanner l'installation de Horovod

Problème : L'importation de horovod.{torch|tensorflow} provoque ImportError: Extension horovod.{torch|tensorflow} has not been built

Solution : Horovod est préinstallé sur Databricks Runtime ML, cette erreur se produit donc généralement si la mise à jour d'un environnement échoue. L'erreur indique que Horovod a été installé avant une bibliothèque requise (PyTorch ou TensorFlow). Puisque Horovod est compilé lors de l'installation, horovod.{torch|tensorflow} ne sera pas compilé si ces packages ne sont pas présents lors de l'installation de Horovod. Pour résoudre le problème, suivez ces étapes :

  1. Vérifiez que vous utilisez un cluster ML de Databricks Runtime.
  2. Assurez-vous que le package PyTorch ou TensorFlow est déjà installé.
  3. Désinstaller Horovod (%pip uninstall -y horovod).
  4. Installez cmake (%pip install cmake).
  5. Réinstallez horovod.