LightGBM - 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.

LightGBM

LightGBM es una implementación de código abierto popular y eficiente del algoritmo Gradient Boosting Decision Tree (GBDT). GBDT es un algoritmo de aprendizaje supervisado que intenta predecir adecuadamente una variable objetivo mediante la combinación de un conjunto de estimaciones a partir de un conjunto de modelos más simples y más débiles. LightGBM utiliza técnicas adicionales para mejorar significativamente la eficiencia y la escalabilidad de la GBDT convencional.

Cómo usar SageMaker LightGBM

Puedes usar LightGBM como un algoritmo SageMaker integrado en Amazon. En la siguiente sección se describe cómo utilizar LightGBM con el SDK de SageMaker Python. Para obtener información sobre cómo usar LightGBM desde la interfaz de usuario clásica de Amazon SageMaker Studio, consulte. Entrene, implemente y evalúe modelos previamente entrenados con SageMaker JumpStart

  • Utilizar LightGBM como algoritmo integrado

    Utilice el algoritmo integrado LightGBM para crear un contenedor de entrenamiento de LightGBM tal como se muestra en el ejemplo de código siguiente. Puede detectar automáticamente el URI de la imagen del algoritmo integrado de LightGBM mediante la SageMaker image_uris.retrieve API (o la get_image_uri API si utiliza Amazon SageMaker Python SDK versión 2).

    Tras especificar el URI de la imagen de LightGBM, puede utilizar el contenedor LightGBM para crear un estimador mediante la API Estimator e iniciar un trabajo de SageMaker formación. El algoritmo integrado LightGBM se ejecuta en modo script, pero el script de entrenamiento se proporciona automáticamente y no es necesario reemplazarlo. Si tiene una amplia experiencia en el uso del modo script para crear un trabajo de formación, puede incorporar sus propios guiones de SageMaker entrenamiento de LightGBM.

    from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training" training_instance_type = "ml.m5.xlarge" # Retrieve the docker image train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type ) # Retrieve the training script train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_multiclass/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version ) # [Optional] Override default hyperparameters with custom values hyperparameters[ "num_boost_round" ] = "500" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, # for distributed training, specify an instance_count greater than 1 instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "train": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

    Para obtener más información acerca de cómo configurar LightGBM como un algoritmo integrado, consulte los siguientes ejemplos de cuadernos.

Interfaz de entrada/salida para el algoritmo LightGBM

La potenciación de gradientes funciona en los datos tabulares, con las filas que representan observaciones, una columna que representa la variable de destino o la etiqueta, y las columnas restantes que representan las características.

La SageMaker implementación de LightGBM admite CSV para el entrenamiento y la inferencia:

  • Para el entrenamiento ContentType, las entradas válidas deben ser text/csv.

  • Para la inferencia ContentType, las entradas válidas deben ser text/csv.

nota

Para la capacitación de CSV, el algoritmo asume la variable de destino en la primera columna y ese CSV no dispone de un registro de encabezado.

Para la inferencia de CSV, el algoritmo asume que la entrada de CSV no dispone de la columna de etiqueta.

Formato de entrada para los datos de entrenamiento, los datos de validación y las características categóricas

Tenga cuidado con el formato de los datos de entrenamiento que introducirá en el modelo LightGBM. Debe proporcionar la ruta a un bucket de Amazon S3 que contenga los datos de entrenamiento y de validación. También puede incluir una lista de características categóricas. Utilice los canales train y validation para proporcionar los datos de entrada. o utilice solo el canal train si lo prefiere.

nota

Tanto train como training son nombres de canales válidos para el entrenamiento con LightGBM.

Uso de ambos canales (train y validation)

Puede proporcionar los datos de entrada mediante dos rutas S3, una para el canal train y otra para el canal validation. Cada ruta S3 puede ser un prefijo S3 que apunte a uno o más archivos CSV, o una ruta S3 completa que apunte a un archivo CSV específico. Las variables de destino deben estar en la primera columna del archivo CSV. Las variables predictoras (características) deben estar en las columnas restantes. Si se proporcionan varios archivos CSV para los canales train o validation, el algoritmo LightGBM concatena los archivos. Los datos de validación se utilizan para calcular una puntuación de validación al final de cada iteración de potenciación. Hay una interrupción anticipada cuando la puntuación de validación deja de mejorar.

Si los predictores incluyen características categóricas, puede proporcionar un archivo JSON con el nombre categorical_index.json en la misma ubicación que los archivos de datos de entrenamiento. Si proporciona un archivo JSON para las características categóricas, el canal train debe apuntar a un prefijo S3, y no a un archivo CSV específico. Este archivo debe contener un diccionario de Python donde la clave sea la cadena "cat_index_list" y el valor sea una lista de enteros únicos. Cada número entero de la lista de valores debe indicar el índice de columnas de las características categóricas correspondientes en el archivo CSV de datos de entrenamiento. Cada valor debe ser un entero positivo (mayor de cero, ya que cero representa el valor objetivo), menor que el Int32.MaxValue (2147483647) y menor que el número total de columnas. Solo debe haber un archivo JSON de índice categórico.

Uso del canal train exclusivamente

También puede proporcionar sus datos de entrada mediante una única ruta S3 para el canal train. Esta ruta S3 debe apuntar a un directorio con un subdirectorio denominado train/ que contenga uno o más archivos CSV. Si lo desea, puede incluir otro subdirectorio en la misma ubicación, denominado validation/, que también tenga uno o más archivos CSV. Si no se proporcionan los datos de validación, se toma una muestra aleatoria del 20 % de los datos de entrenamiento para que ejerzan como datos de validación. Si los predictores contienen características categóricas, puede proporcionar un archivo JSON con el nombre categorical_index.json en la misma ubicación que los subdirectorios de datos.

nota

En el modo de entrada de entrenamiento de CSV, la memoria total disponible para el algoritmo (el recuento de instancias multiplicado por la memoria disponible en InstanceType) debe poder contener el conjunto de datos de entrenamiento.

SageMaker LightGBM usa el módulo Joblib de Python para serializar o deserializar el modelo, que se puede usar para guardar o cargar el modelo.

Para usar un modelo entrenado con LightGBM con el módulo SageMaker JobLib
  • Utilice el siguiente código de Python:

    import joblib import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = joblib.load(model_file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(dtest)

Recomendación de instancias de Amazon EC2 para el algoritmo LightGBM

SageMaker LightGBM actualmente admite el entrenamiento de CPU en una o varias instancias. Para el entrenamiento de CPU en varias instancias (entrenamiento distribuido), especifique un valor instance_count mayor que 1 cuando defina su estimador. Para obtener más información sobre la formación distribuida con LightGBM, consulte Formación distribuida de Amazon SageMaker LightGBM con Dask.

LightGBM es un algoritmo de vinculación de memoria (a diferencia de 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 para la computación (por ejemplo, C5). Además, recomendamos que disponga de suficiente memoria en total en las instancias seleccionadas para almacenar los datos de capacitación.

Ejemplos de cuadernos LightGBM

En la siguiente tabla se describen varios ejemplos de libretas que abordan distintos casos de uso del algoritmo Amazon SageMaker LightGBM.

Título del cuaderno Descripción

Clasificación tabular con Amazon SageMaker LightGBM y algoritmo CatBoost

En este cuaderno se muestra el uso del algoritmo Amazon SageMaker LightGBM para entrenar y alojar un modelo de clasificación tabular.

Regresión tabular con Amazon SageMaker LightGBM y algoritmo CatBoost

En este cuaderno se muestra el uso del algoritmo Amazon SageMaker LightGBM para entrenar y alojar un modelo de regresión tabular.

Capacitación distribuida de Amazon SageMaker LightGBM con Dask

Este cuaderno muestra el entrenamiento distribuido con el algoritmo Amazon SageMaker LightGBM mediante el marco Dask.

Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo, consulte. SageMaker Instancias de Amazon SageMaker Notebook Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña SageMakerEjemplos para ver una lista de todos los ejemplos. SageMaker Para abrir un bloc de notas, elija su pestaña Usar y elija Crear copia.