SageMaker がトレーニング情報を提供する方法 - アマゾン SageMaker

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

SageMaker がトレーニング情報を提供する方法

このセクションでは、SageMaker がトレーニングデータ、ハイパーパラメータ、その他の設定情報などのトレーニング情報を Docker コンテナで利用できるようにする方法について説明します。

モデルトレーニングを開始する CreateTrainingJob リクエストを SageMaker に送信する際、トレーニングアルゴリズムが格納されている Docker イメージの Amazon Elastic Container Registry パスを指定します。トレーニングデータが保存される Amazon Simple Storage Service (Amazon S3) の場所とアルゴリズム固有のパラメータも指定します。SageMaker はこの情報をトレーニングアルゴリズムで使用できるよう、Docker コンテナで利用できるようにします。このセクションでは、この情報を Docker コンテナで利用できるようにする方法を説明します。トレーニングジョブの作成方法については、「CreateTrainingJob」を参照してください。

Hyperparameters

SageMaker は、CreateTrainingJob リクエスト内のハイパーパラメータを /opt/ml/input/config/hyperparameters.json ファイル内の Docker コンテナで利用できるようにします。

環境変数

  • TRAINING_JOB_NAME — CreateTrainingJob リクエストの TrainingJobName パラメータに保存されているトレーニングジョブ名。

  • TRAINING_JOB_ARN — CreateTrainingJobTrainingJobArn レスポンス要素として返るトレーニングジョブの Amazon リソースネーム (ARN)。

入力データ設定

CreateTrainingJob リクエストの InputDataConfig パラメータでデータチャネル情報を指定します。SageMaker は、この情報を Docker コンテナの /opt/ml/input/config/inputdataconfig.json ファイルで利用できるようにします。

たとえば、3 つのデータチャネル (trainevaluationvalidation) をリクエストで指定するとします。SageMaker は以下の JSON を提供します。

{ "train" : {"ContentType": "trainingContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "evaluation" : {"ContentType": "evalContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "validation" : {"TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"} }
注記

示されているように、SageMaker は各データチャネルに関連する情報 (たとえば、チャネル名やコンテンツタイプ) のみをコンテナに提供します。S3DistributionType は として設定されます FullyReplicated EFSまたは FSxLustre 入力データ ソースとして

トレーニングデータ

TrainingInputMode リクエストの CreateTrainingJob パラメータは、モデルトレーニングでデータを利用できるようにする方法を指定します (FILE モードまたは PIPE モード)。指定された入力モードに応じて SageMaker は以下の操作を行います。

  • FILE モード — SageMaker は、チャネルのデータを Docker コンテナの /opt/ml/input/data/channel_name ディレクトリで利用できるようにします。たとえば、trainingvalidationtesting という名前の 3 つのチャネルがある場合、SageMaker は Docker コンテナに 3 つのディレクトリを作成します。

    • /opt/ml/input/data/training

    • /opt/ml/input/data/validation

    • /opt/ml/input/data/testing

    • 注記

      Amazon Elastic File System(EFS)やAmazonなどのファイルシステムデータソースを使用するチャネル FSx FILEモードを使用する必要があります。また、 FSx ファイル サーバで、次の文字列で始まるパスを指定する必要があります。 /fsx. ファイルシステムを指定した場合、チャネルで提供されるディレクトリパスは次の場所にマウントされます。 /opt/ml/input/data/channel_name.

  • PIPE モード—SageMaker は、指定したパイプからチャネルのデータを使用できるようにします。/opt/ml/input/data/channel_name_epoch_number. たとえば、 trainingvalidation、および testing次のパイプから読み取る必要があります。

    • /opt/ml/input/data/training_0,/opt/ml/input/data/training_1, ...

    • /opt/ml/input/data/validation_0, /opt/ml/input/data/validation_1, ...

    • /opt/ml/input/data/testing_0, /opt/ml/input/data/testing_1, ...

    パイプを順番に読み取ります。たとえば、training というチャネルがある場合は、パイプを次の順序で読み取ります。

    1. /opt/ml/input/data/training_0 を読み取りモードで開き、end-of-file (EOF) まで読み取ります (または最初のエポックで終了した場合は、パイプファイルを早期に閉じます)。

    2. 最初のパイプファイルを閉じた後に、/opt/ml/input/data/training_1 を探し、2 番目のエポックを実行します。同様に続けます。

    指定されたエポックのファイルがまだ存在しない場合は、パイプが作成されるまでコードを再試行する必要があります。チャネルタイプ間にシーケンスの制限はありません。つまり、たとえば training チャネルの複数のエポックを読み取ることができ、準備ができたら validation チャネルの読み取りを開始するだけです。または、アルゴリズムで必要な場合はそれらを同時に読み取ることができます。

分散型トレーニング設定

複数コンテナで分散型トレーニングを実行する場合、SageMaker はすべてのコンテナに関する情報を /opt/ml/input/config/resourceconfig.json ファイル内で利用できるようにします。

コンテナ間通信を有効にするために、この JSON ファイルにはすべてのコンテナに関する情報が含まれます。SageMaker は、このファイルを FILE モードと PIPE モードの両方のアルゴリズムで利用できるようにします。ファイルは以下の情報を提供します。

  • current_host — コンテナネットワーク上の現在のコンテナの名前。たとえば、 algo-1. ホスト値はいつでも変更することができます。この変数に特定の値を指定したコードは記述しないでください。

  • hosts — 辞書順にソートされた、コンテナネットワーク上のすべてのコンテナに名前のリスト。たとえば、3 ノードクラスターの場合は ["algo-1", "algo-2", "algo-3"] です。コンテナでは、これらの名前を使用して、コンテナネットワーク上の他のコンテナをアドレス指定できます。ホスト値はいつでも変更できます。これらの変数に特定の値を指定したコードは記述しないでください。

  • network_interface_name — コンテナに対して公開されているネットワークインターフェイスの名前。たとえば、Message Passing Interface (MPI) を実行しているコンテナは、この情報を使用してネットワークインターフェイス名を設定できます。

  • この情報は正確ではない可能性があるため、/etc/hostname または /etc/hosts では使用しないでください。

  • ホスト名情報は、アルゴリズムコンテナですぐには利用できない場合があります。ノードがクラスター内で使用可能になった時点で、ホスト名解決操作に再試行ポリシーを追加することをお勧めします。

3 ノードクラスターのノード 1 のファイル例を次に示します。

{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"], "network_interface_name":"eth1" }