在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)集成.
與Spark MLlib (Python)集成
預覽
此功能已在公共預覽.
Databricks Runtime 7.6 ML及以上包含基於Python的PySpark估計器xgboost
包,sparkdl.xgboost.XgboostRegressor
而且sparkdl.xgboost.XgboostClassifier
.您可以基於這些估計器創建ML管道。有關更多信息,請參見XGBoost for PySpark Pipeline.
請注意
- 中的以下參數
xgboost
軟件包不支持:gpu_id
,output_margin
,validate_features
.的參數kwargs
Databricks Runtime 9.0 ML及以上版本支持。 - 的參數
sample_weight
,eval_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數量的值。
例如:
分類器=XgboostClassifier(num_workers=N,**{其他參數個數})回歸量=XgboostRegressor(num_workers=N,**{其他參數個數})
分布式培訓的局限性
- 你不能使用
mlflow.xgboost.autolog
使用分布式XGBoost。 - 你不能使用
baseMarginCol
使用分布式XGBoost。 - 不能在啟用了自動伸縮的集群上使用分布式XGBoost。看到啟用並配置自動伸縮有關禁用自動縮放的說明。