أفضل الممارسات للتعلم العميق على Azure Databricks

تتضمن هذه المقالة نصائح للتعلم العميق على Azure Databricks ومعلومات حول الأدوات والمكتبات المضمنة المصممة لتحسين أحمال عمل التعلم العميق مثل ما يلي:

يوفر Databricks التعلم الآلي بنية أساسية للتعلم العميق تم إنشاؤها مسبقا مع Databricks Runtime التعلم الآلي، والتي تتضمن مكتبات التعلم العميق الأكثر شيوعا مثل TensorFlow وPyTorch وKeras. كما أنه يحتوي على دعم وحدة معالجة الرسومات مضمن ومكون مسبقا بما في ذلك برامج التشغيل والمكتبات الداعمة.

يتضمن التعلم الآلي من Databricks Runtime أيضا جميع إمكانيات مساحة عمل Azure Databricks، مثل إنشاء نظام المجموعة وإدارتها، وإدارة المكتبة والبيئة، وإدارة التعليمات البرمجية باستخدام مجلدات Databricks Git، ودعم الأتمتة بما في ذلك وظائف Databricks وواجهات برمجة التطبيقات، وMLflow المتكامل لتعقب تطوير النموذج ونشر النموذج وتقديمه.

إدارة الموارد والبيئة

يساعدك Azure Databricks على تخصيص بيئة التعلم العميق والحفاظ على البيئة متسقة عبر المستخدمين.

تخصيص بيئة التطوير

باستخدام Databricks Runtime، يمكنك تخصيص بيئة التطوير الخاصة بك على مستوى دفتر الملاحظات والكتلة والمهمة.

استخدام نهج نظام المجموعة

يمكنك إنشاء نهج نظام المجموعة لتوجيه علماء البيانات إلى الخيارات الصحيحة، مثل استخدام مجموعة عقدة واحدة للتطوير واستخدام نظام مجموعة مقياس تلقائي للوظائف الكبيرة.

ضع في اعتبارك وحدات معالجة الرسومات A100 لأحمال عمل التعلم العميق

تعد وحدات معالجة الرسومات A100 خيارا فعالا للعديد من مهام التعلم العميق، مثل تدريب وضبط نماذج اللغة الكبيرة ومعالجة اللغة الطبيعية واكتشاف الكائنات وتصنيفها ومحركات التوصية.

  • يدعم Databricks وحدات معالجة الرسومات A100 على جميع السحب. للحصول على القائمة الكاملة من أنواع وحدة معالجة الرسومات المدعومة، راجع أنواع المثيلات المدعومة.
  • عادة ما يكون لدى وحدات معالجة الرسومات A100 قابلية وصول محدودة. اتصل بموفر السحابة لتخصيص الموارد، أو ضع في اعتبارك حجز السعة مسبقا.

أفضل الممارسات لتحميل البيانات

عادة ما لا يتم تحسين تخزين البيانات السحابية للإداء/الإخراج، والذي يمكن أن يكون تحديا لنماذج التعلم العميق التي تتطلب مجموعات بيانات كبيرة. يتضمن التعلم الآلي من Databricks Runtime Delta Lake و Petastorm لتحسين معدل نقل البيانات لتطبيقات التعلم العميق.

توصي Databricks باستخدام جداول Delta Lake لتخزين البيانات. تعمل Delta Lake على تبسيط ETL وتتيح لك الوصول إلى البيانات بكفاءة. خاصة بالنسبة للصور، يساعد Delta Lake على تحسين الاستيعاب لكل من التدريب والاستدلال. يوفر الحل المرجعي لتطبيقات الصور مثالا على تحسين ETL للصور باستخدام Delta Lake.

توفر Petastorm واجهات برمجة التطبيقات التي تتيح لك إعداد البيانات بتنسيق parquet لاستخدامها من قبل TensorFlow أو Keras أو PyTorch. توفر واجهة برمجة تطبيقات SparkConverter تكامل Spark DataFrame. يوفر Petastorm أيضا تقسيم البيانات للمعالجة الموزعة. راجع تحميل البيانات باستخدام Petastorm للحصول على التفاصيل.

أفضل الممارسات لتدريب نماذج التعلم العميق

توصي Databricks باستخدام Databricks Runtime لتعقب التعلم الآلي وMLflow والتدوين التلقائي لجميع تدريب النموذج.

البدء بمجموعة عقدة واحدة

عادة ما تكون مجموعة وحدة معالجة الرسومات أحادية العقدة (برنامج التشغيل فقط) أسرع وأكثر فعالية من حيث التكلفة لتطوير نموذج التعلم العميق. من المحتمل أن تكون عقدة واحدة مع 4 وحدات معالجة الرسومات أسرع لتدريب التعلم العميق أن 4 عقد عاملة مع 1 GPU لكل منها. وذلك لأن التدريب الموزع يتحمل نفقات اتصال الشبكة.

يعد نظام مجموعة عقدة واحدة خيارا جيدا أثناء التطوير السريع المتكرر ونماذج التدريب على البيانات الصغيرة إلى المتوسطة الحجم. إذا كانت مجموعة البيانات كبيرة بما يكفي لجعل التدريب بطيئا على جهاز واحد، ففكر في الانتقال إلى وحدة معالجة الرسومات المتعددة وحتى الحوسبة الموزعة.

استخدام مقاييس TensorBoard ومقاييس نظام المجموعة لمراقبة عملية التدريب

تم تثبيت TensorBoard مسبقا في Databricks Runtime ML. يمكنك استخدامه داخل دفتر ملاحظات أو في علامة تبويب منفصلة. راجع TensorBoard للحصول على التفاصيل.

تتوفر مقاييس نظام المجموعة في جميع أوقات تشغيل Databricks. يمكنك فحص استخدام الشبكة والمعالج والذاكرة لفحص الاختناقات. راجع مقاييس نظام المجموعة للحصول على التفاصيل.

تحسين الأداء للتعلم العميق

يمكنك، ويجب عليك، استخدام تقنيات تحسين أداء التعلم العميق على Databricks.

الإيقاف المبكر

يراقب الإيقاف المبكر قيمة المقياس المحسوب على مجموعة التحقق من الصحة ويتوقف عن التدريب عندما يتوقف المقياس عن التحسن. هذا نهج أفضل من التخمين في عدد لا بأس به من العهود لإكمالها. توفر كل مكتبة تعلم عميق واجهة برمجة تطبيقات أصلية للتوقف المبكر؛ على سبيل المثال، راجع واجهات برمجة تطبيقات رد الاتصال EarlyStopping ل TensorFlow/Keras وPyTorch Lightning. للحصول على مثال لدفتر الملاحظات، راجع دفتر ملاحظات مثال TensorFlow Keras.

ضبط حجم الدفعة

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

اضبط حجم الدفعة بالتزامن مع معدل التعلم. قاعدة الإبهام الجيدة هي أنه عند زيادة حجم الدفعة بمقدار n، قم بزيادة معدل التعلم بواسطة sqrt(n). عند الضبط يدويا، حاول تغيير حجم الدفعة بعامل 2 أو 0.5. ثم تابع الضبط لتحسين الأداء، إما يدويا أو عن طريق اختبار مجموعة متنوعة من المعلمات الفائقة باستخدام أداة تلقائية مثل Hyperopt.

نقل التعلم

مع نقل التعلم، يمكنك البدء بنموذج مدرب مسبقا وتعديله حسب الحاجة لتطبيقك. يمكن أن يقلل نقل التعلم بشكل كبير من الوقت المطلوب لتدريب نموذج جديد وضبطه. راجع التضمين لنقل التعلم للحصول على مزيد من المعلومات ومثال.

الانتقال إلى التدريب الموزع

يتضمن التعلم الآلي من Databricks Runtime HorovodRunner وS spark-tensorflow-distributortorchDistributor وHyperopt لتسهيل الانتقال من عقدة واحدة إلى التدريب الموزع.

HorovodRunner

Horovod هو مشروع مفتوح المصدر يتدرج من التدريب على التعلم العميق إلى وحدة معالجة الرسومات المتعددة أو الحساب الموزع. HorovodRunner، الذي تم إنشاؤه بواسطة Databricks والمضمن في Databricks Runtime ML، هو برنامج تضمين Horovod يوفر توافق Spark. تتيح لك واجهة برمجة التطبيقات توسيع نطاق التعليمات البرمجية أحادية العقدة بأقل قدر من التغييرات. يعمل HorovodRunner مع TensorFlow وKeras وPyTorch.

spark-tensorflow-distributor

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

TorchDistributor

TorchDistributor هي وحدة نمطية مفتوحة المصدر في PySpark تسهل التدريب الموزع مع PyTorch على مجموعات Spark، والتي تسمح لك بتشغيل مهام التدريب PyTorch كوظائف Spark. راجع التدريب الموزع باستخدام TorchDistributor.

Hyperopt

يوفر Hyperopt ضبط hyperparameter التكيفي للتعلم الآلي. باستخدام فئة SparkTrials، يمكنك ضبط المعلمات لنماذج التعلم العميق بشكل متكرر بالتوازي عبر مجموعة.

أفضل الممارسات للاستدلال

يحتوي هذا القسم على تلميحات عامة حول استخدام النماذج للاستدلال مع Azure Databricks.

  • لتقليل التكاليف، ضع في اعتبارك كل من وحدات المعالجة المركزية ووحدات معالجة الرسومات المحسنة للاستدلال مثل سلسلة T4_V3 NC. لا توجد توصية واضحة، حيث يعتمد الخيار الأفضل على حجم النموذج وأبعاد البيانات والمتغيرات الأخرى.

  • استخدم MLflow لتبسيط التوزيع وخدمة النموذج. يمكن ل MLflow تسجيل أي نموذج تعلم عميق، بما في ذلك منطق المعالجة المسبقة وما بعد المعالجة المخصص. يمكن نشر النماذج في كتالوج Unity أو النماذج المسجلة في Workspace Model Registry للدفعة أو الدفق أو الاستدلال عبر الإنترنت.

خدمة عبر الإنترنت

أفضل خيار لخدمة زمن الانتقال المنخفض هو الخدمة عبر الإنترنت خلف واجهة برمجة تطبيقات REST. يوفر Databricks خدمة النموذج للاستدلال عبر الإنترنت. توفر خدمة النموذج واجهة موحدة لنشر النماذج الذكاء الاصطناعي والتحكم فيها والاستعلام الذكاء الاصطناعي وتدعم خدمة ما يلي:

  • النماذج المخصصة. هذه نماذج Python مجمعة بتنسيق MLflow. ومن الأمثلة على ذلك scikit-learn وXGBoost وPyTorch ونماذج محول Face Hugging.
  • أحدث النماذج المفتوحة التي توفرها واجهات برمجة تطبيقات نموذج المؤسسة. هذه النماذج هي بنيات نموذج أساسي منسقة تدعم الاستدلال الأمثل. على سبيل المثال، تتوفر نماذج أساسية مثل Llama-2-70B-chat وBGE-Large و Mistral-7B للاستخدام الفوري مع تسعير الدفع لكل رمز مميز . بالنسبة لأحمال العمل التي تتطلب ضمانات الأداء ومتغيرات النموذج الدقيقة، يمكنك نشرها مع معدل النقل المقدم.
  • نماذج خارجية. هذه هي النماذج التي تتم استضافتها خارج Databricks. على سبيل المثال، نماذج أساسية مثل، OpenAI's GPT-4، وThropic's Claude، وغيرها. يمكن التحكم مركزيا في نقاط النهاية التي تخدم هذه النماذج ويمكن للعملاء وضع حدود للمعدل وضوابط الوصول لهم.

بدلا من ذلك، يوفر MLflow واجهات برمجة التطبيقات للنشر في مختلف الخدمات المدارة للاستدلال عبر الإنترنت، بالإضافة إلى واجهات برمجة التطبيقات لإنشاء حاويات Docker لحلول الخدمة المخصصة.

تشمل الخدمات المدارة الشائعة الأخرى للاستدلال عبر الإنترنت ما يلي:

استدلال الدفعات والتدفق

يدعم تسجيل الدفعات والتدفق معدل النقل العالي، وتسجيل النقاط منخفضة التكلفة في زمن انتقال منخفض مثل الدقائق. لمزيد من المعلومات، راجع استخدام MLflow لاستدلال النموذج.

  • إذا كنت تتوقع الوصول إلى البيانات للاستدلال أكثر من مرة، ففكر في إنشاء مهمة معالجة مسبقة ل ETL البيانات في جدول Delta Lake قبل تشغيل مهمة الاستدلال. بهذه الطريقة، تنتشر تكلفة استيعاب البيانات وإعدادها عبر قراءات متعددة للبيانات. يسمح لك فصل المعالجة المسبقة عن الاستدلال أيضا بتحديد أجهزة مختلفة لكل وظيفة لتحسين التكلفة والأداء. على سبيل المثال، قد تستخدم وحدات المعالجة المركزية ل ETL ووحدات معالجة الرسومات للاستدلال.
  • استخدم Spark Pandas UDFs لتوسيع نطاق الاستدلال الدفعي والتدفق عبر نظام مجموعة.
    • عند تسجيل نموذج من Azure Databricks، يوفر MLflow تلقائيا رمز الاستدلال لتطبيق النموذج ك Pandas UDF.
    • يمكنك أيضا تحسين مسار الاستدلال الخاص بك بشكل أكبر، خاصة بالنسبة لنماذج التعلم العميق الكبيرة. راجع الحل المرجعي للصورة ETL للحصول على مثال.