التدريب الموزع لنماذج 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.XgboostClassifier
sparkdl.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.