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.spark
API 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
.
- HorovodRunner: Aprendizaje profundo distribuido con Horovod
- Ejemplos de HorovodRunner
horovod.spark
: aprendizaje profundo distribuido con Horovod
Instalación de otra versión de Horovod
Para actualizar Horovod o cambiarlo a una versión anterior desde la versión preinstalada en el clúster de Machine Learning, es preciso debe volver a compilar Horovod, para lo que se deben seguir estos pasos:
- Desinstale la versión actual de Horovod.
%pip uninstall -y horovod
- 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
- Descargue la versión que desee del código fuente de Horovod y realice la compilación con las marcas adecuadas. Si no necesita ninguna de las extensiones (como
HOROVOD_WITH_PYTORCH
), puede quitar las marcas.
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
- Se utiliza
%pip
para reinstalar Horovod especificando la ruta de la rueda Python de la salida del comando anterior. En este ejemplo, se muestra0.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:
- Compruebe que se encuentre en un clúster de Databricks Runtime ML.
- Asegúrese de que los paquetes PyTorch o TensorFlow ya están instalados.
- Desinstalación de Horovod (
%pip uninstall -y horovod
). - Instalación de
cmake
(%pip install cmake
) - Vuelva a instalar
horovod
.