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.spark
finns i Migreringsguide för den inaktuella sparkdl.xgboost-modulen.
Databricks Runtime ML innehåller PySpark-skattningar baserat på Python-paketet xgboost
sparkdl.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 modulenxgboost.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_set
ochsample_weight_eval_set
stöds inte. Använd i stället parametrarnaweightCol
ochvalidationIndicatorCol
. Mer information finns i XGBoost för PySpark Pipeline . - Parametrarna
base_margin
, ochbase_margin_eval_set
stöds inte. Använd parameternbaseMarginCol
i stället. Mer information finns i XGBoost för PySpark Pipeline . - Parametern
missing
har olika semantik frånxgboost
paketet.xgboost
I paketet behandlas nollvärdena i en SciPy-gles matris som saknade värden oavsett värdetmissing
för . För PySpark-skattningarna isparkdl
paketet behandlas inte nollvärden i en Spark-glesvektor som saknade värden om du inte angermissing=0
. Om du har en gles träningsdatauppsättning (de flesta funktionsvärden saknas) rekommenderar Databricks inställningmissing=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.