Rozproszone trenowanie modeli XGBoost przy użyciu sparkdl.xgboost
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Uwaga
sparkdl.xgboost
jest przestarzały, począwszy od środowiska Databricks Runtime 12.0 ML i jest usuwany w środowisku Databricks Runtime 13.0 ML i nowszym. Aby uzyskać informacje na temat migrowania obciążeń do xgboost.spark
programu , zobacz Przewodnik migracji dla przestarzałego modułu sparkdl.xgboost.
Środowisko Databricks Runtime ML obejmuje narzędzia do szacowania PySpark oparte na pakiecie sparkdl.xgboost.XgboostRegressor
języka Python xgboost
i sparkdl.xgboost.XgboostClassifier
. Potok uczenia maszynowego można utworzyć na podstawie tych narzędzi do szacowania. Aby uzyskać więcej informacji, zobacz XGBoost for PySpark Pipeline (Biblioteka XGBoost dla potoku PySpark).
Usługa Databricks zdecydowanie zaleca użytkownikom sparkdl.xgboost
używanie środowiska Databricks Runtime 11.3 LTS ML lub nowszego. Poprzednie wersje środowiska Databricks Runtime mają wpływ na błędy w starszych wersjach programu sparkdl.xgboost
.
Uwaga
- Moduł
sparkdl.xgboost
jest przestarzały, ponieważ środowisko Databricks Runtime 12.0 ML. Usługa Databricks zaleca przeprowadzenie migracji kodu w celu użycia modułuxgboost.spark
. Zobacz przewodnik migracji. - Następujące parametry z
xgboost
pakietu nie są obsługiwane:gpu_id
, ,output_margin
validate_features
. - Parametry
sample_weight
,eval_set
isample_weight_eval_set
nie są obsługiwane. Zamiast tego użyj parametrówweightCol
ivalidationIndicatorCol
. Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline (Potok PySpark). - Parametry
base_margin
ibase_margin_eval_set
nie są obsługiwane. Zamiast tego użyj parametrubaseMarginCol
. Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline (Potok PySpark). - Parametr
missing
ma różne semantyki zxgboost
pakietu. W pakieciexgboost
wartości zerowe w macierzy rozrzednionej biblioteki SciPy są traktowane jako brakujące wartości niezależnie od wartościmissing
. W przypadku narzędzia do szacowania PySpark w pakiecie zero wartości w wektorzesparkdl
rozrzedzona platformy Spark nie są traktowane jako brakujące wartości, chyba że ustawiono wartośćmissing=0
. Jeśli masz rozrzedniony zestaw danych trenowania (brakuje większości wartości funkcji), usługa Databricks zaleca ustawieniemissing=0
, aby zmniejszyć zużycie pamięci i osiągnąć lepszą wydajność.
Szkolenie rozproszone
Środowisko Databricks Runtime ML obsługuje rozproszone trenowanie biblioteki XGBoost przy użyciu parametru num_workers
. Aby użyć trenowania rozproszonego, utwórz klasyfikator lub regresję i ustaw num_workers
wartość mniejszą lub równą łącznej liczbie miejsc zadań platformy Spark w klastrze. Aby użyć wszystkich miejsc zadań platformy Spark, ustaw wartość num_workers=sc.defaultParallelism
.
Na przykład:
classifier = XgboostClassifier(num_workers=sc.defaultParallelism)
regressor = XgboostRegressor(num_workers=sc.defaultParallelism)
Ograniczenia trenowania rozproszonego
- Nie można używać z
mlflow.xgboost.autolog
rozproszoną biblioteką XGBoost. - Nie można używać z
baseMarginCol
rozproszoną biblioteką XGBoost. - Nie można użyć rozproszonej biblioteki XGBoost w klastrze z włączonym skalowaniem automatycznym. Zobacz Włączanie skalowania automatycznego , aby uzyskać instrukcje dotyczące wyłączania skalowania automatycznego.
Trenowanie procesora GPU
Uwaga
Środowisko Databricks Runtime 11.3 LTS ML zawiera bibliotekę XGBoost 1.6.1, która nie obsługuje klastrów gpu z możliwościami obliczeniowymi 5.2 i nowszymi.
Środowisko Databricks Runtime 9.1 LTS ML i nowsze obsługują klastry procesora GPU na potrzeby trenowania biblioteki XGBoost. Aby użyć klastra procesora GPU, ustaw wartość use_gpu
True
.
Na przykład:
classifier = XgboostClassifier(num_workers=N, use_gpu=True)
regressor = XgboostRegressor(num_workers=N, use_gpu=True)
Rozwiązywanie problemów
Podczas trenowania z wieloma węzłami, jeśli wystąpi NCCL failure: remote process exited or there was a network error
komunikat, zazwyczaj wskazuje problem z komunikacją sieciową między procesorami GPU. Ten problem pojawia się, gdy NCCL (biblioteka NVIDIA Collective Communications Library) nie może używać niektórych interfejsów sieciowych do komunikacji z procesorem GPU.
Aby rozwiązać ten problem, ustaw parametr sparkConf klastra na spark.executorEnv.NCCL_SOCKET_IFNAME
eth
wartość . Zasadniczo ustawia zmienną środowiskową NCCL_SOCKET_IFNAME
na eth
dla wszystkich procesów roboczych w węźle.
Przykładowy notes
W tym notesie przedstawiono użycie pakietu sparkdl.xgboost
języka Python z biblioteką MLlib platformy Spark. Pakiet sparkdl.xgboost
jest przestarzały, ponieważ środowisko Databricks Runtime 12.0 ML.