翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モデルをトレーニングします
このステップでは、トレーニングアルゴリズムを選択し、モデルのトレーニングジョブを実行します。Amazon SageMaker Python SDK
トレーニングアルゴリズムを選択する
通常、データセットに適切なアルゴリズムを選択するには、さまざまなモデルを評価して、データに最適なモデルを見つける必要があります。簡単にするために、AI SageMaker XGBoost Amazon SageMaker AI によるアルゴリズム 組み込みアルゴリズムは、このチュートリアル全体でモデルを事前に評価することなく使用されます。
ヒント
SageMaker AI で表形式のデータセットに適したモデルを検索する場合は、機械学習ソリューションを自動化する Amazon SageMaker Autopilot を使用します。詳細については、「SageMaker Autopilot」を参照してください。
トレーニングジョブを作成して実行する
使用するモデルを特定したら、トレーニング用の SageMaker AI 推定器の構築を開始します。このチュートリアルでは、 SageMaker AI 汎用推定器のXGBoost組み込みアルゴリズムを使用します。
モデルトレーニングジョブを実行するには
-
Amazon SageMaker Python SDK
をインポートし、まず現在の SageMaker AI セッションから基本情報を取得します。 import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))
次のような情報が返されます。
-
region
– SageMaker AI ノートブックインスタンスが実行されている現在の 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 AI 推定器を構築するには、次のパラメータを指定します。
-
image_uri
– トレーニングコンテナイメージ を指定しますURI。この例では、 SageMaker AI XGBoostトレーニングコンテナURIは を使用して指定されていますsagemaker.image_uris.retrieve
。 -
role
– SageMaker AI がユーザーに代わってタスクを実行するために使用する AWS Identity and Access Management (IAM) ロール (トレーニング結果の読み取り、Amazon S3 からのモデルアーティファクトの呼び出し、Amazon S3 へのトレーニング結果の書き込みなど)。 -
instance_count
およびinstance_type
- モデルトレーニングに使用する Amazon ML EC2 コンピューティングインスタンスのタイプと数。トレーニングの演習では、4 つの 、16 GB のメモリCPUs、Amazon Elastic Block Store (Amazon EBS) ストレージ、および高いネットワークパフォーマンスを持つ 1 つのml.m4.xlarge
インスタンスを使用します。EC2 コンピューティングインスタンスタイプの詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。請求の詳細については、「Amazon SageMaker AI の料金 」を参照してください。 -
volume_size
– トレーニングインスタンスにアタッチするEBSストレージボリュームのサイズを GB 単位で表します。File
モードを使用する場合は、トレーニングデータを保存するのに十分な大きさである必要があります (File
モードはデフォルトで有効です)。このパラメータを指定しない場合は、値はデフォルトで 30 になります。 -
output_path
– SageMaker AI がモデルアーティファクトとトレーニング結果を保存する S3 バケットへのパス。 -
sagemaker_session
– トレーニングジョブが使用するオペレーションやその他の AWS サービスとの SageMaker APIインタラクションを管理するセッションオブジェクト。 -
rules
– SageMaker デバッガーの組み込みルールのリストを指定します。この例では、create_xgboost_report()
ルールはトレーニングの進行状況と結果に関するインサイトを提供する XGBoost レポートを作成し、ProfilerReport()
ルールはEC2コンピューティングリソースの使用率に関するレポートを作成します。詳細については、「SageMaker のデバッガーインタラクティブレポート XGBoost」を参照してください。
ヒント
畳み込みニューラルネットワーク (CNN) や自然言語処理 (NLP) モデルなど、大規模な深層学習モデルの分散トレーニングを実行する場合は、データ並列処理またはモデル並列処理に SageMaker AI 分散を使用します。詳細については、「Amazon SageMaker AI での分散トレーニング」を参照してください。
-
-
推定器の
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 AI ハイパーパラメータ最適化機能を使用してハイパーパラメータを調整することもできます。詳細については、「 SageMaker AI による自動モデル調整」を参照してください。
-
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トレーニングレポートから次の損失曲線を見つけることができます。これは、オーバーフィットの問題があることを明確に示しています。
次のコードを実行して、デバッガートレーニングレポートが生成される 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
デバッガーの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 オペレーションプロファイリング結果の概要と詳細を示すデバッガープロファイリングレポートのファイルリンクを返します。
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 デバッガー」を参照してください。モデルパラメータの完全な分析については、「Amazon SageMaker Debugger による説明可能性
」のサンプルノートブックを参照してください。
これで、トレーニング済みのXGBoostモデルが作成されました。 SageMaker AI はモデルアーティファクトを S3 バケットに保存します。モデルアーティファクトの場所を確認するには、次のコードを実行して xgb_model
推定器の model_data 属性を出力します。
xgb_model.model_data