「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
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 コンテナで利用できるようにします。
環境変数
-
TRAINING_JOB_NAME —
TrainingJobName
リクエストのCreateTrainingJob
パラメータに保存されているトレーニングジョブ名。 -
TRAINING_JOB_ARN —
TrainingJobArn
のCreateTrainingJob
レスポンス要素として返るトレーニングジョブの Amazon リソースネーム (ARN)。
入力データ設定
CreateTrainingJob
リクエストの InputDataConfig
パラメータでデータチャネル情報を指定します。SageMaker は、この情報を Docker コンテナの /opt/ml/input/config/inputdataconfig.json
ファイルで利用できるようにします。
たとえば、3 つのデータチャネル (train
、evaluation
、validation
) をリクエストで指定するとします。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
training
、validation
、testing
という名前の 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
training
、validation
、testing
という名前の 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
というチャネルがある場合は、パイプを次の順序で読み取ります。-
を読み取りモードで開き、end-of-file (EOF) まで読み取ります。最初のエポックで終了した場合は、パイプファイルを早期に閉じます。
/opt/ml/input/data/training_0
-
最初のパイプファイルを閉じた後に、
/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" }