Partager via


Entraînement distribué de modèles XGBoost à l’aide de sparkdl.xgboost

Important

Cette fonctionnalité est disponible en préversion publique.

Notes

sparkdl.xgboost est déconseillé à partir de Databricks Runtime 12.0 ML et est supprimé dans Databricks Runtime 13.0 ML et versions ultérieures. Pour plus d’informations sur la migration de vos charges de travail vers xgboost.spark, consultez Guide de migration du module déprécié sparkdl.xgboost.

Databricks Runtime 7.6 ML inclut des estimateurs PySpark basés sur le package Python xgboost, sparkdl.xgboost.XgboostRegressor et sparkdl.xgboost.XgboostClassifier. Vous pouvez créer un pipeline de ML basé sur ces estimateurs. Pour plus d’informations, consultez XGBoost for PySpark Pipeline.

Databricks recommande fortement aux utilisateurs de sparkdl.xgboost d’utiliser Databricks Runtime 11.3 ML ou des versions ultérieures. Les versions antérieures de Databricks Runtime sont affectées par des bogues dans les versions antérieures de sparkdl.xgboost.

Notes

  • Le module sparkdl.xgboost est déconseillé depuis Databricks Runtime 12.0 ML. Databricks vous recommande de migrer votre code pour utiliser le module xgboost.spark à la place. Consultez le guide de migration.
  • Les paramètres suivants du package xgboost ne sont pas pris en charge : gpu_id, output_margin, validate_features.
  • Les paramètres sample_weight, eval_set et sample_weight_eval_set ne sont pas pris en charge. Utilisez plutôt les paramètres weightCol et validationIndicatorCol. Pour plus d’informations, consultez XGBoost for PySpark Pipeline.
  • Les paramètres base_margin et base_margin_eval_set ne sont pas pris en charge. Utilisez le paramètre baseMarginCol à la place. Pour plus d’informations, consultez XGBoost for PySpark Pipeline.
  • Le paramètre missing a une sémantique différente de celle du package xgboost. Dans le package xgboost, les valeurs zéro dans une matrice éparse SciPy sont traitées comme des valeurs manquantes, quelle que soit la valeur de missing. Pour les estimateurs PySpark dans le package sparkdl, les valeurs zéro dans un vecteur épars Spark ne sont pas traitées comme des valeurs manquantes, sauf si vous définissez missing=0. Si vous disposez d’un jeu de données de formation épars (la plupart des valeurs de fonctionnalité sont manquantes), Databricks recommande de définir missing=0 pour réduire la consommation de mémoire et obtenir de meilleures performances.

Entraînement distribué

Databricks Runtime 9.0 ML prend en charge l’entraînement XGBoost distribué en utilisant le paramètre num_workers. Pour utiliser un entraînement distribué, créez un classifieur ou un régresseur et définissez num_workers sur une valeur inférieure ou égale au nombre total d’emplacements de tâches Spark sur votre cluster. Pour utiliser tous les emplacements de tâches Spark, définissez num_workers=sc.defaultParallelism.

Par exemple :

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

Limites de la formation distribuée

  • Vous ne pouvez pas utiliser mlflow.xgboost.autolog avec XGBoost distribué.
  • Vous ne pouvez pas utiliser baseMarginCol avec XGBoost distribué.
  • Vous ne pouvez pas utiliser XGBoost distribué sur un cluster pour lequel la mise à l’échelle automatique est activée. Consultez Activer la mise à l’échelle automatique pour obtenir des instructions sur la désactivation de la mise à l’échelle automatique.

Formation du GPU

Notes

Databricks Runtime 11.3 LTS ML inclut XGBoost 1.6.1, qui ne prend pas en charge les clusters GPU avec la capacité de calcul 5.2 et versions antérieures.

Databricks Runtime 9.1 LTS ML et les versions ultérieures prennent en charge les clusters GPU pour l’entraînement XGBoost. Pour utiliser un cluster GPU, définissez use_gpu sur True.

Par exemple :

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

Exemple de bloc-notes

Ce notebook montre l’utilisation du package Python sparkdl.xgboost avec Spark MLlib. Le package sparkdl.xgboost est déprécié depuis Databricks Runtime 12.0 ML.

Notebook PySpark-XGBoost

Obtenir le notebook