XGBoost モデルの分散トレーニング sparkdl.xgboost
プレビュー
この機能は パブリック プレビュー段階です。
sparkdl.xgboost
は、Databricks Runtime 12.0 ML 以降で非推奨となり、Databricks Runtime 13.0 ML 以降では削除されています。 ワークロードの xgboost.spark
Microsoft への移行に関する情報については、 非推奨の 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
を使用します。 詳細については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
を設定します。
例えば:
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
に設定します。
例えば:
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_IFNAME
を eth
に設定します。 これにより、基本的に、ノード内のすべてのワーカーの環境変数 THE NCCL_SOCKET_IFNAME
が eth
に設定されます。
ノートブックの例
このノートブックでは、Spark MLlib で sparkdl.xgboost
Python パッケージを使用する方法を示します。 sparkdl.xgboost
パッケージは Databricks Runtime 12.0 ML以降非推奨です。