翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 4: モデルをトレーニングする
Amazon SageMaker Python SDK
トレーニングアルゴリズムを選択する
通常、データセットに適切なアルゴリズムを選択するには、さまざまなモデルを評価して、データに最適なモデルを見つける必要があります。わかりやすくするために、 SageMakerこのチュートリアルでは、モデルの事前評価を行わずにAmazon で XGBoost アルゴリズムを使用する SageMaker組み込みアルゴリズムが使用されます。
ヒント
表形式のデータセットに適したモデル SageMaker を検索する場合は、機械学習ソリューションを自動化する Amazon SageMaker Autopilot を使用します。詳細については、「SageMaker オートパイロット」を参照してください。
トレーニングジョブを作成して実行する
使用するモデルを特定したら、トレーニング用の SageMaker 推定器の構築を開始します。このチュートリアルでは、 SageMaker 汎用推定器に XGBoost 組み込みアルゴリズムを使用します。
モデルトレーニングジョブを実行するには
-
Amazon SageMaker Python SDK
をインポートし、まず現在の SageMaker セッションから基本情報を取得します。 import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))
次のような情報が返されます。
-
region
– ノートブックインスタンスが実行され SageMakerている現在の AWS リージョン。 -
role
- ノートブックインスタンスで使用されている IAM ロール。
注記
を実行して SageMaker Python SDK のバージョンを確認します
sagemaker.__version__
。このチュートリアルはsagemaker>=2.20
に基づいています。SDK が古い場合は、以下のコマンドを実行して最新バージョンをインストールします。! pip install -qU sagemaker
終了する SageMaker Studio またはノートブックインスタンスでこのインストールを実行する場合は、バージョン更新の適用を完了するためにカーネルを手動で更新する必要があります。
-
-
sagemaker.estimator.Estimator
クラスを使用して XGBoost 推定器を作成します。次のサンプルコードでは、XGBoost 推定器の名前がxgb_model
になっています。from sagemaker.debugger import Rule, ProfilerRule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()), ProfilerRule.sagemaker(rule_configs.ProfilerReport()) ] )
SageMaker 推定器を構築するには、次のパラメータを指定します。
-
image_uri
- トレーニングコンテナイメージ URI を指定します。この例では、 SageMaker XGBoost トレーニングコンテナ URI は を使用して指定されていますsagemaker.image_uris.retrieve
。 -
role
– がユーザーに代わってタスクを実行するために SageMaker 使用する AWS Identity and Access Management (IAM) ロール (トレーニング結果の読み取り、Amazon S3 からのモデルアーティファクトの呼び出し、Amazon S3 へのトレーニング結果の書き込みなど)。 -
instance_count
とinstance_type
- モデルのトレーニングに使用される Amazon EC2 機械学習コンピューティングインスタンスのタイプと数。このトレーニング演習では、単一のml.m4.xlarge
インスタンスを使用します。このインスタンスは、4 つの CPU、16 GB のメモリ、Amazon Elastic Block Store (Amazon EBS) ストレージ、高いネットワークパフォーマンスを備えています。EC2 コンピューティングインスタンスのタイプの詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。請求の詳細については、「Amazon の SageMaker 料金 」を参照してください。 -
volume_size
-トレーニングインスタンスにアタッチする EBS ストレージボリュームのサイズ (GB)。File
モードを使用する場合は、トレーニングデータを保存するのに十分な大きさである必要があります (File
モードはデフォルトで有効です)。このパラメータを指定しない場合は、値はデフォルトで 30 になります。 -
output_path
– がモデルアーティファクトとトレーニング結果を保存する S3 バケット SageMakerへのパス。 -
sagemaker_session
– トレーニングジョブが使用する SageMaker API オペレーションやその他の AWS サービスとのやり取りを管理するセッションオブジェクト。 -
rules
– SageMaker デバッガーの組み込みルールのリストを指定します。この例では、create_xgboost_report()
ルールはトレーニングの進行状況と結果に関するインサイトを提供する XGBoost レポートを作成し、ProfilerReport()
ルールは EC2 コンピューティングリソースの使用状況に関するレポートを作成します。詳細については、「SageMaker デバッガー XGBoost トレーニングレポート」を参照してください。
ヒント
畳み込みニューラルネットワーク (CNN) モデルや自然言語処理 (NLP) モデルなど、大規模な深層学習モデルの分散トレーニングを実行する場合は、データ並列処理またはモデル並列処理に SageMaker 分散 を使用します。詳細については、「Amazon での分散トレーニング SageMaker」を参照してください。
-
-
推定器の
set_hyperparameters
メソッドを呼び出して、XGBoost アルゴリズムのハイパーパラメータ値を設定します。XGBoost ハイパーパラメータの詳細なリストについては、「XGBoost ハイパーパラメータ」を参照してください。xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
ヒント
ハイパーパラメータ最適化機能を使用して SageMaker ハイパーパラメータを調整することもできます。詳細については、「でモデルの自動チューニングを実行する SageMaker」を参照してください。
-
TrainingInput
クラスを使用して、トレーニング用のデータ入力フローを設定します。次のサンプルコードは、「データセットをトレーニング、検証、テストデータセットに分割する」セクションで Amazon S3 にアップロードしたトレーニングデータセットと検証データセットを使用するためのTrainingInput
オブジェクトの設定方法を示しています。from sagemaker.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
-
モデルトレーニングを開始するには、推定器の
fit
メソッドをトレーニングデータセットと検証データセットで呼び出します。wait=True
を設定すると、fit
メソッドは、進捗状況ログを表示し、トレーニングが完了するまで待機状態になります。xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)
モデルトレーニングの詳細については、「Amazon でモデルをトレーニングする SageMaker」を参照してください。このチュートリアルのトレーニングジョブには、最大で 10 分かかる場合があります。
トレーニングジョブが完了したら、XGBoost トレーニングレポートと SageMaker デバッガーによって生成されたプロファイリングレポートをダウンロードできます。XGBoost トレーニングレポートでは、イテレーションに対する損失関数、特徴量の重要度、混同行列、精度曲線、トレーニングのその他の統計結果など、トレーニングの進行状況と結果に関するインサイトが提供されます。例えば、XGBoost トレーニングレポートで次のような損失曲線が見つかる場合があります。これは、オーバーフィットの問題があることを明確に示しています。
次のコードを実行すると、Debugger トレーニングレポートが生成される S3 バケット URI を指定し、レポートが存在するかどうかを確認します。
rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive
Debugger XGBoost トレーニングレポートとプロファイリングレポートを現在のワークスペースにダウンロードします。
! aws s3 cp {rule_output_path} ./ --recursive
次の IPython スクリプトを実行すると、XGBoost トレーニングレポートのファイルリンクを取得します。
from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))
次の IPython スクリプトは、EC2 インスタンスのリソース使用率、システムボトルネックの検出結果、Python オペレーションプロファイリング結果の概要と詳細を示す Debugger プロファイリングレポートのファイルリンクを返します。
profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
ヒント
HTML レポートが JupyterLab ビューにプロットをレンダリングしない場合は、レポートの上部にある信頼 HTML を選択する必要があります。
オーバーフィット、勾配の消失、モデルの収束を妨げるその他の問題などのトレーニングの問題を特定するには、 SageMaker デバッガーを使用して、ML モデルのプロトタイプ作成とトレーニング中に自動アクションを実行します。詳細については、「Amazon SageMaker Debugger を使用してモデルのパフォーマンスをデバッグおよび改善する」を参照してください。モデルパラメータの完全な分析については、「Amazon SageMaker Debugger による説明可能性
のサンプルノートブック」を参照してください。
これで、トレーニング済みの XGBoost モデルが作成されました。 はモデルアーティファクトを S3 バケットに SageMaker 保存します。モデルアーティファクトの場所を確認するには、次のコードを実行して xgb_model
推定器の model_data 属性を出力します。
xgb_model.model_data
ヒント
ML ライフサイクルの各段階 (データ収集、モデルトレーニングとチューニング、予測用にデプロイされた ML モデルのモニタリング) で発生する可能性のあるバイアスを測定するには、 SageMaker Clarify を使用します。詳細については、「モデルの説明可能性」を参照してください。 end-to-end 例については、 SageMaker 「Clarify を使用した公平性と説明可能性