الحوسبة الممكنة بواسطة وحدة معالجة الرسومات

إشعار

توجد بعض أنواع المثيلات الممكنة لوحدة معالجة الرسومات في Beta ويتم وضع علامة عليها على هذا النحو في القائمة المنسدلة عند تحديد أنواع برامج التشغيل والعاملين أثناء إنشاء الحساب.

نظرة عامة

يدعم Azure Databricks الحوسبة المتسارعة مع وحدات معالجة الرسومات (GPUs). توضح هذه المقالة كيفية إنشاء حساب مع المثيلات الممكنة لوحدة معالجة الرسومات وتصف برامج تشغيل وحدة معالجة الرسومات والمكتبات المثبتة على تلك المثيلات.

لمعرفة المزيد حول التعلم العميق حول الحوسبة الممكنة بواسطة وحدة معالجة الرسومات، راجع التعلم العميق.

إنشاء حساب GPU

إنشاء حساب GPU مشابه لإنشاء أي حساب. يجب أن تضع في اعتبارك ما يلي:

  • يجب أن يكون إصدار وقت تشغيل Databricks إصدارا يدعم GPU، مثل وقت التشغيل 13.3 LTS ML (GPU، Scala 2.12.15، Spark 3.4.1).
  • يجب أن يكون نوع العامل ونوع برنامج التشغيل نوعي مثيل وحدة معالجة الرسومات.

أنواع المثيلات المدعومة

يدعم Azure Databricks أنواع المثيلات التالية:

  • سلسلة نوع مثيل NC: Standard_NC12، Standard_NC24
  • سلسلة نوع مثيل NC v3: Standard_NC6s_v3، Standard_NC12s_v3، Standard_NC24s_v3
  • سلسلة نوع مثيل NC T4 v3: Standard_NC4as_T4_v3، Standard_NC8as_T4_v3، Standard_NC16as_T4_v3، Standard_NC64as_T4_v3
  • سلسلة نوع مثيل NC A100 v4: Standard_NC24ads_A100_v4، Standard_NC48ads_A100_v4، Standard_NC96ads_A100_v4
  • سلسلة نوع مثيل ND A100 v4: Standard_ND96asr_v4
  • سلسلة نوع مثيل NV A10 v5: Standard_NV36ads_A10_v5، Standard_NV36adms_A10_v5، Standard_NV72ads_A10_v5

راجع أسعار Azure Databricks للحصول على قائمة محدثة من أنواع مثيلات GPU المدعومة ومناطق التوفر الخاصة بها. يجب أن يتواجد توزيع Azure Databricks في منطقة مدعومة لتشغيل الحوسبة الممكنة بواسطة وحدة معالجة الرسومات.

جدولة وحدة معالجة الرسومات

توزع جدولة وحدة معالجة الرسومات مهام Spark بكفاءة عبر عدد كبير من وحدات معالجة الرسومات.

يدعم Databricks Runtime الجدولة المدركة لوحدة معالجة الرسومات من Apache Spark 3.0. يقوم Azure Databricks بتكوينه مسبقا على حساب GPU.

إشعار

لم يتم تمكين جدولة GPU على حساب عقدة واحدة.

تتوفر جدولة وحدة معالجة الرسومات المعرفة من قبل المستخدم فقط ل Databricks Runtime 7.1 والإصدارات الأحدث. بالنسبة للإصدارات السابقة من Databricks Runtime، يقوم Databricks تلقائيا بتكوين حساب GPU بحيث تكون هناك مهمة واحدة قيد التشغيل على الأكثر لكل عقدة. وبهذه الطريقة، يمكن للمهمة استخدام جميع وحدات معالجة الرسومات على العقدة دون الوقوع في تعارضات مع المهام الأخرى.

جدولة GPU الذكاء الاصطناعي وML

spark.task.resource.gpu.amount هو تكوين Spark الوحيد المتعلق بالجدولة المدركة لوحدة معالجة الرسومات التي قد تحتاج إلى تكوينها. يستخدم التكوين الافتراضي وحدة معالجة الرسومات واحدة لكل مهمة، وهو أساس جيد لأحمال عمل الاستدلال الموزعة والتدريب الموزع إذا كنت تستخدم جميع عقد GPU.

لتقليل حمل الاتصال أثناء التدريب الموزع، توصي Databricks بتعيين spark.task.resource.gpu.amount عدد وحدات معالجة الرسومات لكل عقدة عاملة في تكوين حساب Spark. يؤدي هذا إلى إنشاء مهمة Spark واحدة فقط لكل عامل Spark وتعيين كافة وحدات معالجة الرسومات في عقدة العامل إلى نفس المهمة.

لزيادة التوازي لاستدلال التعلم العميق الموزع، يمكنك تعيين spark.task.resource.gpu.amount إلى قيم كسرية مثل 1/2، 1/3، 1/4، ... 1/N. يؤدي هذا إلى إنشاء مهام Spark أكثر من وحدات معالجة الرسومات، ما يسمح للمهام المتزامنة بمعالجة طلبات الاستدلال بالتوازي. على سبيل المثال، إذا قمت بتعيين spark.task.resource.gpu.amount إلى 0.5أو 0.33أو 0.25، تقسيم وحدات معالجة الرسومات المتوفرة بين عدد المهام المزدوج أو الثلاثي أو أربعة أضعاف.

فهارس GPU

بالنسبة لمهام PySpark، يعيد Azure Databricks تعيين وحدة معالجة الرسومات المعينة تلقائيا إلى مؤشرات تستند إلى الصفر. بالنسبة للتكوين الافتراضي الذي يستخدم وحدة معالجة الرسومات واحدة لكل مهمة، يمكنك استخدام وحدة معالجة الرسومات الافتراضية دون التحقق من وحدة معالجة الرسومات المعينة للمهمة. إذا قمت بتعيين وحدات معالجة الرسومات متعددة لكل مهمة، على سبيل المثال، 4، فمؤشرات وحدات معالجة الرسومات المعينة هي دائما 0 و1 و2 و3. إذا كنت بحاجة إلى مؤشرات فعلية لوحدات معالجة الرسومات المعينة، يمكنك الحصول عليها من CUDA_VISIBLE_DEVICES متغير البيئة.

إذا كنت تستخدم Scala، يمكنك الحصول على مؤشرات وحدات معالجة الرسومات المعينة للمهمة من TaskContext.resources().get("gpu").

برنامج تشغيل NVIDIA GPU وCUDA وcuDNN

يقوم Azure Databricks بتثبيت برنامج تشغيل NVIDIA والمكتبات المطلوبة لاستخدام وحدات معالجة الرسومات على برنامج تشغيل Spark ومثيلات العامل:

  • CUDA Toolkit، مثبت ضمن /usr/local/cuda.
  • cuDNN: مكتبة الشبكة العصبية العميقة NVIDIA CUDA.
  • NCCL: مكتبة NVIDIA للاتصالات الجماعية.

إصدار برنامج تشغيل NVIDIA المضمن هو 535.54.03، والذي يدعم CUDA 11.0. بالنسبة لسلسلة نوع مثيل NV A10 v5، فإن إصدار برنامج تشغيل NVIDIA المضمن هو 535.154.05.

للحصول على إصدارات المكتبات المضمنة، راجع ملاحظات الإصدار لإصدار Databricks Runtime المحدد الذي تستخدمه.

إشعار

يحتوي هذا البرنامج على كود المصدر المقدم من جانب شركة NVIDIA. على وجه التحديد، لدعم وحدات معالجة الرسومات، يتضمن Azure Databricks تعليمة برمجية من نماذج CUDA.

اتفاقية ترخيص المستخدم النهائي لـ NVIDIA (EULA)

عند تحديد "إصدار وقت تشغيل Databricks" الممكن بواسطة GPU في Azure Databricks، فإنك توافق ضمنيا على الشروط والأحكام الموضحة في NVIDIA EULA فيما يتعلق بمكتبات CUDA وcuDNN وTesla واتفاقية ترخيص المستخدم النهائي NVIDIA (مع ملحق NCCL) لمكتبة NCCL.

Databricks Container Services على حساب GPU

هام

هذه الميزة في المعاينة العامة.

يمكنك استخدام Databricks Container Services على الحساب مع وحدات معالجة الرسومات لإنشاء بيئات تعلم عميق محمولة مع مكتبات مخصصة. راجع تخصيص الحاويات باستخدام Databricks Container Service للحصول على الإرشادات.

لإنشاء صور مخصصة لحساب GPU، يجب تحديد إصدار وقت تشغيل قياسي بدلا من Databricks Runtime ML ل GPU. عند تحديد استخدام حاوية Docker الخاصة بك، يمكنك اختيار حساب GPU مع إصدار وقت تشغيل قياسي. تستند الصور المخصصة ل GPU إلى حاويات CUDA الرسمية، والتي تختلف عن Databricks Runtime ML ل GPU.

عند إنشاء صور مخصصة لحساب GPU، لا يمكنك تغيير إصدار برنامج تشغيل NVIDIA لأنه يجب أن يتطابق مع إصدار برنامج التشغيل على الجهاز المضيف.

databricksruntime يحتوي Docker Hub على أمثلة على الصور الأساسية مع إمكانية GPU. توجد ملفات Dockerfiles المستخدمة لإنشاء هذه الصور في مستودع GitHub للحاويات المثال، والذي يحتوي أيضا على تفاصيل حول ما توفره صور المثال وكيفية تخصيصها.