Compartir a través de


Horovod

Importante

Horovod y HorovodRunner ya están en desuso. Las versiones posteriores a 15.4 LTS ML no tendrán este paquete preinstalado. Para el aprendizaje profundo distribuido, Databricks recomienda usar TorchDistributor para el entrenamiento distribuido con PyTorch o la API para el tf.distribute.Strategy entrenamiento distribuido con TensorFlow.

Horovod es un marco de aprendizaje distribuido para TensorFlow, Keras y PyTorch. Azure Databricks admite el entrenamiento de aprendizaje profundo distribuido mediante HorovodRunner y el paquete horovod.spark. En el caso de las aplicaciones de canalización de aprendizaje automático de Spark que usan Keras o PyTorch, puede usar la horovod.sparkAPI del estimador.

Requisitos

Databricks Runtime ML.

Uso de Horovod

En los siguientes artículos se proporciona información general sobre el aprendizaje profundo distribuido con Horovod, así como cuadernos de ejemplo que ilustran cómo se usa HorovodRunner y el paquete horovod.spark.

Instalación de otra versión de Horovod

Para actualizar o cambiar Horovod a una versión anterior desde la versión preinstalada en el clúster de aprendizaje automático, se debe volver a compilar Horovod siguiendo estos pasos:

  1. Desinstale la versión actual de Horovod.
%pip uninstall -y horovod
  1. Si usa un clúster acelerado por GPU, instale las bibliotecas de desarrollo de CUDA necesarias para compilar Horovod. Para garantizar la compatibilidad, no modifique las versiones del paquete.
%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. Descargue la versión deseada del código fuente de Horovod y compile con las marcas adecuadas. Si no necesita ninguna de las extensiones (como HOROVOD_WITH_PYTORCH), puede quitar esas marcas.

Unidad Central de Procesamiento (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 (Unidad de Procesamiento Gráfico)

%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. Utilice %pip para volver a instalar Horovod especificando el camino de la rueda de Python proporcionado por la salida del comando anterior. En este ejemplo, se muestra 0.21.3.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Solución de problemas de instalación de Horovod

Problema: La importación de horovod.{torch|tensorflow} genera ImportError: Extension horovod.{torch|tensorflow} has not been built

Solución: Horovod viene preinstalado en Databricks Runtime ML, por lo que este error suele producirse si la actualización de un entorno no se realiza correctamente. El error indica que Horovod se instaló antes que una biblioteca requerida (PyTorch o TensorFlow). Dado que Horovod se compila durante la instalación, horovod.{torch|tensorflow} no se compilará si esos paquetes no están presentes durante la instalación de Horovod. Para solucionar el problema, siga estos pasos:

  1. Compruebe que se encuentre en un clúster de Databricks Runtime ML.
  2. Asegúrese de que los paquetes PyTorch o TensorFlow ya están instalados.
  3. Desinstalación de Horovod (%pip uninstall -y horovod).
  4. Instalación de cmake (%pip install cmake).
  5. Vuelva a instalar horovod.