Dağıtılmış eğitim

Azure Databricks, sinir ağlarınızı mümkün olduğunda tek bir makinede eğitmenizi önerir. Eğitim ve çıkarım için dağıtılmış kod, tek makine kodundan daha karmaşıktır ve iletişim ek yükü nedeniyle daha yavaştır. Ancak, modeliniz veya verileriniz tek bir makinede belleğe sığmayacak kadar büyükse dağıtılmış eğitimi ve çıkarımı göz önünde bulundurmalısınız. Bu iş yükleri için Databricks Runtime ML, TorchDistributor, Horovod ve spark-tensorflow-distributor paketlerini içerir.

Azure Databricks, modülüyle pyspark.ml.connect Spark ML modelleri için dağıtılmış eğitim de sunar. Bkz. Pyspark.ml.connect ile Databricks Bağlan üzerinde Spark ML modellerini eğitme.

Not

Databricks, düşük düğümler arası ağ performansı nedeniyle NC serisi VM'leri kullanarak çok düğümlü dağıtılmış eğitimin çalıştırılmasını önermez. Bunun yerine, tek bir çoklu GPU düğümü kullanın veya hızlandırılmış ağı destekleyen NCasT4_v3 serisi gibi farklı bir GPU VM boyutu kullanın.

DeepSpeed distribütörü

DeepSpeed distribütörü TorchDistributor'un üzerine kurulmuştur ve daha yüksek işlem gücü gerektiren ancak bellek kısıtlamalarıyla sınırlı olan modellere sahip müşteriler için önerilen bir çözümdür. DeepSpeed, Microsoft tarafından geliştirilen ve iyileştirilmiş bellek kullanımı, azaltılmış iletişim yükü ve gelişmiş işlem hattı paralelliği sunan bir açık kaynak kitaplığıdır. DeepSpeed dağıtımcısı ile dağıtılmış eğitim hakkında daha fazla bilgi edinin

TorchDistributor

TorchDistributor , PySpark'ta kullanıcıların Spark kümelerinde PyTorch ile dağıtılmış eğitim yapmalarına yardımcı olan açık kaynak bir modüldür, bu nedenle PyTorch eğitim işlerini Spark işleri olarak başlatmanıza olanak tanır. Altta, çalışanlar arasındaki ortamı ve iletişim kanallarını başlatır ve çalışan düğümleri arasında dağıtılmış eğitim çalıştırmak için CLI komutunu torch.distributed.run kullanır. TorchDistributor ile Dağıtılmış eğitim hakkında daha fazla bilgi edinin.

spark-tensorflow-distributor

spark-tensorflow-distributor, Spark kümelerinde TensorFlow ile dağıtılmış eğitime yönelik, TensorFlow içindeki açık kaynaklı bir yerel pakettir. TensorFlow 2 ile Dağıtılmış eğitim hakkında daha fazla bilgi edinin.

Ray

Ray , ML iş akışlarını ve yapay zeka uygulamalarını ölçeklendirmek için paralel işlem işleme konusunda uzmanlaşmış bir açık kaynak çerçevedir. Bkz . Azure Databricks'te Ray kullanma.

Horovod

Horovod; TensorFlow, Keras, ve PyTorch’a yönelik bir dağıtılmış eğitim çerçevesidir. Azure Databricks, HorovodRunner ve horovod.spark paketini kullanarak dağıtılmış derin öğrenme eğitimini destekler. Keras veya PyTorch kullanan Spark ML işlem hattı uygulamaları için tahmin aracı API'sini horovod.sparkkullanabilirsiniz.

Gereksinimler

Databricks Runtime ML.

Horovod Kullanma

Aşağıdaki makalelerde, Horovod ile dağıtılmış derin öğrenme ve HorovodRunner’ın ve horovod.spark paketinin nasıl kullanılacağını gösteren örnek not defterleri ile ilgili genel bilgiler sağlanır.

Horovod'un farklı bir sürümünü yükleme

Horovod'u ML kümenizdeki önceden yüklenmiş sürümden yükseltmek veya düşürmek için şu adımları izleyerek Horovod'u yeniden derlemeniz gerekir:

  1. Horovod'un geçerli sürümünü kaldırın.
%pip uninstall -y horovod
  1. GPU hızlandırmalı bir küme kullanıyorsanız, Horovod'u derlemek için gereken CUDA geliştirme kitaplıklarını yükleyin. Uyumluluğu sağlamak için paket sürümlerini değiştirmeden bırakın.
%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. Horovod'un kaynak kodunun istenen sürümünü indirin ve uygun bayraklarla derleyin. Uzantılardan herhangi birine (örneğin HOROVOD_WITH_PYTORCH) ihtiyacınız yoksa bu bayrakları kaldırabilirsiniz.

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
  1. Önceki komutun çıkışından Python tekerlek yolunu belirterek Horovod'ı yeniden yüklemek için kullanın %pip . 0.21.3 bu örnekte gösterilmiştir.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Horovod yüklemesinde sorun giderme

Sorun: İçeri aktarma horovod.{torch|tensorflow} işlemi tetikleniyor ImportError: Extension horovod.{torch|tensorflow} has not been built

Çözüm: Horovod, Databricks Runtime ML'de önceden yüklenmiş olarak gelir, bu nedenle bu hata genellikle bir ortamın güncelleştirilmesi yanlış giderse oluşur. Hata, Horovod'un gerekli bir kütüphaneden (PyTorch veya TensorFlow) önce yüklendiği anlamına gelir. Horovod yükleme sırasında derlendiğinden, bu paketler Horovod yüklemesi sırasında mevcut değilse horovod.{torch|tensorflow} derlenmez. Sorunu çözmek için şu adımları izleyin:

  1. Databricks Runtime ML kümesinde olduğunuzu doğrulayın.
  2. PyTorch veya TensorFlow paketinin zaten yüklü olduğundan emin olun.
  3. Horovod'u (%pip uninstall -y horovod) kaldırın.
  4. cmake yükleyin. (%pip install cmake).
  5. horovod'yi yeniden yükleyin.