LightGBM - アマゾン SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

LightGBM

LightGBM は、グラデーションブースティングデシジョンツリー (GBDT) アルゴリズムの一般的な効率的なオープンソース実装です。GBDT は、より単純で弱いモデルから得られた推定のアンサンブルを組み合わせることで、ターゲット変数の正確な予測を試みる、教師あり学習アルゴリズムで、より単純で弱いモデルから得られた推定のアンサンブルを組み合わせることで、ターゲット変数の正確な予測を試みる、教師あり学習アルゴリズムです。LightGBMは追加の技術を使用して、従来のGBDTの効率とスケーラビリティを大幅に向上させます。

SageMaker ライトGBMの使用方法

LightGBM SageMaker をアマゾンの組み込みアルゴリズムとして使用できます。次のセクションでは、 SageMaker Python SDK で LightGBM を使用する方法を説明します。Amazon SageMaker Studio ユーザーインターフェイスから LightGBM を使用する方法については、を参照してくださいSageMaker JumpStart

  • LightGBM を組み込みのアルゴリズムとして使用する

    次のサンプルコードに示すように、LightGBM 組み込みのアルゴリズムを使用して LighGBM トレーニングコンテナを作成します。 SageMaker image_uris.retrieveAPI (または Amazon SageMaker Python SDK バージョン 2 を使用している場合はget_image_uri API) を使用して、LightGBM の組み込みアルゴリズムイメージ URI を自動的に見つけることができます。

    LightGBM イメージ URI を指定したら、LightGBM コンテナを使用して SageMaker Estimator API を使用して推定器を構築し、トレーニングジョブを開始できます。LightGBM の組み込みアルゴリズムはスクリプトモードで実行されますが、トレーニングスクリプトは用意されているので、置き換える必要はありません。 SageMaker スクリプトモードを使用してトレーニングジョブを作成した経験が豊富な場合は、独自の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 )

    LightGBM を組み込みのアルゴリズムとして設定する方法の詳細については、次のノートブックのサンプルを参照してください。

LightGBM アルゴリズムの入出力インターフェイス

勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。

LightGBM SageMaker の実装では、トレーニングと推論に CSV がサポートされています。

  • ContentTypeトレーニングでは、有効な入力は text/csv でなければなりません。

  • ContentType推論では、有効な入力は text/csv でなければなりません。

注記

CSV トレーニングの場合、アルゴリズムはターゲット変数が最初の列にあり、CSV にはヘッダーレコードがないと見なします。

CSV 推論の場合、アルゴリズムは CSV 入力にラベル列がないと見なします。

トレーニングデータ、検証データ、およびカテゴリ特徴の入力形式

LightGBM モデルへの入力用にトレーニングデータをフォーマットする方法に注意してください。トレーニングデータおよび検証データを含む Amazon S3 バケットへのパスを提供する必要があります。カテゴリ別機能のリストを含めることもできます。trainvalidationとの両方のチャネルを使用して入力データを提供します。trainチャネルだけを使用することもできます。

注記

traintrainingとはどちらも LightGBM トレーニングに有効なチャンネル名です。

trainvalidationとチャネルの両方を使う

入力データは、trainチャンネル用とチャンネル用の 2 つの S3 パスを介して提供できます。validation各 S3 パスは、1 つ以上の CSV ファイルを指す S3 プレフィックスでも、1 つの特定の CSV ファイルを指す完全な S3 パスでもかまいません。ターゲット変数は CSV ファイルの最初の列にあるはずです。予測変数 (特徴) は残りの列にあるはずです。trainvalidationまたはチャンネルに複数の CSV ファイルが提供されている場合、LightGBM アルゴリズムはファイルを連結します。検証データは、各ブースティング反復の終了時に検証スコアを計算するために使用されます。早期停止は、検証スコアの改善が止まったときに適用されます。

予測変数にカテゴリの特徴が含まれている場合は、categorical_index.jsonトレーニングデータファイルまたはファイルと同じ場所に名前を付けた JSON ファイルを指定できます。カテゴリー機能用の JSON ファイルを提供する場合、trainチャンネルは特定の CSV ファイルではなく S3 プレフィックスを指している必要があります。このファイルには、キーが文字列"cat_index_list"、値がユニークな整数のリストである Python 辞書が含まれている必要があります。値リストの各整数は、トレーニングデータの CSV ファイル内の対応するカテゴリの特徴の列インデックスを示す必要があります。各値は正の整数 (ゼロが目標値を表すためゼロより大きい) で、Int32.MaxValue (2147483647) より小さく、列の総数より小さい必要があります。カテゴリインデックス JSON ファイルは 1 つだけにする必要があります。

trainチャンネルのみを使用してください:

または、trainチャンネルの 1 つの S3 パスを介して入力データを提供することもできます。この S3 パスは、1 つ以上の CSVtrain/ ファイルを含むという名前のサブディレクトリがあるディレクトリを指している必要があります。オプションで、同じ場所に 1 つ以上の CSV ファイルがある別のサブディレクトリを含めることができます。validation/検証データが提供されない場合、トレーニングデータの 20% が検証データとしてランダムにサンプリングされます。予測変数にカテゴリの特徴が含まれている場合は、categorical_index.jsonデータサブディレクトリと同じ場所に名前を付けた JSON ファイルを提供できます。

注記

CSV トレーニング入力モードでは、アルゴリズムで使用可能な合計メモリ (インスタンス数にで使用可能なメモリを掛けたものInstanceType) がトレーニングデータセットを保持できる必要があります。

SageMaker LightGBM は Python Joblib モジュールを使用してモデルをシリアル化または逆シリアル化します。これを使用してモデルを保存またはロードできます。

SageMaker LightGBM JobLib でトレーニングされたモデルをモジュールで使用するには
  • 次の 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)

LightGBM アルゴリズムの Amazon EC2 インスタンスに関する推奨事項

SageMaker LightGBM は現在、シングルインスタンスとマルチインスタンスの CPU トレーニングをサポートしています。マルチインスタンス CPU トレーニング (分散トレーニング) の場合、instance_count Estimatorを定義するときに1より大きい数を指定します。LightGBM による分散型トレーニングの詳細については、「Amazon SageMaker LightGBM Dask を使用した分散型トレーニング」を参照してください。

LightGBM は (コンピューティングバウンドではなく) メモリバウンドのアルゴリズムです。そのため、コンピューティング最適化インスタンス (C5 など) よりも、汎用コンピュートインスタンス (M5 など) の方が適しています。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。

LightGBM サンプルノートブック

次の表は、Amazon SageMaker LightGBM アルゴリズムのさまざまなユースケースに対応する各種サンプルノートブックの概要を示しています。

ノートブックのタイトル 説明

Amazon SageMaker LightGBM CatBoost とアルゴリズムによる表形式の分類

このノートブックでは、Amazon SageMaker LightGBM アルゴリズムを使用して表形式の分類モデルをトレーニングおよびホストする方法を示しています。

Amazon SageMaker LightGBM CatBoost とアルゴリズムによる表形式リグレッション

このノートブックでは、Amazon SageMaker LightGBM アルゴリズムを使用して表形式の回帰モデルをトレーニングおよびホストする方法を示しています。

Amazon SageMaker LightGBM Dask を使った分散型トレーニング

このノートブックは、Dask フレームワークを使用した Amazon SageMaker LightGBM アルゴリズムによる分散トレーニングを示しています。

サンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については SageMaker、「」を参照してくださいアマゾン SageMaker ノートブックインスタンス。ノートブックインスタンスを作成して開いた後、[Examples] (SageMakerExamples) タブを選択して、 SageMaker すべてのサンプルのリストを表示します。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。