メインコンテンツまでスキップ

XGBoost モデルの分散トレーニング sparkdl.xgboost

備考

プレビュー

この機能は パブリック プレビュー段階です。

注記

sparkdl.xgboost は、Databricks Runtime 12.0 ML 以降で非推奨となり、Databricks Runtime 13.0 ML 以降では削除されています。 ワークロードの xgboost.sparkMicrosoft への移行に関する情報については、 非推奨の sparkdl.xgboost モジュールの移行ガイドを参照してください。

Databricks Runtime ML には、Python xgboost パッケージ、 sparkdl.xgboost.XgboostRegressorsparkdl.xgboost.XgboostClassifierに基づく PySpark 推定機能が含まれています。 これらの推定量に基づいて ML パイプラインを作成できます。 詳細については、「XGBoost PySparkパイプラインの 」を参照してください。

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_set、および sample_weight_eval_set はサポートされていません。 代わりに、パラメーター の weightColvalidationIndicatorColを使用します。 詳細についてはXGBoost for パイプラインPySpark を参照してください。
  • パラメーター base_margin、および base_margin_eval_set はサポートされていません。 代わりに baseMarginCol パラメーターを使用してください。 詳細についてはXGBoost for パイプラインPySpark を参照してください。
  • パラメーター missing のセマンティクスは、 xgboost パッケージとは異なります。 xgboost パッケージでは、SciPy スパース行列の 0 値は、 missingの値に関係なく欠損値として扱われます。sparkdl パッケージの PySpark 推定器の場合、Spark スパース ベクトルの 0 値は、 missing=0を設定しない限り欠損値として扱われません。スパース トレーニング データセットがある場合 (ほとんどの特徴値が欠落している)、Databricks では、メモリ消費量を削減し、パフォーマンスを向上させるために missing=0 を設定することをお勧めします。

分散トレーニング

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

例えば:

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

分散トレーニングの制限事項

  • mlflow.xgboost.autolog は分散 XGBoost では使用できません。
  • baseMarginCol は分散 XGBoost では使用できません。
  • オートスケールが有効になっているクラスターでは、分散 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に設定します。

例えば:

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

トラブルシューティング

マルチノード トレーニング中に NCCL failure: remote process exited or there was a network error メッセージが表示された場合、通常は GPU 間のネットワーク通信に問題があることを示しています。 この問題は、NCCL (NVIDIA Collective Communications ライブラリ) が特定のネットワーク インターフェイスを GPU 通信に使用できない場合に発生します。

解決するには、クラスターの sparkConf for spark.executorEnv.NCCL_SOCKET_IFNAMEethに設定します。 これにより、基本的に、ノード内のすべてのワーカーの環境変数 THE NCCL_SOCKET_IFNAMEeth に設定されます。

ノートブックの例

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

PySpark-XGBoost ノートブック

Open notebook in new tab