Freigeben über


Verteiltes Training von XGBoost-Modellen mit sparkdl.xgboost

Wichtig

Dieses Feature befindet sich in der Public Preview.

Hinweis

sparkdl.xgboost ist ab Databricks Runtime 12.0 ML veraltet und wird in Databricks Runtime 13.0 ML und höher entfernt. Informationen zum Migrieren Ihrer Workloads zu xgboost.spark finden Sie im Migrationsleitfaden für das veraltete Sparkdl.xgboost-Modul.

Databricks Runtime ML enthält PySpark-Schätzer, die auf dem Python-Paket xgboost, sparkdl.xgboost.XgboostRegressor und sparkdl.xgboost.XgboostClassifier basieren. Sie können eine ML Pipeline basierend auf diesen Estimators erstellen. Weitere Informationen finden Sie unter XGBoost für PySpark Pipeline.

Databricks empfiehlt dringend, dass sparkdl.xgboost-Benutzer Databricks Runtime 11.3 ML oder höher verwenden. Frühere Databricks Runtime-Versionen sind von Fehlern in älteren Versionen von sparkdl.xgboost betroffen.

Hinweis

  • Das sparkdl.xgboost-Modul ist seit Databricks Runtime 12.0 ML veraltet. Databricks empfiehlt, ihren Code zu migrieren, um stattdessen das xgboost.spark-Modul zu verwenden. Weitere Informationen finden Sie im Migrationsleitfaden.
  • Die folgenden Parameter aus dem Paket xgboost werden nicht unterstützt: gpu_id, output_margin, validate_features.
  • Die Parameter sample_weight, eval_set und sample_weight_eval_set werden nicht unterstützt. Verwenden Sie stattdessen die Parameter weightCol und validationIndicatorCol. Weitere Informationen finden Sie unter XGBoost für die PySpark-Pipeline.
  • Die Parameter base_margin und base_margin_eval_set werden nicht unterstützt. Verwenden Sie stattdessen den baseMarginCol-Parameter. Weitere Informationen finden Sie unter XGBoost für die PySpark-Pipeline.
  • Der Parameter missing weist eine andere Semantik als das Paket xgboost auf. Im Paket xgboost werden die Nullwerte in einer SciPy-Sparsematrix unabhängig vom Wert von missing als fehlende Werte behandelt. Für die PySpark-Estimators im Paket sparkdl werden Nullwerte in einem Spark-Sparsevektor nicht als fehlende Werte behandelt, es sei denn, Sie legen missing=0 fest. Wenn Sie über ein Trainingsdataset mit geringer Dichte verfügen (die meisten Featurewerte fehlen), empfiehlt Databricks, die Einstellung missing=0 festzulegen, um den Arbeitsspeicherverbrauch zu reduzieren und eine bessere Leistung zu erzielen.

Verteiltes Training

Databricks Runtime ML unterstützt verteiltes XGBoost-Training mithilfe des Parameters num_workers. Um verteiltes Training zu verwenden, erstellen Sie einen Klassifizierer oder Regressor, und legen Sie num_workers auf einen Wert fest, der kleiner oder gleich der Gesamtanzahl der Spark-Aufgabenslots in Ihrem Cluster ist. Um alle Spark-Aufgabenslots zu verwenden, legen Sie num_workers=sc.defaultParallelism fest.

Zum Beispiel:

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

Einschränkungen des verteilten Trainings

  • Sie können mlflow.xgboost.autolog nicht mit verteiltem XGBoost verwenden.
  • Sie können baseMarginCol nicht mit verteiltem XGBoost verwenden.
  • Sie können verteiltes XGBoost nicht in einem Cluster mit aktivierter automatischer Skalierung verwenden. Anweisungen zum Deaktivieren der automatischen Skalierung finden Sie unter Aktivieren der automatischen Skalierung.

GPU-Training

Hinweis

Databricks Runtime 11.3 LTS ML enthält XGBoost 1.6.1, das keine GPU-Cluster mit Computefunktionalität 5.2 und niedriger unterstützt.

Databricks Runtime 9.1 LTS ML und höher unterstützen GPU-Cluster für XGBoost-Training. Um einen GPU-Cluster zu verwenden, legen Sie use_gpu auf True fest.

Beispiele:

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

Notebook mit Beispielen

Dieses Notebook zeigt die Verwendung des Python-Pakets sparkdl.xgboost mit Spark MLlib. Das Paket sparkdl.xgboost ist seit Databricks Runtime ML 12.0 veraltet.

PySpark-XGBoost Notebook

Notebook abrufen