التدريب الموزع لنماذج XGBoost باستخدام sparkdl.xgboost

هام

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

إشعار

sparkdl.xgboost مهمل بدءا من Databricks Runtime 12.0 ML، ويتم إزالته في Databricks Runtime 13.0 ML وما فوق. للحصول على معلومات حول ترحيل أحمال العمل إلى xgboost.spark، راجع دليل الترحيل للوحدة النمطية sparkdl.xgboost المهملة.

يتضمن التعلم الآلي من Databricks Runtime مقدرات PySpark استنادا إلى حزمة Python xgboost وsparkdl.xgboost.XgboostClassifiersparkdl.xgboost.XgboostRegressor. يمكنك إنشاء مسار التعلم الآلي استنادا إلى هذه المقدرات. لمزيد من المعلومات، راجع XGBoost ل PySpark Pipeline.

توصي Databricks بشدة بأن sparkdl.xgboost يستخدم المستخدمون Databricks Runtime 11.3 LTS ML أو أعلى. تتأثر إصدارات وقت تشغيل Databricks السابقة بالأخطاء في الإصدارات القديمة من sparkdl.xgboost.

إشعار

  • تم sparkdl.xgboost إهمال الوحدة النمطية منذ Databricks Runtime 12.0 ML. توصي Databricks بترحيل التعليمات البرمجية الخاصة بك لاستخدام الوحدة النمطية xgboost.spark بدلا من ذلك. راجع دليل الترحيل.
  • المعلمات التالية من الحزمة xgboost غير مدعومة: gpu_id، ، output_margin. validate_features
  • المعلمات sample_weightو eval_setو sample_weight_eval_set غير معتمدة. بدلا من ذلك، استخدم المعلمات weightCol و validationIndicatorCol. راجع XGBoost ل PySpark Pipeline للحصول على التفاصيل.
  • المعلمات base_marginو base_margin_eval_set غير معتمدة. استخدم المعلمة baseMarginCol بدلا من ذلك. راجع XGBoost ل PySpark Pipeline للحصول على التفاصيل.
  • المعلمة missing لها دلالات مختلفة عن الحزمة xgboost . في الحزمة xgboost ، يتم التعامل مع القيم الصفرية في مصفوفة SciPy المتفرقة كقيم مفقودة بغض النظر عن قيمة missing. بالنسبة لمقدرات PySpark في الحزمة sparkdl ، لا يتم التعامل مع القيم الصفرية في متجه Spark المتفرق كقيم مفقودة ما لم تقم بتعيين missing=0. إذا كان لديك مجموعة بيانات تدريب متفرقة (معظم قيم الميزات مفقودة)، توصي Databricks بإعداد missing=0 لتقليل استهلاك الذاكرة وتحقيق أداء أفضل.

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

يدعم Databricks Runtime ML تدريب XGBoost الموزع باستخدام المعلمة num_workers . لاستخدام التدريب الموزع، قم بإنشاء مصنف أو تراجع وتعيينه num_workers إلى قيمة أقل من أو تساوي العدد الإجمالي لفتحات مهام Spark على نظام المجموعة. لاستخدام جميع فتحات مهام Spark، قم بتعيين num_workers=sc.defaultParallelism.

على سبيل المثال:

classifier = XgboostClassifier(num_workers=sc.defaultParallelism)
regressor = XgboostRegressor(num_workers=sc.defaultParallelism)

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

  • لا يمكنك استخدام mlflow.xgboost.autolog مع XGBoost الموزعة.
  • لا يمكنك استخدام baseMarginCol مع XGBoost الموزعة.
  • لا يمكنك استخدام XGBoost الموزعة على نظام مجموعة مع تمكين التحجيم التلقائي. راجع تمكين التحجيم التلقائي للحصول على إرشادات لتعطيل التحجيم التلقائي.

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

إشعار

يتضمن Databricks Runtime 11.3 LTS ML XGBoost 1.6.1، والذي لا يدعم مجموعات وحدة معالجة الرسومات مع إمكانية الحوسبة 5.2 والإصدارات أدناه.

يدعم Databricks Runtime 9.1 LTS ML وما فوق مجموعات GPU لتدريب XGBoost. لاستخدام مجموعة GPU، قم بتعيين use_gpu إلى True.

على سبيل المثال:

classifier = XgboostClassifier(num_workers=N, use_gpu=True)
regressor = XgboostRegressor(num_workers=N, use_gpu=True)

استكشاف الأخطاء وإصلاحها

أثناء التدريب متعدد العقد، إذا واجهت رسالة NCCL failure: remote process exited or there was a network error ، فهذا يشير عادة إلى وجود مشكلة في اتصال الشبكة بين وحدات معالجة الرسومات. تنشأ هذه المشكلة عندما يتعذر على NCCL (مكتبة الاتصالات الجماعية NVIDIA) استخدام واجهات شبكة اتصال معينة لاتصالات GPU.

لحل المشكلة، قم بتعيين sparkConf لنظام المجموعة إلى spark.executorEnv.NCCL_SOCKET_IFNAME eth. يؤدي هذا بشكل أساسي إلى تعيين متغير NCCL_SOCKET_IFNAME البيئة إلى eth لكافة العاملين في العقدة.

مثال لدفتر الملاحظات

يعرض دفتر الملاحظات هذا استخدام حزمة sparkdl.xgboost Python مع Spark MLlib. تم sparkdl.xgboost إهمال الحزمة منذ Databricks Runtime 12.0 ML.

دفتر ملاحظات PySpark-XGBoost

الحصول على دفتر الملاحظات