Distribuované trénování

Azure Databricks doporučuje, abyste, pokud možno, neurální sítě trénovali v jednom počítači. Distribuovaný kód pro trénování a odvozování je složitější, než je kód pro jeden počítač, a je pomalejší z důvodu komunikační režie. Distribuované trénování a odvozování byste však měli zvážit, pokud mají vaše data nebo model příliš velkou velikost, než aby se vešla do paměti v jednom počítači. Pro tyto úlohy zahrnuje Databricks Runtime ML balíčky TorchDistributor, Horovod a spark-tensorflow-distributor.

Azure Databricks také nabízí distribuované trénování modelů Spark ML pomocí pyspark.ml.connect modulu, viz trénování modelů Spark ML v Databricks Připojení pomocí pyspark.ml.connect.

Poznámka:

Databricks nedoporučuje spouštět distribuované trénování s více uzly pomocí virtuálních počítačů řady NC kvůli nízkému výkonu sítě mezi uzly. Místo toho použijte jeden uzel s více GPU nebo použijte jinou velikost virtuálního počítače GPU, například NCasT4_v3-series, která podporuje akcelerované síťové služby.

Distributor DeepSpeed

Distributor DeepSpeed je postaven na torchDistributor a je doporučeným řešením pro zákazníky s modely, které vyžadují vyšší výpočetní výkon, ale jsou omezené omezeními paměti. DeepSpeed je opensourcová knihovna vyvinutá Microsoftem a nabízí optimalizované využití paměti, menší komunikační režii a pokročilý paralelismus kanálu. Další informace o distribuovaném trénování s distributorem DeepSpeed

TorchDistributor

TorchDistributor je opensourcový modul v PySparku, který uživatelům pomáhá provádět distribuované trénování pomocí PyTorchu v jejich clusterech Spark, takže umožňuje spouštět trénovací úlohy PyTorch jako úlohy Sparku. Inicializuje prostředí a komunikační kanály mezi pracovními procesy a využívá příkaz torch.distributed.run rozhraní příkazového řádku ke spuštění distribuovaného trénování napříč pracovními uzly. Přečtěte si další informace o distribuovaném trénování pomocí torchDistributoru.

spark-tensorflow-distributor

spark-tensorflow-distributor je opensourcový nativní balíček v TensorFlow pro distribuované trénování s využitím TensorFlow ve sparkových clusterech. Přečtěte si další informace o distribuovaném trénování pomocí TensorFlow 2.

Ray

Ray je opensourcová architektura, která se specializuje na paralelní výpočetní zpracování pro škálování pracovních postupů ML a aplikací umělé inteligence. Viz Použití Ray v Azure Databricks.

Horovod

Horovod je architektura pro distribuované trénování pro TensorFlow, Keras a PyTorch. Azure Databricks podporuje distribuované trénování hlubokého učení s využitím HorovodRunneru a balíčku horovod.spark. Pro aplikace kanálů Spark ML pomocí Kerasu nebo PyTorchu můžete použít horovod.sparkrozhraní API pro odhadce.

Požadavky

Databricks Runtime ML.

Použití Horovodu

V následujících článcích najdete obecné informace o distribuovaném hlubokém učení s využitím Horovodu a ukázkové poznámkové bloky, které ilustrují použití HorovodRunneru a balíčku horovod.spark.

Instalace jiné verze Horovodu

Pokud chcete upgradovat nebo downgradovat Horovod z předinstalované verze v clusteru ML, musíte horovod znovu zkompilovat pomocí následujících kroků:

  1. Odinstalujte aktuální verzi Horovodu.
%pip uninstall -y horovod
  1. Pokud používáte cluster s akcelerovaným gpu, nainstalujte vývojové knihovny CUDA potřebné ke kompilaci Horovodu. Pokud chcete zajistit kompatibilitu, ponechte verze balíčků beze změny.
%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. Stáhněte si požadovanou verzi zdrojového kódu Horovodu a zkompilujte s příslušnými příznaky. Pokud nepotřebujete žádná rozšíření (například HOROVOD_WITH_PYTORCH), můžete tyto příznaky odebrat.

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. Slouží %pip k přeinstalaci Horovodu zadáním cesty kola Pythonu z výstupu předchozího příkazu. 0.21.3 je znázorněno v tomto příkladu.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Řešení potíží s instalací Horovodu

Problém: Import vyvolání horovod.{torch|tensorflow}ImportError: Extension horovod.{torch|tensorflow} has not been built

Řešení: Horovod je předinstalovaný ve službě Databricks Runtime ML, takže k této chybě obvykle dochází v případě, že se aktualizace prostředí nepovede. Tato chyba indikuje, že Horovod byl nainstalovaný před požadovanou knihovnou (PyTorch nebo TensorFlow). Vzhledem k tomu, že Horovod se kompiluje během instalace, horovod.{torch|tensorflow} se nezkompiluje, pokud tyto balíčky nejsou během instalace Horovodu k dispozici. Pokud chcete tento problém vyřešit, postupujte následovně:

  1. Ověřte, že jste v clusteru Databricks Runtime ML.
  2. Ujistěte se, že balíček pro PyTorch nebo TensorFlow je už nainstalovaný.
  3. Odinstalujte Horovod (%pip uninstall -y horovod).
  4. Nainstalujte cmake (%pip install cmake).
  5. Znovu nainstalujte horovod.