Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Treinamento distribuído de modelos XGBoost usando
Importante
Esta funcionalidade está em Pré-visualização Pública.
Nota
sparkdl.xgboost foi preterido a partir do Databricks Runtime 12.0 ML e foi removido no Databricks Runtime 13.0 ML e superior. Para obter informações sobre migrar as cargas de trabalho para xgboost.spark, consulte o Guia de migração para o módulo descontinuadosparkdl.xgboost.
O Databricks Runtime ML inclui estimadores PySpark baseados no pacote xgboost Python sparkdl.xgboost.XgboostRegressor e sparkdl.xgboost.XgboostClassifier. Você pode criar um pipeline de ML com base nesses estimadores. Para obter mais informações, consulte XGBoost for PySpark Pipeline.
O Databricks recomenda vivamente que sparkdl.xgboost os utilizadores utilizem o Databricks Runtime 11.3 LTS ML ou superior. As versões anteriores do Databricks Runtime são afetadas por bugs em versões mais antigas do sparkdl.xgboost.
Nota
- O
sparkdl.xgboostmódulo foi preterido desde o Databricks Runtime 12.0 ML. A Databricks recomenda que migres o teu código para utilizar o móduloxgboost.spark. Consulte o guia de migração. - Os seguintes parâmetros do pacote
xgboostnão são suportados:gpu_id,output_margin,validate_features. - Os parâmetros
sample_weight,eval_setesample_weight_eval_setnão são suportados. Em vez disso, use os parâmetrosweightColevalidationIndicatorCol. Consulte XGBoost for PySpark Pipeline para obter detalhes. - Os parâmetros
base_marginebase_margin_eval_setnão são suportados. Em vez disso, use o parâmetrobaseMarginCol. Consulte XGBoost for PySpark Pipeline para obter detalhes. - O parâmetro
missingtem semântica diferente doxgboostpacote. No pacotexgboost, os valores zero em uma matriz esparsa SciPy são tratados como valores ausentes, independentemente do valor demissing. Para os estimadores PySpark no pacotesparkdl, valores zero em um vetor esparso Spark não são tratados como valores ausentes, a menos que você definamissing=0. Se você tiver um conjunto de dados de treinamento esparso (a maioria dos valores de recurso está faltando), o Databricks recomenda definirmissing=0para reduzir o consumo de memória e obter um melhor desempenho.
Preparação distribuída
O Databricks Runtime ML suporta treinamento XGBoost distribuído usando o num_workers parâmetro. Para usar o treinamento distribuído, crie um classificador ou regressor e defina num_workers como um valor menor ou igual ao número total de slots de tarefas do Spark no cluster. Para usar todos os slots de tarefas do Spark, defina num_workers=sc.defaultParallelism.
Por exemplo:
classifier = XgboostClassifier(num_workers=sc.defaultParallelism)
regressor = XgboostRegressor(num_workers=sc.defaultParallelism)
Limitações da formação distribuída
- Você não pode usar
mlflow.xgboost.autologcom XGBoost distribuído. - Você não pode usar
baseMarginColcom XGBoost distribuído. - Não é possível usar XGBoost distribuído em um cluster com dimensionamento automático habilitado. Consulte Ativar dimensionamento automático para obter instruções sobre como desativar o dimensionamento automático.
Treinamento de GPU
Nota
O Databricks Runtime 11.3 LTS ML inclui o XGBoost 1.6.1, que não suporta clusters GPU com capacidade de computação 5.2 e inferior.
O Databricks Runtime 9.1 LTS ML e superior suporta clusters de GPU para treinamento XGBoost. Para usar um cluster de GPU, defina use_gpu como True.
Por exemplo:
classifier = XgboostClassifier(num_workers=N, use_gpu=True)
regressor = XgboostRegressor(num_workers=N, use_gpu=True)
Resolução de Problemas
Durante o treinamento de vários nós, se você encontrar uma NCCL failure: remote process exited or there was a network error mensagem, ela geralmente indica um problema com a comunicação de rede entre GPUs. Esse problema surge quando NCCL (NVIDIA Collective Communications Library) não pode usar determinadas interfaces de rede para comunicação GPU.
Para resolver, defina sparkConf do cluster como spark.executorEnv.NCCL_SOCKET_IFNAMEeth. Isso essencialmente define a variável de ambiente NCCL_SOCKET_IFNAME para eth para todos os trabalhadores em um nó.
Bloco de notas de exemplo
Este bloco de anotações mostra o uso do pacote sparkdl.xgboost Python com o Spark MLlib. O sparkdl.xgboost pacote foi preterido desde Databricks Runtime 12.0 ML.