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.spark
naar.
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 dexgboost.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_set
ensample_weight_eval_set
worden niet ondersteund. Gebruik in plaats daarvan de parametersweightCol
envalidationIndicatorCol
. Zie XGBoost voor PySpark Pipeline voor meer informatie. - De parameters
base_margin
enbase_margin_eval_set
worden niet ondersteund. Gebruik in plaats daarvan de parameterbaseMarginCol
. Zie XGBoost voor PySpark Pipeline voor meer informatie. - De parameter
missing
heeft verschillende semantiek van hetxgboost
pakket. In hetxgboost
pakket worden de nulwaarden in een SciPy-sparsematrix behandeld als ontbrekende waarden, ongeacht de waarde vanmissing
. Voor de PySpark-schattingen in hetsparkdl
pakket worden nulwaarden in een Spark-parseringsvector niet behandeld als ontbrekende waarden, tenzij u deze insteltmissing=0
. Als u een sparse trainingsgegevensset hebt (de meeste functiewaarden ontbreken), raadt Databricks aan om hetmissing=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.