다음을 통해 공유


sparkdl.xgboost를 사용하여 XGBoost 모델의 분산 학습

Important

이 기능은 공개 미리 보기 상태입니다.

참고 항목

sparkdl.xgboost 은 Databricks Runtime 12.0 ML부터 사용되지 않으며 Databricks Runtime 13.0 ML 이상에서 제거됩니다. 워크로드를 xgboost.spark로 마이그레이션하는 방법에 대한 자세한 내용은 사용되지 않는 sparkdl.xgboost 모듈에 대한 마이그레이션 가이드를 참조하세요.

Databricks Runtime ML 이상에는 Python xgboost 패키지, sparkdl.xgboost.XgboostRegressorsparkdl.xgboost.XgboostClassifier 기반 PySpark 추정기가 포함되어 있습니다. 이러한 추정기를 기반으로 ML 파이프라인을 만들 수 있습니다. 자세한 내용은 PySpark 파이프라인용 XGBoost를 참조하세요.

Databricks에서는 sparkdl.xgboost 사용자가 Databricks Runtime 11.3 LTS ML 이상을 사용하는 것을 강력히 권장합니다. 이전 Databricks Runtime 버전은 이전 버전 sparkdl.xgboost의 버그로부터 영향을 받습니다.

참고 항목

  • sparkdl.xgboost 모듈은 Databricks Runtime ML 12.0 이후 사용되지 않습니다. Databricks에서는 xgboost.spark 모듈을 대신 사용하도록 코드를 마이그레이션하는 것을 권장합니다. 마이그레이션 가이드를 참조하세요.
  • xgboost 패키지의 gpu_id, output_margin, validate_features 매개 변수는 지원되지 않습니다.
  • sample_weight, eval_setsample_weight_eval_set 매개 변수는 지원되지 않습니다. 대신 weightColvalidationIndicatorCol 매개 변수를 사용합니다. 자세한 내용은 PySpark 파이프라인용 XGBoost를 참조하세요.
  • base_marginbase_margin_eval_set 매개 변수는 지원되지 않습니다. 대신 매개 변수 baseMarginCol을 사용합니다. 자세한 내용은 PySpark 파이프라인용 XGBoost를 참조하세요.
  • 매개 변수 missingxgboost 패키지와 다른 의미 체계를 갖습니다. xgboost 패키지에서 SciPy 희소 행렬의 0 값은 missing 값에 관계없이 결측값으로 처리됩니다. sparkdl 패키지의 PySpark 추정기의 경우 missing=0를 설정하지 않는 한 Spark 희소 벡터의 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에는 컴퓨팅 기능 5.2 이하의 GPU 클러스터를 지원하지 않는 XGBoost 1.6.1이 포함되어 있습니다.

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 집단 통신 라이브러리)이 GPU 통신에 특정 네트워크 인터페이스를 사용할 수 없는 경우에 발생합니다.

이 문제를 해결하려면, 클러스터의 sparkConf를 spark.executorEnv.NCCL_SOCKET_IFNAMEeth로 설정합니다. 이는 기본적으로 노드의 모든 작업자에 대해 환경 변수 NCCL_SOCKET_IFNAMEeth로 설정합니다.

예제 Notebook

이 Notebook은 Spark MLlib와 함께 sparkdl.xgboost Python 패키지를 사용하는 것을 보여줍니다. sparkdl.xgboost 패키지는 Databricks Runtime 12.0 ML 이후 사용되지 않습니다.

PySpark-XGBoost Notebook

Notebook 가져오기