XGBoostalgoritmo con Amazon SageMaker - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

XGBoostalgoritmo con Amazon SageMaker

El XGBoost(eXtreme Gradient Boosting) es una implementación popular y eficiente de código abierto del algoritmo de árboles potenciados por gradiente. El aumento del gradiente es un algoritmo de aprendizaje supervisado que intenta predecir con precisión una variable objetivo mediante la combinación de múltiples estimaciones de un conjunto de modelos más simples. El XGBoost algoritmo funciona bien en las competiciones de aprendizaje automático por las siguientes razones:

  • Su manejo robusto de una variedad de tipos de datos, relaciones y distribuciones.

  • La variedad de hiperparámetros que se pueden ajustar.

Se puede utilizar XGBoost para problemas de regresión, clasificación (binaria y multiclase) y de clasificación.

Puede utilizar la nueva versión del XGBoost algoritmo de las siguientes maneras:

  • Un algoritmo SageMaker integrado en Amazon.

  • Un marco para ejecutar guiones de entrenamiento en sus entornos locales.

Esta implementación ocupa menos memoria, mejora el registro, mejora la validación de hiperparámetros y tiene un conjunto de métricas más amplio que las versiones originales. Proporciona un guion de formación XGBoost estimator que ejecuta en un XGBoost entorno gestionado. La versión actual de SageMaker XGBoost se basa en las XGBoost versiones originales 1.0, 1.2, 1.3, 1.5 y 1.7.

Para obtener más información sobre el SageMaker XGBoost algoritmo de Amazon, consulta las siguientes entradas del blog:

Versiones compatibles

  • Modo marco (código abierto): 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

aviso

Debido a la capacidad de procesamiento requerida, la versión 1.7-1 de no SageMaker XGBoost es compatible con las instancias de la familia de GPU instancias P2 para fines de entrenamiento o inferencia.

importante

Cuando recuperes la SageMaker XGBoost imagenURI, no utilices :latest ni :1 para la etiqueta de la imagen. URI Debe especificar una de las opciones Versiones compatibles para elegir el XGBoost contenedor SageMaker gestionado con la versión XGBoost del paquete nativo que desee utilizar. Para encontrar la versión del paquete migrada a los SageMaker XGBoost contenedores, consulta las rutas de registro de Docker y el código de ejemplo. A continuación Región de AWS, elija la suya y vaya a la sección XGBoost(algoritmo).

aviso

Las versiones XGBoost 0.90 están en desuso. Se ha dejado de ofrecer soporte para las actualizaciones de seguridad o las correcciones de errores de la XGBoost versión 0.90. Le recomendamos encarecidamente que actualice la XGBoost versión a una de las versiones más recientes.

nota

XGBoostLa versión 1.1 no es compatible con. SageMaker XGBoost1.1 tiene una capacidad deficiente para ejecutar predicciones cuando la entrada de prueba tiene menos funciones que los datos de entrenamiento de las LIBSVM entradas. Esta capacidad se restableció en la XGBoost versión 1.2. Considere la posibilidad de utilizar la versión SageMaker XGBoost 1.2-2 o una versión posterior.

nota

Puedes usar la XGBoost versión 1.0-1, pero no tiene soporte oficial.

EC2recomendación de instancia para el algoritmo XGBoost

SageMaker XGBoostapoyosCPU, GPU entrenamiento e inferencia. Las recomendaciones de instancias dependen de las necesidades de formación e inferencia, así como de la versión del XGBoost algoritmo. Seleccione una de las siguientes opciones para obtener más información:

Formación

El SageMaker XGBoost algoritmo apoya CPU y GPU entrena.

CPUformación

SageMaker XGBoost1.0-1 o anterior que solo utilizan CPUs trenes. Se trata de un algoritmo de vinculación de memoria (como se opone en la vinculación de computación). Por lo tanto, una instancia de computación de uso general (por ejemplo, M5) es una opción mejor que una instancia optimizada de computación (por ejemplo, C4). Además, recomendamos que disponga de suficiente memoria en total en las instancias seleccionadas para almacenar los datos de capacitación. Admite el uso del espacio en disco para gestionar datos que no caben en la memoria principal. Esto se debe a la out-of-core función disponible con el modo de entrada libsvm. Aun así, escribir los archivos de caché en el disco reduce el tiempo de procesamiento del algoritmo.

GPUformación

SageMaker XGBoostla versión 1.2-2 o posterior admite GPU la formación. A pesar del aumento de los costes por instancia, GPUs entrene con mayor rapidez, lo que las hace más rentables.

SageMaker XGBoostla versión 1.2-2 o posterior admite las familias de instancias P2, P3, G4dn y G5. GPU

SageMaker XGBoostla versión 1.7-1 o posterior admite las familias de instancias P3, G4dn y G5. GPU Tenga en cuenta que, debido a los requisitos de capacidad informática, la versión 1.7-1 o posterior no es compatible con la familia de instancias P2.

Para aprovechar la capacitación: GPU

  • Especifique el tipo de instancia como una de las GPU instancias (por ejemplo, P3)

  • Defina el tree_method hiperparámetro gpu_hist en su script existente XGBoost

Entrenamiento distribuido

SageMaker XGBoostsoportes CPU e GPU instancias para la formación distribuida.

CPUFormación distribuida

Para ejecutar el CPU entrenamiento en varias instancias, defina el instance_count parámetro del estimador en un valor superior a uno. Los datos de entrada se deben dividir entre el número total de instancias.

División de datos de entrada entre las instancias

Divida los datos de entrada mediante los siguientes pasos:

  1. Separe los datos de entrada en archivos más pequeños. La cantidad de archivos debe ser, al menos, igual a la cantidad de instancias utilizadas para el entrenamiento distribuido. El uso de varios archivos más pequeños, en lugar de uno grande, también reduce el tiempo de descarga de datos para el trabajo de entrenamiento.

  2. Al crear el suyo TrainingInput, defina el parámetro de distribución en. ShardedByS3Key De este modo, cada instancia obtiene aproximadamente 1/n del número de archivos de S3 si hay n instancias especificadas en el trabajo de formación.

Capacitación distribuida GPU

Puede utilizar la formación distribuida con una GPU o varias GPU instancias.

Capacitación distribuida con GPU instancias únicas

SageMaker XGBoostlas versiones 1.2-2 a 1.3-1 solo admiten la formación en una sola instancia. GPU Esto significa que, incluso si selecciona una GPU instancia múltiple, solo se usará una GPU por instancia.

Debe dividir los datos de entrada entre el número total de instancias si:

  • Utiliza XGBoost las versiones 1.2-2 a 1.3-1.

  • No es necesario utilizar varias instancias. GPU

Para obtener más información, consulte División de datos de entrada entre las instancias.

nota

Las versiones 1.2-2 a 1.3-1 SageMaker XGBoost solo usan una GPU por instancia, incluso si elige una instancia múltiple. GPU

Capacitación distribuida con varias instancias GPU

A partir de la versión 1.5-1, SageMaker XGBoost ofrece GPU formación distribuida con Dask. Con Dask, puede utilizarlos todos GPUs cuando utilice una o más instancias múltiples. GPU Dask también funciona cuando se utilizan instancias únicas. GPU

Siga estos pasos para entrenar con Dask:

  1. Omita el distribution parámetro en su archivo TrainingInputo configúrelo en. FullyReplicated

  2. Al definir los hiperparámetros, establezca use_dask_gpu_training en "true".

importante

El entrenamiento distribuido con Dask solo admite CSV los formatos de entrada Parquet. Si utiliza otros formatos de datos, como LIBSVM oPROTOBUF, el trabajo de formación falla.

Con datos Parquet, debe guardar los nombres de las columnas como cadenas. Las columnas que tienen nombres de otros tipos de datos no se cargarán.

importante

El entrenamiento distribuido con Dask no admite el modo canalización. Si se especifica el modo canalización, el trabajo de entrenamiento no se llevará a cabo.

Hay algunas consideraciones a tener en cuenta a la hora de entrenar SageMaker XGBoost con Dask. Divida los datos en archivos más pequeños. Dask lee cada archivo de Parquet como una partición. Hay un trabajador de Dask para cada persona. GPU Como resultado, el número de archivos debe ser mayor que el número total de GPUs (número de instancias * número de GPUs por instancia). Tener una gran cantidad de archivos también puede reducir el rendimiento. Para obtener más información, consulte Dask Best Practices.

Variaciones en la producción

El tree_method hiperparámetro especificado determina el algoritmo que se utiliza para el XGBoost entrenamiento. Los métodos de árbol (approx, hist y gpu_hist) son todos aproximados, y utilizan bocetos para el cálculo de cuantiles. Para obtener más información, consulte Métodos de árbol en la XGBoost documentación. El boceto es un algoritmo aproximado. Por lo tanto, cabe esperar variaciones en el modelo en función de factores como el número de procesos de trabajo elegidos para el entrenamiento distribuido. La importancia de la variación depende de los datos.

Inferencia

SageMaker XGBoostsoportes CPU e GPU instancias para la inferencia. Para obtener información sobre los tipos de instancias para la inferencia, consulte Tipos de instancias de Amazon SageMaker ML.