Horovod
Внимание
Horovod и HorovodRunner теперь устарели. Выпуски после 15.4 машинного обучения LTS не будут установлены в этом пакете. Для распределенного глубокого обучения Databricks рекомендует использовать TorchDistributor для распределенного обучения с PyTorch или tf.distribute.Strategy
API для распределенного обучения с TensorFlow.
Платформа распределенного обучения Horovod предназначена для работы с TensorFlow, Keras и PyTorch. Azure Databricks поддерживает распределенное глубокое обучение с использованием HorovodRunner и пакета horovod.spark
. Для приложений конвейера машинного обучения Spark, использующих Keras или PyTorch, вы можете применять API оценщика horovod.spark
.
Требования
Databricks Runtime ML.
Использование Horovod
В указанных ниже статьях приведены общие сведения о распределенном глубоком обучении с помощью Horovod и примеры записных книжек для иллюстрации использования HorovodRunner и пакета horovod.spark
.
- HorovodRunner. Распределенное глубокое обучение с Horovod
- Примеры HorovodRunner
horovod.spark
: распределенное глубокое обучение с помощью Horovod
Установка другой версии Horovod
Чтобы перейти на использование более ранней или более поздней версии Horovod с предустановленной версии в кластере машинного обучения, нужно перекомпилировать Horovod, сделав следующее:
- Удалите текущую версию Horovod.
%pip uninstall -y horovod
- Если используется кластер с ускорением GPU, установите библиотеки разработки CUDA, необходимые для компиляции Horovod. Чтобы обеспечить совместимость, оставьте версии пакета без изменений.
%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
- Скачайте нужную версию исходного кода Horovod и скомпилируйте его с соответствующими флагами. Если расширения не требуются (например,
HOROVOD_WITH_PYTORCH
), эти флаги можно удалить.
ЦП
%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
- Используйте
%pip
для переустановки Horovod, указав путь к колесу Python из выходных данных предыдущей команды. В нашем примере используется0.21.3
.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
Устранение неполадок при установке Horovod
Проблема: импорт horovod.{torch|tensorflow}
приводит к появлению ошибки ImportError: Extension horovod.{torch|tensorflow} has not been built
Решение: Horovod поставляется предварительно установленной в Databricks Runtime ML, поэтому эта ошибка обычно возникает, если обновление среды происходит неправильно. Она указывает, что платформа Horovod была установлена до установки необходимой библиотеки (PyTorch или TensorFlow). Так как компиляция Horovod выполняется во время установки, horovod.{torch|tensorflow}
не будет скомпилирован, если такие пакеты отсутствуют в ходе установки Horovod.
Для устранения данной проблемы выполните следующие действия:
- Убедитесь, что вы работаете с кластером Databricks Runtime ML.
- Убедитесь, что пакет PyTorch или TensorFlow уже установлен.
- Отмените установку Horovod (
%pip uninstall -y horovod
). - Установите
cmake
(%pip install cmake
). - Повторно установить
horovod
.