重要
この機能はパブリック プレビュー段階にあります。
注
sparkdl.xgboost は Databricks Runtime 12.0 ML 以降では非推奨であり、Databricks Runtime 13.0 ML 以降では削除されています。 ワークロードを xgboost.sparkに移行する方法については、 非推奨の sparkdl.xgboost モジュールの移行ガイドを参照してください。
Databricks Runtime ML には、Python xgboost パッケージ、sparkdl.xgboost.XgboostRegressor、sparkdl.xgboost.XgboostClassifier に基づく PySpark Estimator が含まれます。 これらの Estimator に基づいて ML パイプラインを作成できます。 詳細については、PySpark Pipeline 用の XGBoost に関する記事を参照してください。
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 Pipeline 用の XGBoost に関する記事を参照してください。 - パラメーター
base_marginおよびbase_margin_eval_setはサポートされていません。 代わりに、パラメーターbaseMarginColを使用してください。 詳細については、PySpark Pipeline 用の XGBoost に関する記事を参照してください。 - パラメーター
missingには、xgboostパッケージとは異なるセマンティクスがあります。xgboostパッケージでは、SciPy 疎行列の 0 値は、missingの値に関係なく欠損値として扱われます。sparkdlパッケージ内の PySpark Estimator の場合、missing=0を設定しない限り、Spark 疎ベクター内の 0 値は欠損値として扱われません。 疎トレーニング データセット (ほとんどの機能の値が欠落しています) がある場合、Databricks では、メモリ消費量を減らし、パフォーマンスを向上させるためにmissing=0を設定することをお勧めします。
分散トレーニング
Databricks Runtime ML では、num_workers パラメーターを使用した分散 XGBoost トレーニングがサポートされています。 分散トレーニングを使用するには、分類子またはリグレッザーを作成し、クラスター上の Spark タスク スロットの総数以下の値に num_workers を設定します。 すべての 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 Library) が GPU 通信に特定のネットワーク インターフェイスを使用できない場合に発生します。
解決するには、クラスターの sparkConf for spark.executorEnv.NCCL_SOCKET_IFNAME を eth に設定します。 これにより、基本的に環境変数 NCCL_SOCKET_IFNAME がノード内のすべてのワーカーに対して eth に設定されます。
ノートブックの例
このノートブックは、Spark MLlib での Python パッケージ sparkdl.xgboost の使用を示しています。
sparkdl.xgboost パッケージは、Databricks Runtime 12.0 ML 以降では非推奨となっています。