Dela via


Distribuerad träning av XGBoost-modeller med hjälp av sparkdl.xgboost

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Kommentar

sparkdl.xgboost är inaktuell från och med Databricks Runtime 12.0 ML och tas bort i Databricks Runtime 13.0 ML och senare. Information om hur du migrerar dina arbetsbelastningar till xgboost.sparkfinns i Migreringsguide för den inaktuella sparkdl.xgboost-modulen.

Databricks Runtime ML innehåller PySpark-skattningar baserat på Python-paketet xgboostsparkdl.xgboost.XgboostRegressor och sparkdl.xgboost.XgboostClassifier. Du kan skapa en ML-pipeline baserat på dessa skattningar. Mer information finns i XGBoost för PySpark Pipeline.

Databricks rekommenderar starkt att sparkdl.xgboost användarna använder Databricks Runtime 11.3 LTS ML eller senare. Tidigare Databricks Runtime-versioner påverkas av buggar i äldre versioner av sparkdl.xgboost.

Kommentar

  • Modulen sparkdl.xgboost är inaktuell sedan Databricks Runtime 12.0 ML. Databricks rekommenderar att du migrerar koden för att använda modulen xgboost.spark i stället. Se migreringsguiden.
  • Följande parametrar från xgboost paketet stöds inte: gpu_id, output_margin, validate_features.
  • Parametrarna sample_weight, eval_setoch sample_weight_eval_set stöds inte. Använd i stället parametrarna weightCol och validationIndicatorCol. Mer information finns i XGBoost för PySpark Pipeline .
  • Parametrarna base_margin, och base_margin_eval_set stöds inte. Använd parametern baseMarginCol i stället. Mer information finns i XGBoost för PySpark Pipeline .
  • Parametern missing har olika semantik från xgboost paketet. xgboost I paketet behandlas nollvärdena i en SciPy-gles matris som saknade värden oavsett värdet missingför . För PySpark-skattningarna i sparkdl paketet behandlas inte nollvärden i en Spark-glesvektor som saknade värden om du inte anger missing=0. Om du har en gles träningsdatauppsättning (de flesta funktionsvärden saknas) rekommenderar Databricks inställning missing=0 för att minska minnesförbrukningen och uppnå bättre prestanda.

Distribuerad träning

Databricks Runtime ML stöder distribuerad XGBoost-träning med hjälp av parametern num_workers . Om du vill använda distribuerad träning skapar du en klassificerare eller regressor och anger num_workers ett värde som är mindre än eller lika med det totala antalet Spark-aktivitetsfack i klustret. Om du vill använda alla Spark-aktivitetsfack anger du num_workers=sc.defaultParallelism.

Till exempel:

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

Begränsningar för distribuerad träning

  • Du kan inte använda mlflow.xgboost.autolog med distribuerad XGBoost.
  • Du kan inte använda baseMarginCol med distribuerad XGBoost.
  • Du kan inte använda distribuerad XGBoost i ett kluster med automatisk skalning aktiverat. Se Aktivera autoskalning för instruktioner för att inaktivera automatisk skalning.

GPU-utbildning

Kommentar

Databricks Runtime 11.3 LTS ML innehåller XGBoost 1.6.1, som inte stöder GPU-kluster med beräkningskapacitet 5.2 och lägre.

Databricks Runtime 9.1 LTS ML och senare stöder GPU-kluster för XGBoost-träning. Om du vill använda ett GPU-kluster anger du use_gpu till True.

Till exempel:

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

Felsökning

Om du stöter på ett NCCL failure: remote process exited or there was a network error meddelande under träning med flera noder indikerar det vanligtvis ett problem med nätverkskommunikation mellan GPU:er. Det här problemet uppstår när NCCL (NVIDIA Collective Communications Library) inte kan använda vissa nätverksgränssnitt för GPU-kommunikation.

Lös problemet genom att ange klustrets sparkConf för spark.executorEnv.NCCL_SOCKET_IFNAME till eth. Detta anger i princip miljövariabeln NCCL_SOCKET_IFNAME till eth för alla arbetare i en nod.

Exempelnotebook-fil

Den här notebook-filen visar användningen av Python-paketet sparkdl.xgboost med Spark MLlib. Paketet sparkdl.xgboost är inaktuellt sedan Databricks Runtime 12.0 ML.

PySpark-XGBoost Notebook

Hämta notebook-fil