التدريب الموزع

عندما يكون ذلك ممكنا، توصي Azure Databricks بتدريب الشبكات العصبية على جهاز واحد؛ التعليمات البرمجية الموزعة للتدريب والاستدلال أكثر تعقيدا من التعليمات البرمجية لجهاز واحد وأبطأ بسبب الحمل الزائد للاتصال. ومع ذلك، يجب أن تفكر في التدريب الموزع والاستدلال إذا كان النموذج الخاص بك أو بياناتك كبيرة جدا بحيث لا يمكن احتواؤها في الذاكرة على جهاز واحد. بالنسبة لأحمال العمل هذه، يتضمن التعلم الآلي من Databricks Runtime حزم TorchDistributor وHorovod وspark-tensorflow-distributor.

يوفر Azure Databricks أيضا تدريبا موزعا لنماذج Spark ML مع pyspark.ml.connect الوحدة النمطية، راجع تدريب نماذج Spark ML على الاتصال Databricks باستخدام pyspark.ml.connect.

إشعار

لا توصي Databricks بتشغيل التدريب الموزع متعدد العقد باستخدام الأجهزة الظاهرية من سلسلة NC بسبب انخفاض أداء الشبكة بين العقد. بدلا من ذلك، استخدم عقدة واحدة متعددة وحدات معالجة الرسومات، أو استخدم حجم جهاز ظاهري GPU مختلفا مثل سلسلة NCasT4_v3، والتي تدعم الشبكات المتسارعة.

موزع DeepSpeed

تم بناء الموزع DeepSpeed على رأس TorchDistributor وهو حل موصى به للعملاء الذين لديهم نماذج تتطلب قوة حساب أعلى، ولكنها محدودة بقيود الذاكرة. DeepSpeed هي مكتبة مفتوحة المصدر طورتها Microsoft وتوفر استخداما محسنا للذاكرة وتقليل حمل الاتصال وتوازيا متقدما للبنية الأساسية لبرنامج ربط العمليات التجارية. تعرف على المزيد حول التدريب الموزع مع موزع DeepSpeed

TorchDistributor

TorchDistributor هي وحدة مفتوحة المصدر في PySpark تساعد المستخدمين على إجراء تدريب موزع باستخدام PyTorch على مجموعات Spark الخاصة بهم، لذلك يتيح لك تشغيل مهام التدريب PyTorch كوظائف Spark. تحت الغطاء، فإنه يقوم بتهيئة البيئة وقنوات الاتصال بين العمال ويستخدم أمر torch.distributed.run CLI لتشغيل التدريب الموزع عبر العقد العاملة. تعرف على المزيد حول التدريب الموزع باستخدام TorchDistributor.

موزع spark-tensorflow

موزع spark-tensorflow هو حزمة أصلية مفتوحة المصدر في TensorFlow للتدريب الموزع مع TensorFlow على مجموعات Spark. تعرف على المزيد حول التدريب الموزع باستخدام TensorFlow 2.

راي

Ray هو إطار عمل مفتوح المصدر متخصص في معالجة الحوسبة المتوازية لتوسيع نطاق سير عمل التعلم الآلي وتطبيقات الذكاء الاصطناعي. راجع استخدام Ray على Azure Databricks.

Horovod

Horovod هو إطار عمل تدريبي موزع ل TensorFlow وKeras وPyTorch. يدعم Azure Databricks التدريب على التعلم العميق الموزع باستخدام HorovodRunner والحزمة horovod.spark . بالنسبة لتطبيقات البنية الأساسية لبرنامج ربط العمليات التجارية Spark ML باستخدام Keras أو PyTorch، يمكنك استخدام horovod.sparkواجهة برمجة تطبيقات المقدر.

المتطلبات

Databricks Runtime ML.

استخدام Horovod

توفر المقالات التالية معلومات عامة حول التعلم العميق الموزع مع Horovod ودفاتر ملاحظات مثال توضح كيفية استخدام HorovodRunner والحزمة horovod.spark .

تثبيت إصدار مختلف من Horovod

لترقية Horovod أو تخفيضه من الإصدار المثبت مسبقا في مجموعة التعلم الآلي، يجب إعادة التحويل البرمجي Horovod باتباع الخطوات التالية:

  1. إلغاء تثبيت الإصدار الحالي من Horovod.
%pip uninstall -y horovod
  1. إذا كنت تستخدم مجموعة مسرعة بواسطة وحدة معالجة الرسومات، فقم بتثبيت مكتبات تطوير 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
  1. قم بتنزيل الإصدار المطلوب من التعليمات البرمجية المصدر ل Horovod وقم بالتحويل البرمجي باستخدام العلامات المناسبة. إذا لم تكن بحاجة إلى أي من الملحقات (مثل HOROVOD_WITH_PYTORCH)، يمكنك إزالة هذه العلامات.

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

الجرافيك

%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. استخدم %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. لإصلاح المشكلة، اتبع الخطوات التالية:

  1. تحقق من أنك على مجموعة Databricks Runtime ML.
  2. تأكد من تثبيت حزمة PyTorch أو TensorFlow بالفعل.
  3. إلغاء تثبيت Horovod (%pip uninstall -y horovod).
  4. تثبيت cmake (%pip install cmake).
  5. أعد تثبيت horovod.