LightGBM - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

LightGBM

LightGBM è un'implementazione open source popolare ed efficiente dell'algoritmo degli alberi delle decisioni di gradient boosting (Gradient Boosting Decision Tree, GBDT). Il GBDT è un'algoritmo di apprendimento supervisionato che tenta di prevedere con precisione una variabile di destinazione combinando un insieme di stime da un set di modelli più semplici e deboli. LightGBM utilizza tecniche aggiuntive per migliorare significativamente l'efficienza e la scalabilità del GBDT convenzionale.

Come usare SageMaker LightGBM

Puoi usare LightGBM come algoritmo SageMaker integrato di Amazon. La sezione seguente descrive come usare LightGBM con Python SageMaker SDK. Per informazioni su come utilizzare LightGBM dall'interfaccia utente di Amazon SageMaker Studio Classic, consulta. Addestra, implementa e valuta modelli preaddestrati con SageMaker JumpStart

  • Utilizzo di LightGBM come algoritmo integrato

    Utilizzare l'algoritmo integrato LightGBM per creare un container di addestramento LightGBM, come illustrato nell'esempio di codice seguente. Puoi individuare automaticamente l'URI dell'immagine dell'algoritmo integrato LightGBM utilizzando l' SageMaker image_uris.retrieveAPI (o l'get_image_uriAPI se usi Amazon SageMaker Python SDK versione 2).

    Dopo aver specificato l'URI dell'immagine LightGBM, puoi utilizzare il contenitore LightGBM per creare uno stimatore utilizzando l'API Estimator e avviare un processo di formazione. SageMaker L'algoritmo integrato LightGBM viene eseguito in modalità script, ma lo script di addestramento viene fornito automaticamente e non è necessario sostituirlo. Se hai una vasta esperienza nell'uso della modalità script per creare un lavoro di formazione, puoi incorporare i tuoi script SageMaker di formazione 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 )

    Per ulteriori informazioni su come impostare LightGBM come algoritmo integrato, vedere i seguenti esempi di notebook.

Interfaccia di input e output per l'algoritmo LightGBM

Il gradient boosting agisce sui dati tabulari, con le righe che rappresentano le osservazioni, una colonna che rappresenta la variabile o l'etichetta di destinazione e le colonne rimanenti che rappresentano le caratteristiche.

L' SageMaker implementazione di LightGBM supporta CSV per l'addestramento e l'inferenza:

  • Per Training ContentType, gli input validi devono essere text/csv.

  • Per Inference ContentType, gli input validi devono essere text/csv.

Nota

Per l’addestramento CSV, l'algoritmo presume che la variabile di destinazione si trovi nella prima colonna e che CSV non disponga di un record di intestazione.

Per l'inferenza CSV, l'algoritmo presuppone che l'input CSV non disponga della colonna di etichette.

Formato di input per dati di addestramento, dati di convalida e caratteristiche categoriali

Fai attenzione a come formattare i dati di addestramento per inserirli nel modello LightGBM. Devi fornire il percorso di un bucket Amazon S3 contenente i dati di addestramento e convalida. Puoi includere anche un elenco di funzionalità categoriali. Utilizza entrambi i canali train e validation per fornire i dati di input. In alternativa, puoi utilizzare solo il canale train.

Nota

Entrambi train e training sono nomi di canale validi per l'addestramento con LightGBM.

Usa entrambi i canali train e validation

È possibile fornire i dati di input tramite due percorsi S3, uno per il canale train e uno per il canale validation. Ogni percorso S3 può essere un prefisso S3 che punta a uno o più file CSV o un percorso S3 completo che punta a un file CSV specifico. Le variabili di destinazione devono trovarsi nella prima colonna del file CSV. Le variabili predittive (funzionalità) dovrebbero trovarsi nelle colonne rimanenti. Se vengono forniti più file CSV per i canali train o validation, l'algoritmo LightGBM concatena i file. I dati di convalida vengono utilizzati per calcolare un punteggio di convalida alla fine di ogni iterazione di potenziamento. L'arresto anticipato viene applicato quando il punteggio di convalida smette di migliorare.

Se i tuoi predittori includono funzionalità categoriche, puoi fornire un file JSON denominato categorical_index.json nella stessa posizione del file o dei file di dati di addestramento. Se fornisci un file JSON per le funzionalità categoriali, il tuo canale train deve puntare a un prefisso S3 e non a un file CSV specifico. Questo file dovrebbe contenere un dizionario Python in cui la chiave è la stringa "cat_index_list" e il valore è un elenco di numeri interi univoci. Ogni numero intero nella lista dei valori deve indicare l'indice delle colonne delle funzionalità categoriali corrispondenti nel file CSV dei dati di addestramento. Ogni valore deve essere un numero intero positivo (maggiore di zero perché zero rappresenta il valore di destinazione), minore di Int32.MaxValue (2147483647) e minore del numero totale di colonne. Dovrebbe esserci un solo file JSON di indice categorico.

Usa solo il canale train:

In alternativa, puoi fornire i dati di input tramite un singolo percorso S3 per il canale train. Questo percorso S3 deve puntare a una directory con una sottodirectory denominata train/ che contiene uno o più file CSV. Facoltativamente, puoi includere un'altra sottodirectory nella stessa posizione denominata validation/ che contiene anche uno o più file CSV. Se i dati di convalida non vengono forniti, il 20% dei dati di addestramento viene campionato casualmente per fungere da dati di convalida. Se i tuoi predittori includono funzionalità categoriali, puoi fornire un file JSON denominato categorical_index.json nella stessa posizione delle sottodirectory dei dati.

Nota

Per la modalità di input dell’addestramento CSV, la memoria totale disponibile per l'algoritmo (calcolo dell'istanza moltiplicata per la memoria disponibile nel InstanceType) deve essere in grado di gestire il set di dati di addestramento.

SageMaker LightGBM utilizza il modulo Python Joblib per serializzare o deserializzare il modello, che può essere usato per salvare o caricare il modello.

Per utilizzare un modello addestrato con LightGBM con il modulo SageMaker JobLib
  • Utilizza il seguente codice 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)

Suggerimento sulle istanze EC2 per l'algoritmo LightGBM

SageMaker LightGBM attualmente supporta l'addestramento della CPU a istanza singola e multiistanza. Per l'addestramento della CPU a più istanze (addestramento distribuito), specifica un valore instance_count maggiore di 1 quando definisci il tuo strumento di valutazione. Per ulteriori informazioni sulla formazione distribuita con LightGBM, consulta Amazon SageMaker LightGBM Distributed training using Dask.

LightGBM è un algoritmo basato su memoria e non su calcolo, Pertanto, un'istanza di calcolo a scopo generico (ad esempio, M5) rappresenta una scelta migliore rispetto a un'istanza ottimizzata per il calcolo (ad esempio, C5). Inoltre, consigliamo di disporre di memoria sufficiente nelle istanze selezionate per conservare i dati di addestramento.

Notebook di esempio LightGBM

La tabella seguente illustra una serie di notebook di esempio che affrontano diversi casi d'uso dell'algoritmo Amazon LightGBM. SageMaker

Titolo del notebook Descrizione

Classificazione tabulare con Amazon SageMaker LightGBM e algoritmo CatBoost

Questo notebook dimostra l'uso dell'algoritmo Amazon SageMaker LightGBM per addestrare e ospitare un modello di classificazione tabulare.

Regressione tabulare con Amazon SageMaker LightGBM e algoritmo CatBoost

Questo notebook dimostra l'uso dell'algoritmo Amazon SageMaker LightGBM per addestrare e ospitare un modello di regressione tabulare.

Formazione distribuita su Amazon SageMaker LightGBM con Dask

Questo notebook dimostra la formazione distribuita con l'algoritmo Amazon SageMaker LightGBM utilizzando il framework Dask.

Per istruzioni su come creare e accedere alle istanze di notebook Jupyter utilizzabili per eseguire l'esempio, consulta. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato un'istanza di notebook e averla aperta, scegli la scheda SageMakerEsempi per visualizzare un elenco di tutti gli esempi. SageMaker Per aprire un notebook, seleziona la relativa scheda Utilizza e scegli Crea copia.