翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モデルをトレーニングします
このステップでは、トレーニングアルゴリズムを選択し、モデルのトレーニングジョブを実行します。Amazon SageMaker Python SDK
トレーニングアルゴリズムを選択する
通常、データセットに適切なアルゴリズムを選択するには、さまざまなモデルを評価して、データに最適なモデルを見つける必要があります。簡単に作業できるように、このチュートリアルでは、モデルの事前評価を行わずに SageMaker AI Amazon SageMaker AI の XGBoost アルゴリズム 組み込みアルゴリズムを使用します。
ヒント
使用する表形式データセットに適したモデルを SageMaker AI で探す場合は、機械学習ソリューションを自動化する Amazon SageMaker Autopilot を使用します。詳細については、「SageMaker Autopilot」を参照してください。
トレーニングジョブを作成して実行する
使用するモデルを特定したら、トレーニングジョブの構築を開始します。このチュートリアルでは、XGBoost 組み込みアルゴリズムを使用します。
モデルトレーニングジョブを実行するには
-
Amazon SageMaker Python SDK
をインポートし、現在の SageMaker AI セッションから基本情報を取得して開始します。 from sagemaker.core.helper.session_helper import Session, get_execution_role sagemaker_session = Session() region = sagemaker_session.boto_region_name print(f"AWS Region: {region}") role = get_execution_role() print(f"RoleArn: {role}")注記
sagemaker.__version__を実行して SageMaker Python SDK のバージョンを確認します。このチュートリアルはsagemaker>=3.0に基づいています。SDK が古い場合は、以下のコマンドを実行して最新バージョンをインストールします。! pip install -qU sagemakerこのインストールを既存の SageMaker Studio またはノートブックインスタンスで実行する場合は、カーネルを手動で更新して、バージョン更新の適用を完了させる必要があります。
次のような情報が返されます。
-
region– SageMaker AI ノートブックインスタンスが実行されている現在の AWS リージョン。 -
role- ノートブックインスタンスで使用されている IAM ロール。
-
-
XGBoost アルゴリズムのトレーニング設定を作成し、ハイパーパラメータを設定します。
コンストラクタで直接渡されたハイパーパラメータを持つ
sagemaker.train.ModelTrainerクラスModelTrainerを使用して を作成します。次のコード例では、ModelTrainer の名前は ですxgb_model_trainer。from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, OutputDataConfig from sagemaker.core import image_uris s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container = image_uris.retrieve("xgboost", region, "1.2-1") print(container) compute = Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=5 ) xgb_model_trainer = ModelTrainer( training_image=container, role=role, compute=compute, output_data_config=OutputDataConfig(s3_output_path=s3_output_location), hyperparameters={ "max_depth": "5", "eta": "0.2", "gamma": "4", "min_child_weight": "6", "subsample": "0.7", "objective": "binary:logistic", "num_round": "1000" } )SageMaker AI を構築するには
ModelTrainer、次のパラメータを指定します。-
training_image- トレーニングコンテナイメージ URI を指定します。この例では、image_uris.retrieveを使用して SageMaker AI XGBoost トレーニングコンテナ URI を指定しています。 -
role– SageMaker AI がユーザーに代わってタスクを実行するために使用する AWS Identity and Access Management (IAM) ロール (トレーニング結果の読み取り、Amazon S3 からのモデルアーティファクトの呼び出し、Amazon S3 へのトレーニング結果の書き込みなど)。 -
compute– モデルトレーニングに使用する Amazon EC2 ML コンピューティングインスタンスのタイプと数を指定するCompute設定オブジェクト。このトレーニング演習では、単一のml.m4.xlargeインスタンスを使用します。このインスタンスは、4 つの CPU、16 GB のメモリ、Amazon Elastic Block Store (Amazon EBS) ストレージ、高いネットワークパフォーマンスを備えています。EC2 コンピューティングインスタンスのタイプの詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。請求の詳細については、「Amazon SageMaker の料金 」を参照してください。 -
hyperparameters– トレーニングアルゴリズムのハイパーパラメータのディクショナリ。すべての値は文字列である必要があります。
ヒント
畳み込みニューラルネットワーク (CNN) や自然言語処理 (NLP) モデルなどの大規模な深層学習モデルの分散トレーニングを実行する場合は、データ並列処理またはモデル並列処理に SageMaker AI Distributed を使用します。詳細については、「Amazon SageMaker AI による分散トレーニング」を参照してください。
ヒント
SageMaker AI ハイパーパラメータ最適化機能を使用してハイパーパラメータをチューニングすることもできます。詳細については、「SageMaker AI の自動モデルチューニング」を参照してください。
-
-
トレーニング用のデータ入力を設定します。
InputDataクラスを使用して、トレーニング用のデータ入力フローを設定します。次のサンプルコードは、「データセットをトレーニング、検証、テストデータセットに分割する」セクションで Amazon S3 にアップロードしたトレーニングデータセットと検証データセットを使用するためのInputDataオブジェクトの設定方法を示しています。from sagemaker.train.configs import InputData train_input = InputData( channel_name="train", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/train.csv") ) validation_input = InputData( channel_name="validation", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv") ) -
モデルトレーニングを開始します。
モデルトレーニングを開始するには、トレーニングデータセットと検証データセットを使用してトレーナーの
trainメソッドを呼び出します。デフォルトでは、trainメソッドは進行状況ログを表示し、トレーニングが完了するまで待機します。xgb_model_trainer.train(input_data_config=[train_input, validation_input])モデルトレーニングの詳細については、「Amazon SageMaker でモデルをトレーニングする」を参照してください。このチュートリアルのトレーニングジョブには、最大で 10 分かかる場合があります。
トレーニングジョブが終わったら、XGBoost トレーニングレポートと SageMaker デバッガーによって生成されたプロファイリングレポートをダウンロードできます。XGBoost トレーニングレポートでは、イテレーションに対する損失関数、特徴量の重要度、混同行列、精度曲線、トレーニングのその他の統計結果など、トレーニングの進行状況と結果に関するインサイトが提供されます。例えば、XGBoost トレーニングレポートで次のような損失曲線が見つかる場合があります。これは、オーバーフィットの問題があることを明確に示しています。
次のコードを実行すると、Debugger トレーニングレポートが生成される S3 バケット URI を指定し、レポートが存在するかどうかを確認します。
training_job = xgb_model_trainer._latest_training_job rule_output_path = training_job.output_data_config.s3_output_path + "/" + training_job.training_job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursiveDebugger 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 プロファイリングレポートのファイルリンクを返します。
# Note: In V3, debugger rule outputs can be accessed via the SageMaker console # or the boto3 DescribeTrainingJob API (DebugRuleEvaluationStatuses field). # Example using boto3: # import boto3 # sm = boto3.client("sagemaker") # resp = sm.describe_training_job(TrainingJobName=training_job.training_job_name) # rule_statuses = resp["DebugRuleEvaluationStatuses"] profiler_report_name = "ProfilerReport-1234567890" display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))ヒント
HTML レポートの JupyterLab ビューにプロットがレンダリングされない場合は、レポートの上部にある [HTML を信頼] を選択する必要があります。
オーバーフィット、勾配の消失、モデルの収束を妨げるその他の問題など、トレーニングの問題を特定するには、SageMaker Debugger を使用して機械学習モデルのプロトタイプ作成やトレーニング中の自動化アクションを取得します。詳細については、「Amazon SageMaker デバッガー」を参照してください。モデルパラメータの詳細な解析を確認するには、「Amazon SageMaker Debugger による説明可能性
」サンプルノートブックを参照してください。
これで、XGBoost モデルをトレーニングしました。SageMaker AI は、モデルアーティファクトを S3 バケットに保存します。モデルアーティファクトの場所を確認するには、次のコードを実行して model_data 属性を出力します。
xgb_model_trainer._latest_training_job.model_artifacts.s3_model_artifacts
ヒント
機械学習ライフサイクル (データ収集、モデルトレーニングとチューニング、予測用にデプロイされた機械学習モデルのモニタリング) の各段階で発生する可能性のあるバイアスを測定するには、SageMaker Clarify を使用します。詳細については、「モデルの説明可能性」を参照してください。エンドツーエンドの例については、「Fairness and Explainability with SageMaker Clarify