翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の使用方法 SageMaker XGBoost
では SageMaker、 を組み込みアルゴリズムまたはフレームワークXGBoostとして使用できます。フレームワークXGBoostとして、独自のトレーニングスクリプトをカスタマイズできるため、より柔軟性が高く、より高度なシナリオにアクセスできます。以下のセクションでは、 を SageMaker Python とSDKアルゴリズムの入出力インターフェイスXGBoostで使用する方法について説明しますXGBoost。Amazon SageMaker Studio Classic UI XGBoostから を使用する方法については、「」を参照してくださいSageMaker JumpStart 事前トレーニング済みモデル。
フレームワークXGBoostとして使用する
をフレームワークXGBoostとして使用して、追加のデータ処理をトレーニングジョブに組み込むことができるカスタマイズされたトレーニングスクリプトを実行します。次のコード例では、 SageMaker Python は をフレームワークXGBoostAPIとしてSDK提供します。これは、 が APIs、、 TensorFlow MXNetなどの他のフレームワーク SageMaker を提供する と同様に機能します PyTorch。
import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbosity":"1", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "
your_xgboost_abalone_script.py
", framework_version='1.7-1
', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})
をフレームワークとして使用する例 end-to-end SageMaker XGBoostについては、「Amazon での回帰 SageMaker XGBoost
組み込みアルゴリズムXGBoostとして を使用する
次のコード例に示すように、XGBoost組み込みアルゴリズムを使用してXGBoostトレーニングコンテナを構築します。URI を使用してXGBoost SageMaker image_uris.retrieve
、組み込みアルゴリズムイメージを自動的に検出できますAPI。Amazon SageMaker Python SDKget_image_uri
を使用しますAPI。が正しい image_uris.retrieve
APIを見つけるにはURI、組み込みアルゴリズムの共通パラメータを参照してください。次にxgboost
、組み込みアルゴリズムイメージURIsと使用可能なリージョンの完全なリストから検索します。
XGBoost イメージ を指定したらURI、XGBoostコンテナを使用して推定器を使用して SageMaker 推定器を構築しAPI、トレーニングジョブを開始します。このXGBoost組み込みアルゴリズムモードには独自のXGBoostトレーニングスクリプトが組み込まれておらず、入力データセットで直接実行されます。
重要
イメージ を取得する SageMaker XGBoostときはURI、イメージURIタグ:1
に :latest
または を使用しないでください。使用するネイティブXGBoostパッケージバージョンを持つ SageMakerマネージドXGBoostコンテナを選択するサポートバージョンには、 のいずれかを指定する必要があります。コンテナに移行された SageMaker XGBoostパッケージバージョンを確認するには、「Docker Registry Paths」と「サンプルコード」を参照してください。次に、 を選択し AWS リージョン、 XGBoost (アルゴリズム) セクションに移動します。
import sagemaker import boto3 from sagemaker import image_uris from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "
1.7-1
") # construct a SageMaker estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})
を組み込みアルゴリズムXGBoostとしてセットアップする方法の詳細については、次のノートブックの例を参照してください。
XGBoost アルゴリズムの入力/出力インターフェイス
勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。
の SageMaker 実装では、トレーニングと推論のために次のデータ形式XGBoostがサポートされています。
-
text/libsvm (default)
-
text/csv
-
application/x-parquet
-
アプリケーション/x-recordio-protobuf
注記
トレーニングと推論の入力に関して注意すべき点がいくつかあります。
-
パフォーマンスを向上させるには、ファイルモード XGBoostで を使用することをお勧めします。このモードでは、Amazon S3 からのデータがトレーニングインスタンスボリュームに保存されます。
-
列指向入力によるトレーニングでは、アルゴリズムはターゲット変数 (ラベル) が最初の列であることを前提としています。推論の場合、アルゴリズムは入力にラベル列がないと見なします。
-
CSV データの場合、入力にヘッダーレコードがあってはなりません。
-
LIBSVM トレーニングの場合、アルゴリズムは、ラベル列の後の列に特徴量のゼロベースのインデックス値のペアが含まれていることを前提としています。そのため、各行は <label> <index0>:<value0> <index1>:<value1> の形式になります。
-
インスタンスタイプと分散トレーニングについては、「EC2 XGBoostアルゴリズムのインスタンスレコメンデーション」を参照してください。
CSV トレーニング入力モードでは、アルゴリズムで使用できる合計メモリがトレーニングデータセットを保持できる必要があります。使用可能な合計メモリは として計算されますInstance Count * the memory available in the InstanceType
。libsvm トレーニング入力モードの場合、これは必須ではありませんが推奨されます。
v1.3-1 以降では、 SageMaker XGBoostは を使用してXGBoost内部バイナリ形式でモデルを保存しますBooster.save_model
。以前のバージョンでは、モデルのシリアル化/逆シリアル化に Python の pickle モジュールを使用していました。
注記
オープンソース でモデルを使用する場合は、 SageMaker XGBoostバージョンに注意してくださいXGBoost。バージョン 1.3-1 以降ではXGBoost内部バイナリ形式を使用し、以前のバージョンでは Python pickle モジュールを使用します。
オープンソースで v1.3-1 以降で SageMaker XGBoostトレーニングされたモデルを使用するには XGBoost
-
次の Python コードを使用します。
import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(
model_file_path
) xgb_model.predict(dtest
)
オープンソースで の SageMaker XGBoost以前のバージョンでトレーニングされたモデルを使用するには XGBoost
-
次の Python コードを使用します。
import pickle as pkl import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(
model_file_path
, 'rb')) # prediction with test data pred = model.predict(dtest
)
ラベル付きデータポイントの重要性を区別するには、インスタンス重みサポートを使用します。
-
SageMaker XGBoost では、各インスタンスに重み値を割り当てて、ラベル付けされたデータポイントの重要性を区別できます。text/libsvm 入力の場合、顧客がデータインスタンスに重み値を割り当てるには、ラベルの後に重み値を付加します。例えば、
label:weight idx_0:val_0 idx_1:val_1...
と指定します。text/csv 入力の場合、顧客はパラメータでcsv_weights
フラグをオンにし、その列でラベルの後に重み値を付加する必要があります。例:label,weight,val_0,val_1,...
)。