モデルをトレーニングします - Amazon SageMaker AI

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

モデルをトレーニングします

このステップでは、トレーニングアルゴリズムを選択し、モデルのトレーニングジョブを実行します。Amazon SageMaker Python SDK は、トレーニング用の SageMaker AI 機能や、Amazon Elastic Container Registry (Amazon )、Amazon Elastic Compute Cloud (Amazon ECR)、EC2Amazon Simple Storage Service (Amazon S3) などの AWS インフラストラクチャにアクセスする機械学習 (ML) ライフサイクルをオーケストレーションしながら、モデルをトレーニングするためのフレームワーク推定器と汎用推定器を提供します。 SageMaker AI 組み込みフレームワーク推定器の詳細については、Amazon Python SageMaker SDKドキュメントの「フレームワーク」を参照してください。組み込みアルゴリズムの詳細については、「Amazon の組み込みアルゴリズムと事前トレーニング済みモデル SageMaker」を参照してください。

トレーニングアルゴリズムを選択する

通常、データセットに適切なアルゴリズムを選択するには、さまざまなモデルを評価して、データに最適なモデルを見つける必要があります。簡単にするために、AI SageMaker XGBoost Amazon SageMaker AI によるアルゴリズム 組み込みアルゴリズムは、このチュートリアル全体でモデルを事前に評価することなく使用されます。

ヒント

SageMaker AI で表形式のデータセットに適したモデルを検索する場合は、機械学習ソリューションを自動化する Amazon SageMaker Autopilot を使用します。詳細については、「SageMaker Autopilot」を参照してください。

トレーニングジョブを作成して実行する

使用するモデルを特定したら、トレーニング用の SageMaker AI 推定器の構築を開始します。このチュートリアルでは、 SageMaker AI 汎用推定器のXGBoost組み込みアルゴリズムを使用します。

モデルトレーニングジョブを実行するには
  1. 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 またはノートブックインスタンスでこのインストールを実行する場合は、バージョン更新の適用を完了するためにカーネルを手動で更新する必要があります。

  2. 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 での分散トレーニング」を参照してください。

  3. 推定器の 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 による自動モデル調整」を参照してください。

  4. 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" )
  5. モデルトレーニングを開始するには、推定器の fit メソッドをトレーニングデータセットと検証データセットで呼び出します。wait=True を設定すると、fit メソッドは、進捗状況ログを表示し、トレーニングが完了するまで待機状態になります。

    xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)

    モデルトレーニングの詳細については、「Amazon でモデルをトレーニングする SageMaker」を参照してください。このチュートリアルのトレーニングジョブには、最大で 10 分かかる場合があります。

    トレーニングジョブが完了したら、XGBoostトレーニングレポートと SageMaker デバッガーによって生成されたプロファイリングレポートをダウンロードすることができます。XGBoost トレーニングレポートでは、反復、特徴量の重要度、混同行列、精度曲線、その他のトレーニングの統計結果に関する損失関数など、トレーニングの進行状況と結果に関するインサイトが得られます。例えば、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
ヒント

ML ライフサイクルの各段階 (データ収集、モデルのトレーニングとチューニング、予測のためにデプロイされた ML モデルのモニタリング) で発生する可能性のあるバイアスを測定するには、 SageMaker Clarify を使用します。詳細については、「モデルの説明可能性」を参照してください。例については、「Clarify end-to-endを使用した公平性と説明可能性」のサンプルノートブックを参照してください。 SageMaker