Распределенное обучение моделей XGBoost с помощью sparkdl.xgboost
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Примечание.
sparkdl.xgboost
устарел, начиная с Databricks Runtime 12.0 ML, и удаляется в Databricks Runtime 13.0 ML и выше. Дополнительные сведения о переносе рабочих xgboost.spark
нагрузок см . в руководстве по миграции для устаревшего модуля sparkdl.xgboost.
Машинное обучение среды выполнения Databricks включает средства оценки PySpark на основе пакета Python xgboost
и sparkdl.xgboost.XgboostRegressor
sparkdl.xgboost.XgboostClassifier
. На основе этих средств оценки можно создать конвейер ML. Дополнительные сведения см. в разделе XGBoost для конвейера PySpark.
Databricks настоятельно рекомендует sparkdl.xgboost
пользователям использовать Databricks Runtime 11.3 LTS ML или более поздней версии. Предыдущие версии среды выполнения Databricks влияют на ошибки в более ранних версиях 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 для конвейера PySpark. - Параметры
base_margin
иbase_margin_eval_set
не поддерживаются. Используйте вместо него параметрbaseMarginCol
. Дополнительные сведения см. в разделе XGBoost для конвейера PySpark. - Параметр
missing
имеет другую семантику из пакетаxgboost
. В пакетеxgboost
нулевые значения в разреженной матрице SciPy обрабатываются как отсутствующие значения независимо от значенияmissing
. В средствах оценки PySpark в пакетеsparkdl
нулевые значения в разреженном векторе Spark не рассматриваются как отсутствующие значения, если не задано значениеmissing=0
. Если у вас есть разреженный набор данных для обучения (большинство значений компонентов отсутствует), то Databricks рекомендует установитьmissing=0
для уменьшения потребления памяти и повышения производительности.
Распределенное обучение
Databricks Runtime ML поддерживает распределенное обучение XGBoost с помощью num_workers
параметра. Чтобы использовать распределенное обучение, создайте классификатор или регрессию и задайте 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, который не поддерживает кластеры GPU с возможностями вычислений 5.2 и ниже.
Databricks Runtime 9.1 LTS ML и выше поддерживают кластеры GPU для обучения XGBoost. Чтобы использовать кластер 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.
Чтобы устранить эту проблему, задайте для кластера значение spark.executorEnv.NCCL_SOCKET_IFNAME
eth
sparkConf. Это по сути задает переменную NCCL_SOCKET_IFNAME
eth
среды для всех рабочих ролей в узле.
Пример записной книжки
В этой записной книжке показано использование пакета sparkdl.xgboost
Python с Spark MLlib. Пакет sparkdl.xgboost
устарел, так как Databricks Runtime 12.0 ML.