Delen via


Gedistribueerde training van XGBoost-modellen met behulp van sparkdl.xgboost

Belangrijk

Deze functie is beschikbaar als openbare preview.

Notitie

sparkdl.xgboost wordt afgeschaft vanaf Databricks Runtime 12.0 ML en wordt verwijderd in Databricks Runtime 13.0 ML en hoger. Zie de migratiehandleiding voor de afgeschafte sparkdl.xgboost-module voor informatie over het migreren van uw workloads xgboost.sparknaar.

Databricks Runtime ML bevat PySpark-schattingen op basis van het Python-pakket xgboost sparkdl.xgboost.XgboostRegressor en sparkdl.xgboost.XgboostClassifier. U kunt een ML-pijplijn maken op basis van deze schattingen. Zie XGBoost voor PySpark Pipeline voor meer informatie.

Databricks raadt sparkdl.xgboost gebruikers ten zeerste aan Databricks Runtime 11.3 LTS ML of hoger te gebruiken. Eerdere Databricks Runtime-versies worden beïnvloed door bugs in oudere versies van sparkdl.xgboost.

Notitie

  • De sparkdl.xgboost module is afgeschaft sinds Databricks Runtime 12.0 ML. Databricks raadt u aan uw code te migreren om in plaats daarvan de xgboost.spark module te gebruiken. Zie de migratiehandleiding.
  • De volgende parameters van het xgboost pakket worden niet ondersteund: gpu_id, output_margin, validate_features.
  • De parameters sample_weight, eval_seten sample_weight_eval_set worden niet ondersteund. Gebruik in plaats daarvan de parameters weightCol en validationIndicatorCol. Zie XGBoost voor PySpark Pipeline voor meer informatie.
  • De parameters base_marginen base_margin_eval_set worden niet ondersteund. Gebruik in plaats daarvan de parameter baseMarginCol . Zie XGBoost voor PySpark Pipeline voor meer informatie.
  • De parameter missing heeft verschillende semantiek van het xgboost pakket. In het xgboost pakket worden de nulwaarden in een SciPy-sparsematrix behandeld als ontbrekende waarden, ongeacht de waarde van missing. Voor de PySpark-schattingen in het sparkdl pakket worden nulwaarden in een Spark-parseringsvector niet behandeld als ontbrekende waarden, tenzij u deze instelt missing=0. Als u een sparse trainingsgegevensset hebt (de meeste functiewaarden ontbreken), raadt Databricks aan om het missing=0 geheugenverbruik te verminderen en betere prestaties te bereiken.

Gedistribueerde training

Databricks Runtime ML ondersteunt gedistribueerde XGBoost-training met behulp van de num_workers parameter. Als u gedistribueerde training wilt gebruiken, maakt u een classificatie of regressor en stelt u num_workers deze in op een waarde die kleiner is dan of gelijk is aan het totale aantal Spark-taaksites in uw cluster. Als u de alle Spark-taaksites wilt gebruiken, stelt u deze in num_workers=sc.defaultParallelism.

Voorbeeld:

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

Beperkingen van gedistribueerde training

  • U kunt niet gebruiken mlflow.xgboost.autolog met gedistribueerde XGBoost.
  • U kunt niet gebruiken baseMarginCol met gedistribueerde XGBoost.
  • U kunt gedistribueerde XGBoost niet gebruiken op een cluster waarvoor automatisch schalen is ingeschakeld. Zie Automatische schaalaanpassing inschakelen voor instructies voor het uitschakelen van automatisch schalen.

GPU-training

Notitie

Databricks Runtime 11.3 LTS ML bevat XGBoost 1.6.1, die geen ONDERSTEUNING biedt voor GPU-clusters met rekencapaciteit 5.2 en lager.

Databricks Runtime 9.1 LTS ML en hoger ondersteunen GPU-clusters voor XGBoost-training. Als u een GPU-cluster wilt gebruiken, stelt u deze in use_gpu op True.

Voorbeeld:

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

Probleemoplossing

Tijdens training met meerdere knooppunten, als u een NCCL failure: remote process exited or there was a network error bericht tegenkomt, duidt dit meestal op een probleem met netwerkcommunicatie tussen GPU's. Dit probleem treedt op wanneer NCCL (NVIDIA Collective Communications Library) bepaalde netwerkinterfaces voor GPU-communicatie niet kan gebruiken.

U kunt dit oplossen door de sparkConf van het cluster in te stellen op spark.executorEnv.NCCL_SOCKET_IFNAME eth. Hiermee stelt u de omgevingsvariabele NCCL_SOCKET_IFNAME eth in feite in voor alle werkrollen in een knooppunt.

Voorbeeld van notebook

Dit notebook toont het gebruik van het Python-pakket sparkdl.xgboost met Spark MLlib. Het sparkdl.xgboost pakket is afgeschaft sinds Databricks Runtime 12.0 ML.

PySpark-XGBoost-notebook

Notebook downloaden