モデルトレーニング - Amazon SageMaker

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

モデルトレーニング

機械学習 (ML) ライフサイクル全体のトレーニングステージは、トレーニングデータセットへのアクセスから最終モデルの生成、デプロイに最適なパフォーマンスを備えたモデルの選択まで多岐にわたります。以下のセクションでは、利用可能な SageMaker トレーニング機能とリソースの概要と、それぞれの詳細な技術情報について説明します。

SageMaker トレーニングの基本アーキテクチャ

SageMaker を初めて使用していて、データセットでモデルをトレーニングするためのクイック ML ソリューションを見つけたい場合は、JumpStart SageMaker Studio Classic 内で SageMaker CanvasSageMaker Autopilot などのノーコードまたはローコードソリューションの使用を検討してください。

中間コーディングエクスペリエンスの場合は、SageMaker Studio Classic ノートブックまたはSageMaker ノートブックインスタンス の使用を検討してください。開始するには、「入門ガイドモデルをトレーニングします」の「」の指示に従ってください。 SageMaker これは、機械学習フレームワークを使用して独自のモデルとトレーニングスクリプトを作成するユースケースに推奨されます。

SageMaker ジョブの中核は、ML ワークロードのコンテナ化とコンピューティングリソースを管理する機能です。 SageMaker トレーニングプラットフォームは、ML トレーニングワークロードのインフラストラクチャのセットアップと管理に関連する重労働を処理します。 SageMaker トレーニングを使用すると、モデルの開発、トレーニング、微調整に集中できます。

次のアーキテクチャ図は、 が ML トレーニングジョブ SageMaker を管理し、 SageMaker ユーザーに代わって Amazon EC2インスタンスをプロビジョニングする方法を示しています。ユーザーとして独自のトレーニングデータセットを持ち込むことができ、Amazon S3 に保存 SageMaker できます。利用可能な SageMaker 組み込みアルゴリズムから ML モデルトレーニングを選択するか、一般的な機械学習フレームワークで構築されたモデルを使用して独自のトレーニングスクリプトを導入できます。

ユーザーがデータを提供し、アルゴリズムを選択し、コンピューティングインフラストラクチャを SageMaker プロビジョニングする方法。

SageMaker トレーニングワークフローと機能の完全なビュー

機械学習トレーニングの全行程には、機械学習モデルへのデータインジェスト、コンピュートインスタンスでのモデルのトレーニング、モデルのアーティファクトと出力の取得以外のタスクも含まれます。トレーニング前、トレーニング中、トレーニング後のあらゆる段階を評価して、モデルが目標とする精度を満たすように適切なトレーニングが実行されていることを確認する必要があります。

次のフローチャートは、ML ライフサイクルのトレーニングフェーズ全体でのアクション (青いボックス) と利用可能な SageMaker トレーニング機能 (青いボックス) の概要を示しています。

ML トレーニングワークフローの各ステップに使用する推奨ステップと機能のフローチャート。

以下のセクションでは、前のフローチャートに示すトレーニングの各フェーズと、機械学習トレーニングの 3 つのサブステージ SageMaker 全体で が提供する便利な機能について説明します。

トレーニング前

データリソースとアクセスを設定するシナリオはいくつかあり、トレーニングの前に検討する必要があります。次の図とトレーニング前の各段階の詳細な説明を参照して、どのような決定を下す必要があるかを把握してください。

トレーニング前のタスクと関連する SageMaker機能を示すフローチャート
  • データの準備: トレーニングの前に、データ準備段階でデータクリーニングと機能エンジニアリングを完了しておく必要があります。 SageMaker には、役立つラベル付けツールと機能エンジニアリングツールがいくつかあります。詳細については、「データにラベルを付ける」、「データセットを準備して分析する」、「データを処理する」、「特徴を作成、保存、共有する」を参照してください。

  • アルゴリズムまたはフレームワークを選択する: 必要なカスタマイズの程度に応じて、アルゴリズムとフレームワークのオプションは異なります。

  • データストレージの管理: データストレージ (Amazon S3、Amazon EFS、Amazon などFSx) と Amazon EC2コンピューティングインスタンスで実行されるトレーニングコンテナ間のマッピングを理解します。 SageMaker は、トレーニングコンテナ内のストレージパスとローカルパスをマッピングします。手動で指定することもできます。マッピングが完了したら、ファイル、パイプ、 FastFile モードのいずれかのデータ送信モードの使用を検討してください。がストレージパスをマッピングする SageMaker方法については、「トレーニングストレージフォルダ」を参照してください。

  • トレーニングデータへのアクセスをセットアップする: Amazon SageMaker ドメイン、ドメインユーザープロファイル、、IAMAmazon 、および を使用してVPC、最もセキュリティに敏感な組織の AWS KMS 要件を満たします。

  • 入力データをストリーミングする: SageMaker ファイル 、パイプ 、 の 3 つのデータ入力モードを提供しますFastFileデフォルトの入力モードはファイルモードで、トレーニングジョブの初期化中にデータセット全体が読み込まれます。データストレージからトレーニングコンテナにデータをストリーミングする一般的なベストプラクティスについては、「トレーニングデータにアクセスする」を参照してください。

    パイプモードの場合は、拡張マニフェストファイルを使用して Amazon Simple Storage Service (Amazon S3) から直接データをストリーミングし、モデルをトレーニングすることもできます。パイプモードを使用すると、Amazon Elastic Block Store では最終的なモデルアーティファクトのみが保存され、トレーニングデータセット全体を保存する必要はないため、ディスク容量を削減できます。詳細については、「拡張マニフェストファイルを使用してトレーニングジョブにデータセットメタデータを提供する」を参照してください。

  • データのバイアスの分析: トレーニングの前に、データセットとモデルを不利なグループに対するバイアスを分析して、モデルが SageMaker Clarify を使用してバイアスのないデータセットを学習したことを確認できます。

  • 使用するもの SageMaker SDKを選択します。トレーニングジョブを で起動するには、高レベルの SageMaker Python SageMakerを使用する方法とSDK、SDKPython (Boto3) 用の の低レベルの SageMaker APIs を使用する方法または を使用する方法の 2 つの方法があります AWS CLI。 SageMaker Python は低レベル SageMaker APIをSDK抽象化して、便利なツールを提供します。で前述したように SageMaker トレーニングの基本アーキテクチャJumpStart SageMaker Studio Classic または SageMaker Autopilot 内で SageMaker Canvas を使用してノーコードまたはミニマルコードオプションを追求することもできます。

トレーニング中

トレーニング中は、コンピューティングリソース、コストの最適化、そして最も重要なモデルのパフォーマンスをスケーリングしながら、トレーニングの安定性、トレーニング速度、トレーニング効率を継続的に改善する必要があります。トレーニング中のステージと関連する SageMaker トレーニング機能の詳細については、「」を参照してください。

トレーニング中のタスクと関連する SageMaker機能を示すフローチャート
  • インフラストラクチャの設定: ユースケースに適したインスタンスタイプとインフラストラクチャ管理ツールを選択します。小規模なインスタンスから始めて、ワークロードに応じてスケールアップできます。表形式のデータセットでモデルをトレーニングするには、C4 または C5 CPUインスタンスファミリーの最小インスタンスから始めます。コンピュータビジョンまたは自然言語処理用の大規模なモデルをトレーニングするには、P2, P3, G4dnまたは G5 GPUインスタンスファミリーの最小インスタンスから始めます。また、 が提供する次のインスタンス管理ツールを使用して、クラスター内のさまざまなインスタンスタイプを混在させたり、インスタンスをウォームプールに保持したりすることもできます SageMaker。さらに、永続キャッシュを使用すると、ウォームプールのみによるレイテンシーの削減よりも、反復的なトレーニングジョブのレイテンシーと課金対象時間を削減できます。詳細については、以下のトピックを参照してください。

    トレーニングジョブを実行するには十分なクォータが必要です。クォータが不足しているインスタンスでトレーニングジョブを実行すると、ResourceLimitExceeded エラーが表示されます。アカウントで現在利用可能なクォータを確認するには、Service Quotas コンソールを使用します。クォータの増加を要求する方法については、「サポートされているリージョンおよびクォータ」を参照してください。また、 に応じて料金情報と使用可能なインスタンスタイプを検索するには AWS リージョン、Amazon SageMaker 料金ページでテーブルを検索します。

  • ローカルコードからトレーニングジョブを実行する: ローカルコードをリモートデコレータで注釈付けして、Amazon SageMaker Studio Classic、Amazon SageMaker ノートブック内、またはローカル統合開発環境から SageMaker トレーニングジョブとしてコードを実行できます。詳細については、「ローカルコードを SageMaker トレーニングジョブとして実行する」を参照してください。

  • トレーニングジョブの追跡: SageMaker Experiments、 SageMaker Debugger、または Amazon を使用して、トレーニングジョブをモニタリングおよび追跡します CloudWatch。Experiments を使用して SageMaker、精度と収束の観点からモデルのパフォーマンスを監視し、複数のトレーニングジョブ間のメトリクスの比較分析を実行できます。コンピューティングリソース使用率は、 SageMaker デバッガーのプロファイリングツールまたは Amazon を使用して確認できます CloudWatch。詳細については、以下のトピックを参照してください。

    さらに、深層学習タスクでは、Amazon SageMaker Debugger モデルデバッグツール組み込みルールを使用して、モデル収束と重み更新プロセスにおけるより複雑な問題を特定します。

  • 分散トレーニング: トレーニングインフラストラクチャの設定ミスや out-of-memory問題が原因で、トレーニングジョブが中断することなく安定したステージに進んでいる場合は、ジョブをスケーリングし、数日から数か月にわたって長期間実行するオプションをさらに見つけることをお勧めします。スケールアップの準備ができたら、分散トレーニングを検討してください。 は、軽い ML ワークロードから大規模な深層学習ワークロードまで、分散計算のためのさまざまなオプション SageMaker を提供します。

    非常に大規模なデータセットで非常に大規模なモデルをトレーニングする深層学習タスクでは、SageMaker 分散トレーニング戦略のいずれかを使用して、データ並列処理、モデル並列処理、またはこれら 2 つの組み合わせをスケールアップして実現することを検討してください。SageMaker Training Compiler を使用して、GPUインスタンスのモデルグラフをコンパイルおよび最適化することもできます。これらの SageMaker 機能は、 PyTorch、 TensorFlow、Hugging Face Transformers などの深層学習フレームワークをサポートしています。

  • モデルハイパーパラメータチューニング: で自動モデルチューニング SageMakerを使用してモデルハイパーパラメータをチューニングします。グリッド検索やベイズ検索などのハイパーパラメータチューニングメソッド SageMaker を提供し、改善されていないハイパーパラメータチューニングジョブの早期停止機能を備えた並列ハイパーパラメータチューニングジョブを起動します。

  • スポットインスタンスによるチェックポイントとコスト削減: トレーニング時間がそれほど大きな懸念事項でない場合は、マネージドスポットインスタンスによるモデルトレーニングコストの最適化を検討します。スポットインスタンスの交換による断続的なジョブの休止からの復元を継続するには、スポットトレーニングのチェックポイントを有効にする必要があることに注意してください。また、トレーニングジョブが予期せず終了した場合に備えて、チェックポイント機能を使用してモデルをバックアップすることもできます。詳細については、以下のトピックを参照してください。

トレーニング後

トレーニング後は、最終的なモデルアーティファクトを取得して、モデルのデプロイと推論に使用します。次の図に示すように、トレーニング後のフェーズに関連する追加のアクションがあります。

トレーニング後のタスクと関連する SageMaker機能を示すフローチャート
  • ベースラインモデルを取得する: モデルアーティファクトを取得したら、それをベースラインモデルとして設定できます。モデルデプロイを本番稼働に移行する前に、以下のトレーニング後のアクションと SageMaker 機能の使用を検討してください。

  • モデルのパフォーマンスを調べてバイアスをチェックする: Amazon CloudWatch Metrics と SageMaker Clarify を使用してトレーニング後のバイアスを検出し、ベースラインに対する受信データとモデルのバイアスを経時的に検出します。新しいデータを評価し、定期的またはリアルタイムで新しいデータに対してモデル予測を評価する必要があります。これらの機能を使用すると、データやモデルの急激な変化や異常のほか、漸進的な変化またはドリフトに関するアラートを受け取ることができます。

  • のインクリメンタルトレーニング機能を使用して SageMaker 、拡張データセットを使用してモデルをロードおよび更新 (または微調整) することもできます。

  • モデルトレーニングは、SageMakerパイプラインのステップとして、または が提供する他のワークフロー機能の一部として登録 SageMaker して、ML ライフサイクル全体をオーケストレーションできます。