LightGBM
LightGBM
Utilisation de LightGBM dans SageMaker
Vous pouvez utiliser LightGBM comme un algorithme intégré dans Amazon SageMaker. La section suivante explique comment utiliser LightGBM avec le kit SDK Python SageMaker. Pour plus d'informations sur l'utilisation de LightGBM à partir de l'interface utilisateur d'Amazon SageMaker Studio, 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 repérer automatiquement l'URI d'image de l'algorithme intégré LightGBM à l'aide de l'API
image_uris.retrieve
SageMaker (ou de l'APIget_image_uri
si vous utilisez le kit SDK Python pour Amazon SageMakerversion 2). Après avoir spécifié l'URI d'image LightGBM, vous pouvez utiliser le conteneur LightGBM pour construire un évaluateur à l'aide de l'API SageMaker Estimator et lancer une tâche d'entraînement. 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 d'entraînement SageMaker, vous pouvez intégrer vos propres scripts d'entraînement 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}" 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 hyper-parameters 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, 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( {"training": training_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.
-
Classification tabulaire avec l'algorithme LightGBM ou CatBoost dans Amazon SageMaker
(Français non garanti) -
Régression tabulaire avec l'algorithme LightGBM ou CatBoost dans Amazon SageMaker
(Français non garanti)
-
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.
L'implémentation SageMaker de LightGBM prend en charge le format CSV pour l'entraînement et l'inférence :
-
Pour Training ContentType (Type de contenu d'entraînement), les entrées valides doivent être au format texte/csv.
-
Pour Inference ContentType (Type de contenu d'inférence), les entrées valides doivent être au format texte/csv.
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.
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 des sous-répertoires pour vos données d'entraînement et de validation facultative. Vous pouvez également inclure une liste de caractéristiques catégorielles.
-
Format d'entrée des données d'entraînement : vos données d'entraînement doivent être dans un sous-répertoire nommé
train/
, contenant un fichierdata.csv
. Les variables cibles doivent figurer dans la première colonne dedata.csv
. Les variables prédictives (caractéristiques) doivent figurer dans les autres colonnes. -
Format d'entrée des données de validation : si vous le souhaitez, vous pouvez inclure un autre répertoire nommé
validation/
, contenant également un fichierdata.csv
. 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 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. -
Format d'entrée des caractéristiques catégorielles : 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 répertoires de données. 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.
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.
Dans SageMaker, LightGBM utilise le module Python Joblib pour sérialiser et désérialiser le modèle, qui peut être utilisé pour l'enregistrement et le chargement du modèle.
Pour utiliser un modèle entraîné avec LightGBM dans SageMaker 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
LightGBM dans SageMaker effectue actuellement l'entraînement uniquement à l'aide des UC. 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 divers exemples de blocs-notes traitant de différents cas d'utilisation de l'algorithme LightGBM dans Amazon SageMaker.
Titre du bloc-notes | Description |
---|---|
Classification tabulaire avec l'algorithme LightGBM ou CatBoost dans Amazon SageMaker |
Ce bloc-notes illustre l'utilisation de l'algorithme LightGBM dans Amazon SageMaker pour entraîner et héberger un modèle de classification tabulaire. |
Régression tabulaire avec l'algorithme LightGBM ou CatBoost dans Amazon SageMaker |
Ce bloc-notes illustre l'utilisation de l'algorithme LightGBM dans Amazon SageMaker pour entraîner et héberger un modèle de régression tabulaire. |
Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker, consultez Utilisation des instances de bloc-notes Amazon SageMaker. Après avoir créé et ouvert une instance de bloc-notes, choisissez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher la liste de tous les exemples SageMaker. Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie).