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

プレビュー

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

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

Databricks ランタイム 機械学習には、Python xgboost パッケージ、 sparkdl.xgboost.XgboostRegressor 、および sparkdl.xgboost.XgboostClassifierに基づく PySpark 推定器が含まれています。 これらの推定量に基づいて機械学習パイプラインを作成できます。 詳細については、「 XGBoost for PySpark パイプライン」を参照してください。

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

  • sparkdl.xgboost モジュールは Databricks Runtime ML12.0 で非推奨となりました。 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 スパース行列のゼロ値は、 missingの値に関係なく欠損値として扱われます。sparkdl パッケージの PySpark 推定器の場合、Spark スパース ベクトルのゼロ値は、 を設定しない限り欠損値として扱われ missing=0。スパース トレーニング データセットがある場合 (ほとんどの特徴値が欠落している場合)、Databricks では、メモリ消費量を削減してパフォーマンスを向上させるために missing=0 を設定することをお勧めします。

分散トレーニング

Databricks Runtime ML 、num_workers 引数を使用した分散XGBoostトレーニングをサポートします。 分散トレーニングを使用するには、分類子または回帰子を作成し、 num_workersをクラスター上の Spark タスク スロットの合計数以下の値に設定します。 すべての 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)

トラブルシューティング

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

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

ノートブックの例

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

PySpark-XGBoostノートブック

ノートブックを新しいタブで開く