次の方法で共有


sparkdl.xgboost を使用した XGBoost モデルの分散トレーニング

重要

この機能はパブリック プレビュー段階にあります。

Note

sparkdl.xgboost は Databricks Runtime 12.0 ML 以降では非推奨であり、Databricks Runtime 13.0 ML 以降では削除されています。 xgboost.spark へのワークロードの移行の詳細については、「非推奨の sparkdl.xgboost モジュールの移行ガイド」を参照してください。

Databricks Runtime ML には、Python xgboost パッケージ、sparkdl.xgboost.XgboostRegressorsparkdl.xgboost.XgboostClassifier に基づく PySpark Estimator が含まれます。 これらの Estimator に基づいて ML パイプラインを作成できます。 詳細については、PySpark Pipeline 用の XGBoost に関する記事を参照してください。

Databricks では、sparkdl.xgboost ユーザーが Databricks Runtime 11.3 LTS ML 以降を使用することを強くお勧めします。 以前のバージョンの Databricks Runtime は、sparkdl.xgboost の古いバージョンにあるバグに影響を受けます。

注意

  • sparkdl.xgboost モジュールは、Databricks Runtime 12.0 ML 以降では非推奨となっています。 Databricks では、代わりに xgboost.spark モジュールを使用するようにコードを移行することが推奨されています。 移行ガイドを参照してください。
  • xgboost パッケージのパラメーター gpu_idoutput_marginvalidate_features はサポートされていません。
  • パラメーター sample_weighteval_setsample_weight_eval_set はサポートされていません。 代わりに、パラメーター weightColvalidationIndicatorCol を使用します。 詳細については、PySpark Pipeline 用の XGBoost に関する記事を参照してください。
  • パラメーター base_margin および base_margin_eval_set はサポートされていません。 代わりに、パラメーター baseMarginCol を使用してください。 詳細については、PySpark Pipeline 用の XGBoost に関する記事を参照してください。
  • パラメーター missing には、xgboost パッケージとは異なるセマンティクスがあります。 xgboost パッケージでは、SciPy 疎行列の 0 値は、missing の値に関係なく欠損値として扱われます。 sparkdl パッケージ内の PySpark Estimator の場合、missing=0 を設定しない限り、Spark 疎ベクター内の 0 値は欠損値として扱われません。 疎トレーニング データセット (ほとんどの機能の値が欠落しています) がある場合、Databricks では、メモリ消費量を減らし、パフォーマンスを向上させるために missing=0 を設定することをお勧めします。

分散トレーニング

Databricks Runtime ML では、num_workers パラメーターを使用した分散 XGBoost トレーニングがサポートされています。 分散トレーニングを使用するには、分類子またはリグレッザーを作成し、クラスター上の Spark タスク スロットの総数以下の値に num_workers を設定します。 すべての Spark タスク スロットを使用するには、num_workers=sc.defaultParallelism を設定します。

次に例を示します。

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

分散トレーニングの制限

  • 分散 XGBoost では mlflow.xgboost.autolog を使用できません。
  • 分散 XGBoost では baseMarginCol を使用できません。
  • 自動スケールが有効になっているクラスターで分散 XGBoost を使用することはできません。 自動スケールを無効にする手順については、「自動スケールを有効にする」 を参照してください。

GPU トレーニング

注意

Databricks Runtime 11.3 LTS ML には XGBoost 1.6.1 が含まれています。これは、コンピューティング機能 5.2 以下の GPU クラスターをサポートしていません。

Databricks Runtime 9.1 LTS ML 以上では、XGBoost トレーニング用の GPU クラスターがサポートされています。 GPU クラスターを使用するには、use_gpuTrue に設定します。

次に例を示します。

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

ノートブックの例

このノートブックは、Spark MLlib での Python パッケージ sparkdl.xgboost の使用を示しています。 sparkdl.xgboost パッケージは、Databricks Runtime 12.0 ML 以降では非推奨となっています。

PySpark-XGBoost ノートブック

ノートブックを入手