Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Addestramento distribuito dei modelli XGBoost utilizzando
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Nota
sparkdl.xgboost è deprecato a partire da Databricks Runtime 12.0 ML e viene rimosso in Databricks Runtime 13.0 ML e versioni successive. Per informazioni sulla migrazione dei carichi di lavoro a xgboost.spark, vedere Guida alla migrazione per il modulo deprecatosparkdl.xgboost.
Databricks Runtime ML include gli estimatori PySpark basati sul pacchetto xgboost di Python, sparkdl.xgboost.XgboostRegressor e sparkdl.xgboost.XgboostClassifier. È possibile creare una pipeline ML basata su queste stime. Per altre informazioni, vedere XGBoost per pySpark Pipeline.
Databricks consiglia vivamente agli utenti sparkdl.xgboost di usare Databricks Runtime 11.3 LTS ML o versione successiva. Le versioni precedenti di Databricks Runtime sono interessate da bug nelle versioni precedenti di sparkdl.xgboost.
Nota
- Il modulo
sparkdl.xgboostè deprecato a partire da Databricks Runtime 12.0 ML. Databricks consiglia di eseguire invece la migrazione del codice per usare il moduloxgboost.spark. Vedere la guida alla migrazione. - I parametri seguenti del pacchetto di
xgboostnon sono supportati:gpu_id,output_margin,validate_features. - I parametri
sample_weight,eval_setesample_weight_eval_setnon sono supportati. Usare invece i parametriweightColevalidationIndicatorCol. Per informazioni dettagliate, vedere XGBoost per la pipeline PySpark. - I parametri
base_marginebase_margin_eval_setnon sono supportati. Usare invece il parametrobaseMarginCol. Per informazioni dettagliate, vedere XGBoost per la pipeline PySpark. - Il parametro
missingha una semantica diversa dal pacchettoxgboost. Nel pacchettoxgboosti valori zero in una matrice di tipo sparse SciPy vengono considerati valori mancanti indipendentemente dal valore dimissing. Per gli estimatori PySpark nel pacchettosparkdl, i valori zero in un vettore di tipo sparse Spark non vengono considerati come valori mancanti, a meno che non si impostimissing=0. Se si dispone di un set di dati di training di tipo sparse (la maggior parte dei valori delle funzionalità è mancante), Databricks consiglia di impostaremissing=0per ridurre il consumo di memoria e ottenere prestazioni migliori.
Training distribuito
Databricks Runtime ML supporta il training XGBoost distribuito usando il parametro num_workers. Per usare il training distribuito, creare un classificatore o un regressore e impostare num_workers su un valore minore o uguale al numero totale di slot di attività Spark nel cluster. Per utilizzare tutti gli slot di attività Spark, impostare num_workers=sc.defaultParallelism.
Ad esempio:
classifier = XgboostClassifier(num_workers=sc.defaultParallelism)
regressor = XgboostRegressor(num_workers=sc.defaultParallelism)
Limitazioni del training distribuito
- Non è possibile usare
mlflow.xgboost.autologcon XGBoost distribuito. - Non è possibile usare
baseMarginColcon XGBoost distribuito. - Non è possibile usare XGBoost distribuito in un cluster con scalabilità automatica abilitata. Per istruzioni su come disabilitare la scalabilità automatica, vedere Abilitare la scalabilità automatica.
Training della GPU
Nota
Databricks Runtime 11.3 LTS ML include XGBoost 1.6.1, che non supporta cluster GPU con funzionalità di calcolo 5.2 e versioni precedenti.
Databricks Runtime 9.1 LTS ML e versioni successive supportano i cluster GPU per il training XGBoost. Per usare un cluster GPU, impostare use_gpu su True.
Ad esempio:
classifier = XgboostClassifier(num_workers=N, use_gpu=True)
regressor = XgboostRegressor(num_workers=N, use_gpu=True)
Risoluzione dei problemi
Durante il training a più nodi, se viene visualizzato un messaggio NCCL failure: remote process exited or there was a network error, in genere indica un problema con la comunicazione di rete tra GPU. Questo problema si verifica quando NCCL (NVIDIA Collective Communications Library) non può usare determinate interfacce di rete per la comunicazione GPU.
Per risolvere il problema, impostare sparkConf del cluster su spark.executorEnv.NCCL_SOCKET_IFNAMEeth. In pratica, la variabile di ambiente NCCL_SOCKET_IFNAME viene impostata su eth per tutti i ruoli di lavoro in un nodo.
Notebook di esempio
Questo notebook illustra l'uso del pacchetto Python sparkdl.xgboost con Spark MLlib. Il pacchetto sparkdl.xgboost è deprecato a partire da Databricks Runtime 12.0 ML.
Notebook PySpark-XGBoost
Ottieni il notebook