LightGBM - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

LightGBM

LightGBM est une implémentation open source populaire et efficace de l'algorithme d'arbre de décision avec renforcement de gradient (algorithme GBDT). L'algorithme GBDT est un algorithme d'apprentissage supervisé qui tente de prédire avec précision une variable cible en combinant un ensemble d'estimations à partir d'un jeu de modèles plus simples et plus faibles. LightGBM utilise des techniques supplémentaires pour améliorer considérablement l'efficacité et la capacité de mise à l’échelle de l'algorithme GBDT conventionnel.

Comment utiliser SageMaker LightGBM

Vous pouvez utiliser LightGBM comme algorithme SageMaker intégré à Amazon. La section suivante décrit comment utiliser LightGBM avec le SDK SageMaker Python. Pour plus d'informations sur l'utilisation de LightGBM depuis l'interface utilisateur Amazon SageMaker Studio Classic, consultez. SageMaker JumpStart

  • Utilisation de LightGBM en tant qu'algorithme intégré

    Utilisez l'algorithme intégré LightGBM pour créer un conteneur d'entraînement LightGBM comme indiqué dans l'exemple de code suivant. Vous pouvez détecter automatiquement l'URI de l'image de l'algorithme intégré à LightGBM à l'aide de l' SageMaker image_uris.retrieveAPI (ou de l'get_image_uriAPI si vous utilisez le SDK Amazon SageMaker Python version 2).

    Après avoir spécifié l'URI de l'image LightGBM, vous pouvez utiliser le conteneur LightGBM pour créer un estimateur à l'aide de l'API Estimator et lancer une tâche de SageMaker formation. L'algorithme intégré LightGBM s'exécute en mode script, mais le script d'entraînement vous est fourni et n'a pas besoin d'être remplacé. Si vous avez une vaste expérience de l'utilisation du mode script pour créer une tâche de SageMaker formation, vous pouvez intégrer vos propres scripts de formation 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 )

    Pour plus d'informations sur la configuration de LightGBM en tant qu'algorithme intégré, consultez les exemples de bloc-notes suivants.

Interface d'entrée/sortie de l'algorithme LightGBM

Le boosting de gradient fonctionne sur les données tabulaires, avec les lignes représentant les observations, une colonne représentant la variable ou l'étiquette cible, et les autres colonnes représentant les fonctions.

La SageMaker mise en œuvre de LightGBM prend en charge le format CSV pour la formation et l'inférence :

  • Pour la formation ContentType, les entrées valides doivent être au format text/csv.

  • Pour l'inférence ContentType, les entrées valides doivent être du type text/csv.

Note

Pour l'entraînement CSV, l'algorithme suppose que la variable cible est dans la première colonne et que le CSV n'a pas d'enregistrement d'en-tête.

Pour l'inférence CSV, l'algorithme suppose que l'entrée CSV ne dispose pas de la colonne d'étiquette.

Format d'entrée pour les données d'entraînement, les données de validation et les caractéristiques catégorielles

Soyez conscient de la façon de formater vos données d'entraînement pour les entrer dans le modèle LightGBM. Vous devez fournir le chemin d'accès à un compartiment Amazon S3 contenant vos données d'entraînement et de validation. Vous pouvez également inclure une liste de caractéristiques catégorielles. Utilisez à la fois les canaux train et validation pour fournir vos données d'entrée. Vous pouvez également utiliser uniquement le canal train.

Note

train et training sont tous les deux des noms de canaux valides pour l'entraînement LightGBM.

Utilisation des deux canaux train et validation

Vous pouvez fournir vos données d'entrée par le biais de deux chemins S3, l'un pour le canal train et l'autre pour le canal validation. Chaque chemin S3 peut être soit un préfixe S3 pointant vers un ou plusieurs fichiers CSV, soit un chemin S3 complet pointant vers un fichier CSV spécifique. Les variables cibles doivent figurer dans la première colonne de votre fichier CSV. Les variables prédictives (caractéristiques) doivent figurer dans les autres colonnes. Si plusieurs fichiers CSV sont fournis pour les canaux train ou validation, l'algorithme LightGBM concatène les fichiers. Les données de validation sont utilisées pour calculer un score de validation à la fin de chaque itération de renforcement. Un arrêt précoce intervient lorsque le score de validation cesse de s'améliorer.

Si vos prédicteurs incluent des caractéristiques catégorielles, vous pouvez fournir un fichier JSON nommé categorical_index.json au même emplacement que votre ou vos fichiers de données d'entraînement. Si vous fournissez un fichier JSON pour les caractéristiques catégorielles, votre canal train doit pointer vers un préfixe S3 et non vers un fichier CSV spécifique. Ce fichier doit contenir un dictionnaire Python dans lequel la clé est la chaîne "cat_index_list" et la valeur est une liste d'entiers uniques. Chaque entier de la liste de valeurs doit indiquer l'indice de colonne des caractéristiques catégorielles correspondantes dans votre fichier CSV de données d'entraînement. Chaque valeur doit être un entier positif (supérieur à zéro car zéro représente la valeur cible), inférieur à Int32.MaxValue (2147483647) et inférieur au nombre total de colonnes. Il ne doit y avoir qu'un seul fichier JSON d'indices catégoriels.

Utilisation du seul canal train :

Vous pouvez également fournir vos données d'entrée par le biais d'un seul chemin S3 pour le canal train. Ce chemin S3 doit pointer vers un répertoire dont le sous-répertoire nommé train/ contient un ou plusieurs fichiers CSV. Vous pouvez éventuellement inclure un autre sous-répertoire dans le même emplacement appelé validation/ qui contient également un ou plusieurs fichiers CSV. Si les données de validation ne sont pas fournies, 20 % de vos données d'entraînement sont échantillonnées de façon aléatoire pour servir de données de validation. Si vos prédicteurs incluent des caractéristiques catégorielles, vous pouvez fournir un fichier JSON nommé categorical_index.json au même emplacement que vos sous-répertoires de données.

Note

Pour le mode d'entrée de l'entraînement CSV, la mémoire totale disponible pour l'algorithme (nombre d'instances multiplié par la mémoire disponible dans InstanceType) doit pouvoir contenir le jeu de données d'entraînement.

SageMaker LightGBM utilise le module Python Joblib pour sérialiser ou désérialiser le modèle, qui peut être utilisé pour enregistrer ou charger le modèle.

Pour utiliser un modèle entraîné avec SageMaker LightGBM avec le module JobLib
  • Utilisez le code Python suivant :

    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)

Recommandation d'instances Amazon EC2 pour l'algorithme LightGBM

SageMaker LightGBM prend actuellement en charge la formation des processeurs en instance unique et en instance multiple. Pour l'entraînement de processeur à plusieurs instances (entraînement distribué), spécifiez une valeur instance_count supérieure à 1 lorsque vous définissez votre estimateur. Pour plus d'informations sur la formation distribuée avec LightGBM, consultez Amazon SageMaker LightGBM Distributed training using Dask.

LightGBM est un algorithme dépendant de la mémoire (par opposition à un algorithme dépendant du calcul). Par conséquent, une instance de calcul à usage général (par exemple, M5) constitue un meilleur choix qu'une instance optimisée pour le calcul (par exemple, C5). De plus, nous vous recommandons d'avoir suffisamment de mémoire totale dans les instances sélectionnées pour contenir les données d'entraînement.

Exemples de blocs-notes LightGBM

Le tableau suivant présente une variété d'exemples de blocs-notes qui répondent à différents cas d'utilisation de l'algorithme Amazon SageMaker LightGBM.

Titre du bloc-notes Description

Classification tabulaire avec Amazon SageMaker LightGBM et algorithme CatBoost

Ce carnet explique l'utilisation de l'algorithme Amazon SageMaker LightGBM pour entraîner et héberger un modèle de classification tabulaire.

Régression tabulaire avec Amazon SageMaker LightGBM et algorithme CatBoost

Ce carnet explique l'utilisation de l'algorithme Amazon SageMaker LightGBM pour entraîner et héberger un modèle de régression tabulaire.

Formation distribuée Amazon SageMaker LightGBM à l'aide de Dask

Ce bloc-notes décrit la formation distribuée avec l'algorithme Amazon SageMaker LightGBM à l'aide du framework Dask.

Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter dans lesquelles vous pouvez exécuter l'exemple SageMaker, consultez. Instances Amazon SageMaker Notebook Après avoir créé une instance de bloc-notes et l'avoir ouverte, cliquez sur l'onglet SageMakerExemples pour afficher la liste de tous les SageMaker exemples. Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie).