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

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.XgboostRegressor 、 sparkdl.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_id、output_margin、validate_featuresのパラメーターはサポートされていません。
  • パラメーター sample_weight、 eval_set、および sample_weight_eval_set はサポートされていません。 代わりに、パラメーター の weightCol と validationIndicatorColを使用します。 詳細についてはPySparkパイプラインにおけるXGBoost を参照してください。
  • パラメーター 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_gpu を Trueに設定します。

例えば:

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 通信に使用できない場合に発生します。

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

ノートブックの例​

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

PySpark-XGBoost ノートブック