Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Entrenamiento distribuido de modelos XGBoost mediante
Importante
Esta característica está en versión preliminar pública.
Nota:
sparkdl.xgboost está en desuso a partir de Databricks Runtime 12.0 ML y se quita en Databricks Runtime 13.0 ML y versiones posteriores. Para obtener información sobre cómo migrar las cargas de trabajo a xgboost.spark, consulte guía de migración para el módulo en desusosparkdl.xgboost.
Databricks Runtime ML incluye estimadores de PySpark basados en el paquete de Python xgboost, sparkdl.xgboost.XgboostRegressor y sparkdl.xgboost.XgboostClassifier. Puede crear una canalización ML a partir de estos estimadores. Para obtener más información, consulte XGBoost para la canalización de PySpark.
Databricks recomienda encarecidamente que los usuarios sparkdl.xgboost usen Databricks Runtime 11.3 LTS ML o versiones posteriores. Las versiones anteriores de Databricks Runtime se ven afectadas por errores en versiones anteriores de sparkdl.xgboost.
Nota:
- El módulo
sparkdl.xgboostestá en desuso desde Databricks Runtime 12.0 ML. Databricks recomienda migrar el código para usar el móduloxgboost.sparken su lugar. Consulte la guía de migración. - No se admiten los siguiente parámetros del paquete
xgboost:gpu_id,output_margin,validate_features. - No se admiten los parámetros
sample_weight,eval_setysample_weight_eval_set. En su lugar, se deben usar los parámetrosweightColyvalidationIndicatorCol. Consulte XGBoost para la canalización de PySpark para obtener más información. - No se admiten los parámetros
base_marginybase_margin_eval_set. Use el parámetrobaseMarginColen su lugar. Consulte XGBoost para la canalización de PySpark para obtener más información. - El parámetro
missingtiene una semántica distinta al paquetexgboost. En el paquetexgboost, los valores cero de una matriz dispersa de SciPy se tratan como valores ausentes independientemente del valor demissing. Para los estimadores de PySpark del paquetesparkdl, los valores cero de un vector disperso de Spark no se tratan como valores ausentes a menos que establezcamissing=0. Si tiene un conjunto de datos de entrenamiento disperso (en el que faltan la mayoría de los valores de características), Databricks recomienda configurarmissing=0para reducir el consumo de memoria y lograr un mejor rendimiento.
Entrenamiento distribuido
Databricks Runtime ML admite el entrenamiento XGBoost distribuido mediante el parámetro num_workers. Para usar el entrenamiento distribuido, cree un clasificador o un regresor y establezca num_workers en un valor igual o menor que el número total de ranuras de tareas de Spark en el clúster. Para usar todas las ranuras de tareas de Spark, establezca num_workers=sc.defaultParallelism.
Por ejemplo:
classifier = XgboostClassifier(num_workers=sc.defaultParallelism)
regressor = XgboostRegressor(num_workers=sc.defaultParallelism)
Limitaciones del entrenamiento distribuido
- No se puede usar
mlflow.xgboost.autologcon XGBoost distribuido. - No se puede usar
baseMarginColcon XGBoost distribuido. - No puede usar XGBoost distribuido en un clúster con el escalado automático habilitado. Consulte Habilitar autoescalado para obtener instrucciones para deshabilitar el autoescalado.
Entrenamiento de GPU
Nota:
Databricks Runtime 11.3 ML incluye XGBoost 1.6.1, que no admite clústeres de GPU con capacidad de proceso 5.2 e inferiores.
Databricks Runtime 9.1 LTS ML y versiones posteriores admiten clústeres de GPU para el entrenamiento de XGBoost. Para usar un clúster de GPU, establezca use_gpu en True.
Por ejemplo:
classifier = XgboostClassifier(num_workers=N, use_gpu=True)
regressor = XgboostRegressor(num_workers=N, use_gpu=True)
Solución de problemas
Durante el entrenamiento de varios nodos, si aparece un mensaje NCCL failure: remote process exited or there was a network error, normalmente indica un problema con la comunicación de red entre GPU. Este problema se produce cuando NCCL (biblioteca de comunicaciones colectiva de NVIDIA) no puede usar determinadas interfaces de red para la comunicación con GPU.
Para resolverlo, configure sparkConf del clúster en spark.executorEnv.NCCL_SOCKET_IFNAME a eth. De esta manera, se establece básicamente la variable NCCL_SOCKET_IFNAME a eth de entorno para todos los trabajos de un nodo.
Cuaderno de ejemplo
En este cuaderno se muestra el uso del paquete de Python sparkdl.xgboost con Spark MLlib. El paquete sparkdl.xgboost está en desuso desde Databricks Runtime 12.0 ML.