Amazon でチェックポイントを使用する SageMaker - Amazon SageMaker

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

Amazon でチェックポイントを使用する SageMaker

Amazon のチェックポイント SageMaker を使用して、トレーニング中の機械学習 (ML) モデルの状態を保存します。チェックポイントはモデルのスナップショットであり、機械学習フレームワークのコールバック関数を使用して設定できます。保存されたチェックポイントを使用して、トレーニングジョブを最後に保存したチェックポイントから再開できます。

チェックポイントを使用すると、以下を実行できます。

  • トレーニングジョブまたはインスタンスの予期せぬ中断の発生に備えて、トレーニング中のモデルのスナップショットを保存する。

  • 後でモデルのトレーニングをチェックポイントから再開する。

  • トレーニングの中間段階にあるモデルを分析する。

  • アクセス速度を向上させるには、S3 Express One Zone でチェックポイントを使用します。

  • SageMaker マネージドスポットトレーニングでチェックポイントを使用すると、トレーニングコストを節約できます。

SageMaker トレーニングメカニズムは Amazon EC2 インスタンスのトレーニングコンテナを使用し、チェックポイントファイルはコンテナのローカルディレクトリ (デフォルトは ) に保存されます/opt/ml/checkpoints。 は、ローカルパスから Amazon S3 にチェックポイントをコピーする機能 SageMaker を提供し、そのディレクトリ内のチェックポイントを S3 と自動的に同期します。S3 内の既存のチェックポイントは、ジョブの開始時にコンテナに SageMaker書き込まれ、ジョブがチェックポイントから再開できるようになります。ジョブの開始後に S3 フォルダに追加されたチェックポイントは、トレーニングコンテナにコピーされません。 SageMaker また、 はトレーニング中にコンテナから S3 に新しいチェックポイントを書き込みます。チェックポイントが SageMaker コンテナから削除されると、S3 フォルダにも削除されます。

Amazon S3 Express One Zone ストレージクラス (S3 Express One Zone) SageMaker で Amazon のチェックポイントを使用すると、チェックポイントにすばやくアクセスできます。チェックポイントを有効にし、チェックポイントの保存先の S3 URI を指定するときは、S3 汎用バケットまたは S3 ディレクトリバケットのフォルダに S3 URI を指定できます。S3 Express One Zone および S3 ディレクトリバケットの詳細については、「S3 Express One Zone とは」を参照してください。

SageMaker マネージドスポットトレーニングでチェックポイントを使用している場合、 はスポットインスタンスでモデルトレーニングの SageMaker チェックポイントを管理し、次のスポットインスタンスでトレーニングジョブを再開します。 SageMaker マネージドスポットトレーニングを使用すると、ML モデルのトレーニングにかかる請求対象時間を大幅に短縮できます。詳細については、「Amazon でマネージドスポットトレーニングを使用する SageMaker」を参照してください。

のフレームワークとアルゴリズムのチェックポイント SageMaker

チェックポイントを使用して、任意のフレームワークに基づいて構築された ML モデルのスナップショットを 内に保存します SageMaker。

SageMaker チェックポイントをサポートするフレームワークとアルゴリズム

SageMaker は、トレーニングスクリプトを変更することなく、 AWS 深層学習コンテナと組み込みアルゴリズムのサブセットのチェックポイントをサポートしています。 SageMaker はチェックポイントをデフォルトのローカルパスに保存'/opt/ml/checkpoints'し、Amazon S3 にコピーします。

チェックポイントをサポートしない構築済みのアルゴリズムがマネージドスポットトレーニングジョブで使用されている場合、 SageMaker 中断による無駄なトレーニング時間を制限するために、 はジョブの最大待機時間を 1 時間より長くすることはできません。

カスタムトレーニングコンテナおよびその他のフレームワークの場合

前のセクションに記載されていない独自のトレーニングコンテナ、トレーニングスクリプト、またはその他のフレームワークを使用している場合は、コールバックまたはトレーニング APIs を使用してトレーニングスクリプトを適切に設定し、チェックポイントをローカルパス ('/opt/ml/checkpoints') に保存し、トレーニングスクリプトのローカルパスからロードする必要があります。 SageMaker 推定器はローカルパスと同期してチェックポイントを Amazon S3 に保存できます。

チェックポイントを有効にする

チェックポイントを有効にすると、 はチェックポイントを Amazon S3 SageMaker に保存し、トレーニングジョブをチェックポイント S3 バケットと同期します。チェックポイント S3 バケットには、S3 汎用バケットまたは S3 ディレクトリバケットのいずれかを使用できます。


                トレーニング中のチェックポイント書き込みのアーキテクチャ図。

次の例は、 SageMaker 推定器を構築するときにチェックポイントパスを設定する方法を示しています。チェックポイントを有効にするには、推定器に checkpoint_s3_uri パラメータと checkpoint_local_path パラメータを指定します。

次のサンプルテンプレートは、汎用 SageMaker 推定器を作成し、チェックポイントを有効にする方法を示しています。image_uri パラメータを指定すると、このテンプレートをサポート対象のアルゴリズムに使用できます。チェックポイントが でサポートされているアルゴリズムの Docker イメージ URIs を見つけるには SageMaker、「Docker レジストリパス」と「サンプルコード」を参照してください。また、 estimatorと をEstimator他の SageMaker フレームワークの推定器親クラスと、TensorFlow、、PyTorch、 などの推定器クラスに置き換えることもできますMXNetHuggingFaceXGBoost

import sagemaker from sagemaker.estimator import Estimator bucket=sagemaker.Session().default_bucket() base_job_name="sagemaker-checkpoint-test" checkpoint_in_bucket="checkpoints" # The S3 URI to store the checkpoints checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket) # The local path where the model will save its checkpoints in the training container checkpoint_local_path="/opt/ml/checkpoints" estimator = Estimator( ... image_uri="<ecr_path>/<algorithm-name>:<tag>" # Specify to use built-in algorithms output_path=bucket, base_job_name=base_job_name, # Parameters required to enable checkpointing checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path=checkpoint_local_path )

次の 2 つのパラメータは、チェックポイントのパスを指定します。

  • checkpoint_local_path - モデルがチェックポイントを定期的に保存するトレーニングコンテナのローカルパスを指定します。デフォルトでは、パスは '/opt/ml/checkpoints' に設定されています。他のフレームワークを使用する場合、または独自のトレーニングコンテナを取り込む場合は、トレーニングスクリプトのチェックポイント設定のパスが '/opt/ml/checkpoints' に指定されていることを確認します。

    注記

    デフォルトの SageMaker チェックポイント設定と一致する'/opt/ml/checkpoints'ように、ローカルパスを として指定することをお勧めします。独自のローカルパスを指定する場合は、トレーニングスクリプトのチェックポイント保存パスと推定器の SageMaker checkpoint_local_pathパラメータが一致していることを確認してください。

  • checkpoint_s3_uri - チェックポイントをリアルタイムで保存する S3 バケットの URI。チェックポイントを保存する S3 汎用バケットまたは S3 ディレクトリバケットのいずれかを指定できます。S3 ディレクトリバケットの詳細については、Amazon Simple Storage Service ユーザーガイド「ディレクトリバケット」を参照してください。

SageMaker 推定器パラメータの完全なリストについては、Amazon SageMaker Python SDK ドキュメント「推定器 API」を参照してください。

チェックポイントファイルを参照する

SageMaker Python SDK と Amazon S3 コンソールを使用してチェックポイントファイルを見つけます。

プログラムを使用してチェックポイントファイルを見つけるには

チェックポイントが保存された S3 バケット URI を取得するには、推定器の次の属性を確認します。

estimator.checkpoint_s3_uri

これにより、CreateTrainingJobリクエストのリクエスト中に設定されたチェックポイントの S3 出力パスが返されます。S3 コンソールを使用して保存されたチェックポイントファイルを検索するには、以下の手順に従います。

S3 コンソールからチェックポイントファイルを検索するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/sagemaker/ で SageMaker コンソールを開きます。

  2. 左のナビゲーションペインで [Training jobs] (トレーニングジョブ) を選択します。

  3. チェックポイントを有効にしたトレーニングジョブへのリンクを選択すると、[Job settings] (ジョブ設定) が開きます。

  4. トレーニングジョブの [Job settings] (ジョブ設定) ページで、[Checkpoint configuration] (チェックポイントの設定) セクションを見つけます。

    
                        トレーニングジョブの [Job settings] (ジョブ設定) ページにある [Checkpoint configuration] (チェックポイントの設定) セクション。
  5. S3 バケットへのリンクを使用して、チェックポイントファイルにアクセスします。

チェックポイントからトレーニングを再開する

トレーニングジョブをチェックポイントから再開するには、checkpoint_s3_uri セクションで作成した チェックポイントを有効にする と同じ URI を持つ新しい推定器を実行します。トレーニングが再開されると、新しいトレーニングジョブの各インスタンスの checkpoint_local_path にこの S3 バケットのチェックポイントが復元されます。S3 バケットが現在の SageMaker セッションと同じリージョンにあることを確認します。


                チェックポイントを同期してトレーニングを再開するアーキテクチャ図。

GPU エラーのクラスター修復

GPU で失敗するトレーニングジョブを実行している場合は、GPU ヘルスチェック SageMaker を実行して、失敗が GPU の問題に関連しているかどうかを確認します。 SageMaker は、ヘルスチェックの結果に基づいて次のアクションを実行します。

  • エラーが回復可能で、インスタンスを再起動するか GPU をリセットすることで修正できる SageMaker 場合は、インスタンスを再起動します。

  • エラーが回復できず、置き換える必要がある GPU が原因で発生した場合は、インスタンス SageMaker を置き換えます。

インスタンスは、 SageMaker クラスターの修復プロセスの一環として交換または再起動されます。このプロセス中に、トレーニングジョブのステータスに次のメッセージが表示されます。

Repairing training cluster due to hardware failure

SageMaker は、クラスターの修復を最大 10 回試行します。クラスターの修復が成功すると、 SageMaker 前のチェックポイントからトレーニングジョブが自動的に再起動されます。クラスターの修復が失敗すると、トレーニングジョブも失敗します。クラスターの修復プロセスについては請求されません。トレーニングジョブが失敗しない限り、クラスターの修復は開始されません。ウォームプールクラスターで GPU の問題が検出されると、クラスターは修復モードになり、再起動するか、問題のあるインスタンスを置き換えます。修復後も、クラスターはウォームプールクラスターとして使用できます。

前述のクラスターとインスタンスの修復プロセスを次の図に示します。


                The cluster repair process checks for training errors and attempts to fix them if they are caused by a GPU.

チェックポイントに関する考慮事項

でチェックポイントを使用する場合は、次の点を考慮してください SageMaker。

  • 複数のインスタンスを使った分散トレーニングで上書きされないようにするには、トレーニングスクリプトのチェックポイントファイル名とパスを手動で設定する必要があります。高レベルの SageMaker チェックポイント設定では、複数のインスタンスからチェックポイントにタグを付けるための追加のサフィックスやプレフィックスなしで、単一の Amazon S3 の場所を指定します。

  • SageMaker Python SDK は、チェックポイントの頻度に関する高レベルの設定をサポートしていません。チェックポイントの頻度を制御するには、フレームワークのモデル保存関数またはチェックポイントのコールバックを使用してトレーニングスクリプトを変更します。

  • SageMaker デバッガーと SageMaker 分散型 で SageMaker チェックポイントを使用していて、問題が発生した場合は、次のページのトラブルシューティングと考慮事項を参照してください。