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

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

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

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

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

Hyperparameters

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

環境変数

入力データ設定

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 は各データチャネルに関連する情報 (たとえば、チャネル名やコンテンツタイプ) のみをコンテナに提供します。EFS または S3DistributionType を入力データソースとして指定すると、FullyReplicated が 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) や Amazon EFS などのファイルシステムデータソースを使用するチャネルでは、FILE モードを使用する必要があります。Amazon FSxまた、Amazon FSx ファイルサーバーを利用するには、/fsx で始まるパスを指定する必要があります。 ファイルシステムを指定した場合、チャネルで指定されたディレクトリパスは、/opt/ml/input/data/channel_name にマウントされます。

  • [PIPE モード—] SageMaker は、チャネルのデータを名前付きパイプから利用できるようにします。/opt/ml/input/data/channel_name_epoch_number 。 たとえば、trainingvalidationtesting という名前の 3 つのチャネルがある場合は、次のパイプから読み取る必要があります。

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

    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" }