XGBoostalgoritmo com a Amazon SageMaker - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

XGBoostalgoritmo com a Amazon SageMaker

O XGBoost(eXtreme Gradient Boosting) é uma implementação de código aberto popular e eficiente do algoritmo de árvores com aumento de gradiente. O aumento de gradiente é um algoritmo de aprendizado supervisionado que tenta prever com precisão uma variável-alvo combinando várias estimativas de um conjunto de modelos mais simples. O XGBoost algoritmo tem um bom desempenho em competições de aprendizado de máquina pelos seguintes motivos:

  • É um tratamento robusto de uma variedade de tipos de dados, relacionamentos e distribuições.

  • A variedade de hiperparâmetros que você pode ajustar.

Você pode usar XGBoost para problemas de regressão, classificação (binária e multiclasse) e classificação.

Você pode usar a nova versão do XGBoost algoritmo da seguinte forma:

  • Um algoritmo SageMaker integrado da Amazon.

  • Uma estrutura para executar scripts de treinamento em seus ambientes locais.

Essa implementação ocupa menos memória, melhor registro, melhor validação de hiperparâmetros e um conjunto maior de métricas do que as versões originais. Ele fornece um XGBoost estimator que executa um script de treinamento em um XGBoost ambiente gerenciado. A versão atual do SageMaker XGBoost é baseada nas XGBoost versões originais 1.0, 1.2, 1.3, 1.5 e 1.7.

Para obter mais informações sobre o SageMaker XGBoost algoritmo da Amazon, consulte as seguintes postagens no blog:

Versões compatíveis

  • Modo de estrutura (código aberto): 1,2-1, 1,2-2, 1,3-1, 1,5-1, 1,7-1

  • Modo de algoritmo: 1,2-1, 1,2-2, 1,3-1, 1,5-1, 1,7-1

Atenção

Devido à capacidade computacional necessária, a versão 1.7-1 do não SageMaker XGBoost é compatível com GPU instâncias da família de instâncias P2 para treinamento ou inferência.

Importante

Ao recuperar a SageMaker XGBoost imagemURI, não use :latest ou :1 para a URI tag de imagem. Você deve especificar um dos Versões compatíveis para escolher o XGBoost contêiner SageMaker gerenciado com a versão do XGBoost pacote nativo que você deseja usar. Para encontrar a versão do pacote migrada para os SageMaker XGBoost contêineres, consulte Docker Registry Paths and Example Code. Em seguida Região da AWS, escolha seu e navegue até a seção XGBoost(algoritmo).

Atenção

As versões XGBoost 0.90 estão obsoletas. O suporte para atualizações de segurança ou correções de erros para a versão XGBoost 0.90 foi descontinuado. É altamente recomendável que você atualize a XGBoost versão para uma das versões mais recentes.

nota

XGBoostA v1.1 não é suportada no. SageMaker XGBoost1.1 tem uma capacidade interrompida de executar previsões quando a entrada do teste tem menos recursos do que os dados de treinamento nas LIBSVM entradas. Esse recurso foi restaurado na XGBoost v1.2. Considere usar SageMaker XGBoost 1.2-2 ou posterior.

nota

Você pode usar a XGBoost versão v1.0-1, mas ela não é oficialmente suportada.

EC2recomendação de instância para o XGBoost algoritmo

SageMaker XGBoostapoios, GPU treinamento CPU e inferência. As recomendações de instância dependem das necessidades de treinamento e inferência, bem como da versão do XGBoost algoritmo. Escolha uma das opções a seguir para obter mais informações:

Treinamento

O SageMaker XGBoost algoritmo suporta CPU e GPU treina.

CPUtreinamento

SageMaker XGBoost1.0-1 ou anterior, somente trens que usam. CPUs É um algoritmo de uso intensivo de memória (ao contrário dos de uso intensivo de computação). Portanto, uma instância de computação de uso geral (por exemplo, M5) é uma opção melhor do que uma instância otimizada para computação (por exemplo, C4). Além disso, recomendamos que você tenha memória total suficiente em instâncias específicas para armazenar os dados de treinamento. Ele suporta o uso de espaço em disco para lidar com dados que não cabem na memória principal. Isso é resultado do out-of-core recurso disponível com o modo de entrada libsvm. Mesmo assim, gravar arquivos de cache no disco diminui o tempo de processamento do algoritmo.

GPUtreinamento

SageMaker XGBoosta versão 1.2-2 ou posterior oferece suporte GPU ao treinamento. Apesar dos custos mais altos por instância, GPUs treine mais rapidamente, tornando-os mais econômicos.

SageMaker XGBoosta versão 1.2-2 ou posterior oferece suporte às famílias de instâncias P2, P3, G4dn e G5. GPU

SageMaker XGBoosta versão 1.7-1 ou posterior oferece suporte às famílias de instâncias P3, G4dn e G5. GPU Observe que, devido aos requisitos de capacidade computacional, a versão 1.7-1 ou posterior não oferece suporte à família de instâncias P2.

Para aproveitar as vantagens do GPU treinamento:

  • Especifique o tipo de instância como uma das GPU instâncias (por exemplo, P3)

  • Defina o tree_method hiperparâmetro como gpu_hist em seu script existente XGBoost

Treinamento distribuído

SageMaker XGBoostsuportes CPU e GPU instâncias para treinamento distribuído.

CPUTreinamento distribuído

Para executar o CPU treinamento em várias instâncias, defina o instance_count parâmetro do estimador para um valor maior que um. Os dados de entrada devem ser divididos entre o número total de instâncias.

Divida os dados de entrada entre as instâncias

Divida os dados de entrada usando as seguintes etapas:

  1. Divida os dados de entrada em arquivos menores. O número de arquivos deve ser pelo menos igual ao número de instâncias usadas para o treinamento distribuído. O uso de vários arquivos menores em vez de um arquivo grande também diminui o tempo de download dos dados para o trabalho de treinamento.

  2. Ao criar seu TrainingInput, defina o parâmetro de distribuição comoShardedByS3Key. Com isso, cada instância obtém aproximadamente 1/n do número de arquivos no S3 se houver n instâncias especificadas no trabalho de treinamento.

GPUTreinamento distribuído

Você pode usar o treinamento distribuído com uma GPU ou várias GPU instâncias.

Treinamento distribuído com GPU instâncias únicas

SageMaker XGBoostAs versões 1.2-2 a 1.3-1 oferecem suporte apenas ao treinamento em instância única. GPU Isso significa que, mesmo que você selecione uma GPU multiinstância, somente uma GPU será usada por instância.

Você deve dividir seus dados de entrada entre o número total de instâncias se:

  • Você usa XGBoost as versões 1.2-2 a 1.3-1.

  • Você não precisa usar várias GPU instâncias.

Para obter mais informações, consulte Divida os dados de entrada entre as instâncias.

nota

As versões 1.2-2 a 1.3-1 usam SageMaker XGBoost apenas uma GPU por instância, mesmo se você escolher uma instância múltipla. GPU

Treinamento distribuído com várias instâncias GPU

A partir da versão 1.5-1, SageMaker XGBoost oferece GPU treinamento distribuído com o Dask. Com o Dask, você pode utilizar tudo GPUs ao usar uma ou mais instâncias múltiplas. GPU O Dask também funciona ao usar GPU instâncias únicas.

Treine com o Dask usando as seguintes etapas:

  1. Omita o distribution parâmetro em seu TrainingInputou defina-o como. FullyReplicated

  2. Ao definir seus hiperparâmetros, defina use_dask_gpu_training como "true".

Importante

O treinamento distribuído com suporte apenas para o Dask CSV e os formatos de entrada do Parquet. Se você usar outros formatos de dados, como LIBSVM ouPROTOBUF, o trabalho de treinamento falhará.

Para dados do Parquet, verifique se os nomes das colunas estão salvos como cadeias de caracteres. As colunas com nomes de outros tipos de dados não serão carregadas.

Importante

O treinamento distribuído com o Dask não oferece suporte para o modo pipe. Se o modo pipe for especificado, o trabalho de treinamento falhará.

Há algumas considerações que você deve considerar ao treinar SageMaker XGBoost com o Dask. Lembre–se de dividir seus dados em arquivos menores. O Dask lê cada arquivo Parquet como uma partição. Há um funcionário da Dask para cadaGPU. Como resultado, o número de arquivos deve ser maior que o número total de GPUs (contagem de instâncias * número de GPUs por instância). Ter um número muito grande de arquivos também pode prejudicar o desempenho. Para obter mais informações, consulte Práticas recomendadas do Dask.

Variações na saída

O tree_method hiperparâmetro especificado determina o algoritmo usado para XGBoost treinamento. Os métodos de árvore approx, hist e gpu_hist são todos métodos aproximados e usam esboços para cálculo de quantil. Para obter mais informações, consulte Métodos de árvore na XGBoost documentação. O esboço é um algoritmo aproximado. Portanto, você pode esperar variações no modelo dependendo de fatores como o número de operadores escolhidos para o treinamento distribuído. A importância da variação depende dos dados.

Inferência

SageMaker XGBoostsuportes CPU e GPU instâncias para inferência. Para obter informações sobre os tipos de instância para inferência, consulte Tipos de instância do Amazon SageMaker ML.