Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozproszony trening modeli XGBoost przy użyciu
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ń w ramach programu xgboost.spark, zapoznaj się z Przewodnikiem migracji dla przestarzałego modułu sparkdl.xgboost.
Środowisko Databricks Runtime ML obejmuje estymatory PySpark oparte na pakiecie xgboost, sparkdl.xgboost.XgboostRegressor i sparkdl.xgboost.XgboostClassifier. Można utworzyć pipeline uczenia maszynowego na podstawie tych estymatorów. Aby uzyskać więcej informacji, zajrzyj do XGBoost for PySpark Pipeline.
Databricks zdecydowanie zaleca użytkownikom sparkdl.xgboost korzystanie z Databricks Runtime 11.3 LTS ML lub nowszej wersji. Poprzednie wersje środowiska Databricks Runtime są dotknięte błędami w starszych wersjach programu sparkdl.xgboost.
Uwaga
- Moduł
sparkdl.xgboostjest przestarzały od środowiska 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 pakietu
xgboostnie są obsługiwane:gpu_id,output_margin,validate_features. - Parametry
sample_weight,eval_setisample_weight_eval_setnie są obsługiwane. Zamiast tego użyj parametrówweightColivalidationIndicatorCol. Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline. - Parametry
base_marginibase_margin_eval_setnie są obsługiwane. Zamiast tego użyj parametrubaseMarginCol. Aby uzyskać szczegółowe informacje, zobacz XGBoost for PySpark Pipeline. - Parametr
missingma różne semantyki zxgboostpakietu. W pakieciexgboostwartości zerowe w macierzy rozrzednionej biblioteki SciPy są traktowane jako brakujące wartości niezależnie od wartościmissing. W przypadku estymatorów PySpark w pakieciesparkdlwartości zerowe w wektorze rozrzedzonym Spark nie są traktowane jako brakujące wartości, chyba że ustawiszmissing=0. Jeśli masz rozrzedniony zestaw danych trenowania (brakuje większości wartości funkcji), usługa Databricks zaleca ustawieniemissing=0w celu zmniejszenia zużycia pamięci i uzyskania lepszej wydajności.
Szkolenie rozproszone
Środowisko Databricks Runtime ML obsługuje rozproszone trenowanie XGBoost przy użyciu parametru num_workers. Aby użyć trenowania rozproszonego, utwórz klasyfikator lub regresję i ustaw num_workers na wartość mniejszą lub równą całkowitej liczbie miejsc zadań platformy Spark w klastrze. Aby użyć wszystkich miejsc zadań Sparka, ustaw 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ć
mlflow.xgboost.autologz rozproszoną wersją XGBoost. - Nie można używać
baseMarginColz rozproszoną wersją 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 GPU dla treningu XGBoost. Aby użyć klastra procesora GPU, ustaw use_gpu na wartość 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 użyciem wielu węzłów, jeśli pojawi się komunikat NCCL failure: remote process exited or there was a network error, zwykle wskazuje to na problem z komunikacją sieciową między 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_IFNAMEeth. Zasadniczo ustawia zmienną środowiskową NCCL_SOCKET_IFNAME na eth dla wszystkich pracowników 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 od Databricks Runtime 12.0 ML.