在Databricks上使用XGBoost

Databricks Runtime for Machine Learning包括用於Python和Scala的XGBoost庫。

警告

XGBoost 1.2.0及以下版本有一個錯誤這會導致共享Spark上下文如果XGBoost模型訓練失敗,將被殺死。恢複的唯一方法是重新啟動集群。Databricks Runtime 7.5 ML及以下版本包含一個受此錯誤影響的XGBoost版本。要安裝不同版本的XGBoost,請參見在Databricks上安裝XGBoost

在Python中使用XGBoost

你可以使用Python訓練模型xgboost包中。此包僅支持單節點工作負載。若要訓練PySpark ML管道並利用分布式訓練,請參閱與Spark MLlib (Python)集成

XGBoost Python筆記本

在新標簽頁打開筆記本

與Spark MLlib (Python)集成

預覽

此功能已在公共預覽

Databricks Runtime 7.6 ML及以上包含基於Python的PySpark估計器xgboost包,sparkdl.xgboost.XgboostRegressor而且sparkdl.xgboost.XgboostClassifier.您可以基於這些估計器創建ML管道。有關更多信息,請參見XGBoost for PySpark Pipeline

請注意

  • 中的以下參數xgboost軟件包不支持:gpu_idoutput_marginvalidate_features.的參數kwargsDatabricks Runtime 9.0 ML及以上版本支持。
  • 的參數sample_weighteval_set,sample_weight_eval_set不支持。相反,使用參數weightCol而且validationIndicatorCol.看到XGBoost for PySpark Pipeline獲取詳細信息。
  • 的參數base_margin,base_margin_eval_set不支持。在Databricks Runtime 9.0 ML及以上版本中,可以使用該參數baseMarginCol代替。看到XGBoost for PySpark Pipeline獲取詳細信息。
  • 的參數失蹤xgboost包中。在xgboost包時,無論的值如何,SciPy稀疏矩陣中的零值都被視為缺失值失蹤.中的PySpark估計器sparkdl包中,Spark稀疏向量中的零值不會被視為缺失值,除非您設置失蹤= 0.如果你有一個稀疏的訓練數據集(大多數特征值缺失),Databricks建議設置失蹤= 0減少內存消耗,實現更好的性能。

分布式訓練

Databricks Runtime 9.0 ML及以上版本支持分布式XGBoost訓練num_workers參數。要使用分布式訓練,請創建分類器或回歸器並設置num_workers到小於或等於集群上的worker數量的值。

例如:

分類器XgboostClassifiernum_workersN**其他參數個數})回歸量XgboostRegressornum_workersN**其他參數個數})

分布式培訓的局限性

  • 你不能使用mlflow.xgboost.autolog使用分布式XGBoost。
  • 你不能使用baseMarginCol使用分布式XGBoost。
  • 不能在啟用了自動伸縮的集群上使用分布式XGBoost。看到啟用並配置自動伸縮有關禁用自動縮放的說明。

GPU培訓

Databricks Runtime 9.0 ML及以上版本支持GPU集群進行XGBoost訓練。使用GPU集群時,設置use_gpu真正的

例如:

分類器XgboostClassifiernum_workersNuse_gpu真正的**其他參數個數})回歸量XgboostRegressornum_workersNuse_gpu真正的**其他參數個數})

Python與Spark MLlib集成的示例筆記本

PySpark-XGBoost筆記本

在新標簽頁打開筆記本

與Spark MLlib (Scala)集成

本節中的示例將展示如何在MLlib中使用XGBoost。第一個示例展示了如何將XGBoost模型嵌入MLlib ML管道。第二個示例展示了如何使用MLlib交叉驗證來調優XGBoost模型。

用XGBoost分類ML流水線筆記本

在新標簽頁打開筆記本

XGBoost回歸與交叉驗證筆記本

在新標簽頁打開筆記本