Udostępnij za pośrednictwem


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.sparkprogramu , 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łu xgboost.spark . Zobacz przewodnik migracji.
  • Następujące parametry z xgboost pakietu nie są obsługiwane: gpu_id, , output_marginvalidate_features.
  • Parametry sample_weight, eval_seti sample_weight_eval_set nie są obsługiwane. Zamiast tego użyj parametrów weightCol i validationIndicatorCol. Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline (Potok PySpark).
  • Parametry base_margini base_margin_eval_set nie są obsługiwane. Zamiast tego użyj parametru baseMarginCol . Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline (Potok PySpark).
  • Parametr missing ma różne semantyki z xgboost pakietu. W pakiecie xgboost wartości zerowe w macierzy rozrzednionej biblioteki SciPy są traktowane jako brakujące wartości niezależnie od wartości missing. W przypadku narzędzia do szacowania PySpark w pakiecie zero wartości w wektorze sparkdl 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 ustawienie missing=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 ethwartość . 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.

Notes PySpark-XGBoost

Pobierz notes