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.XgboostRegressor
기반으로 하는 PySpark 추정기가 포함됩니다 sparkdl.xgboost.XgboostClassifier
. 이러한 추정기를 기반으로 ML 파이프라인을 만들 수 있습니다. 자세한 내용은 PySpark 파이프라인용 XGBoost를 참조하세요.
Databricks는 사용자가 Databricks Runtime 11.3 LTS ML 이상을 사용하는 것이 좋습니다 sparkdl.xgboost
. 이전 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 파이프라인용 XGBoost를 참조하세요.base_margin
및base_margin_eval_set
매개 변수는 지원되지 않습니다. 대신 매개 변수baseMarginCol
를 사용합니다. 자세한 내용은 PySpark 파이프라인용 XGBoost를 참조하세요.- 매개 변수
missing
은xgboost
패키지와 다른 의미 체계를 갖습니다.xgboost
패키지에서 SciPy 희소 행렬의 0 값은missing
값에 관계없이 결측값으로 처리됩니다.sparkdl
패키지의 PySpark 추정기의 경우missing=0
를 설정하지 않는 한 Spark 희소 벡터의 0 값은 결측값으로 처리되지 않습니다. 희소한 학습 데이터 세트가 있는 경우(대부분의 특성 값이 누락됨) Databricks는missing=0
을 설정하여 메모리 사용량을 줄이고 더 나은 성능을 얻을 것을 권장합니다.
분산 학습
Databricks Runtime ML은 매개 변수를 사용하여 분산 XGBoost 학습을 num_workers
지원합니다. 분산 학습을 사용하려면 분류자 또는 회귀자를 만들고 클러스터의 총 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에는 컴퓨팅 기능이 5.2 이하인 GPU 클러스터를 지원하지 않는 XGBoost 1.6.1이 포함되어 있습니다.
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 집단 통신 라이브러리)이 GPU 통신에 특정 네트워크 인터페이스를 사용할 수 없는 경우에 발생합니다.
이 문제를 해결하려면 클러스터의 sparkConf를 spark.executorEnv.NCCL_SOCKET_IFNAME
eth
.로 설정합니다. 기본적으로 환경 변수 NCCL_SOCKET_IFNAME
eth
는 노드의 모든 작업자에 대해 설정됩니다.
예제 Notebook
이 Notebook은 Spark MLlib와 함께 sparkdl.xgboost
Python 패키지를 사용하는 것을 보여줍니다. sparkdl.xgboost
패키지는 Databricks Runtime 12.0 ML 이후 사용되지 않습니다.
PySpark-XGBoost Notebook
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기