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_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 スパース行列のゼロ値は、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_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 をspark.executorEnv.NCCL_SOCKET_IFNAME
に対してeth
に設定します。 これは基本的に、ノード内のすべてのワーカーの環境変数NCCL_SOCKET_IFNAME
をeth
に設定します。