翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SageMaker がトレーニング情報を提供する方法
このセクションでは、 SageMaker がトレーニングデータ、ハイパーパラメータ、その他の設定情報などのトレーニング情報を Docker コンテナで使用できるようにする方法を説明します。
モデルトレーニング SageMaker を開始するCreateTrainingJob
リクエストを に送信するときは、トレーニングアルゴリズムを含む Docker イメージの Amazon Elastic Container Registry (Amazon ECR) パスを指定します。また、トレーニングデータが保存される Amazon Simple Storage Service (Amazon S3) の場所とアルゴリズム固有のパラメータを指定します。 SageMaker は、トレーニングアルゴリズムがこの情報を使用できるように、この情報を Docker コンテナで利用できるようにします。このセクションでは、この情報を Docker コンテナで利用できるようにする方法を説明します。トレーニングジョブの作成方法については、「CreateTrainingJob
」を参照してください。 SageMaker コンテナが情報を整理する方法の詳細については、「」を参照してくださいSageMaker トレーニングと推論ツールキット。
ハイパーパラメータ
SageMaker は、CreateTrainingJob
リクエスト内のハイパーパラメータを /opt/ml/input/config/hyperparameters.json
ファイルの Docker コンテナで利用可能にします。
以下は、 の CreateTrainingJob
オペレーションで num_round
と ハイパーパラメータを指定する hyperparameters.json
のeta
ハイパーパラメータ設定の例ですXGBoost。
{ "num_round": "128", "eta": "0.001" }
SageMaker 組み込みXGBoostアルゴリズムに使用できるハイパーパラメータの完全なリストについては、XGBoost「ハイパーパラメータ」を参照してください。
調整できるハイパーパラメータは、トレーニングするアルゴリズムによって異なります。 SageMaker 組み込みアルゴリズムで使用できるハイパーパラメータのリストについては、「Amazon 組み込みアルゴリズムを使用する」またはトレーニング済みモデル「アルゴリズムリンク」の「Hyperparameters」にリストされています。 SageMaker
環境可変
SageMaker は、コンテナに次の環境変数を設定します。
-
TRAINING_JOB_NAME –
CreateTrainingJob
リクエストのTrainingJobName
パラメータで指定します。 -
TRAINING_JOB_ARN –
CreateTrainingJob
レスポンスTrainingJobArn
で として返されるトレーニングジョブの Amazon リソースネーム (ARN)。 -
CreateTrainingJob
リクエストの Environment パラメータで指定されるすべての環境変数。
入力データ設定
SageMaker は、Docker コンテナの /opt/ml/input/config/inputdataconfig.json
ファイルで CreateTrainingJob
リクエストの InputDataConfig
パラメータのデータチャネル情報を利用できるようにします。
例えば、リクエストで 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 は、前の例に示すように、各データチャネルに関連する情報 (チャネル名やコンテンツタイプなど) のみをコンテナに提供します。 S3DistributionType
は、 EFSまたは を入力データソースFSxLustreとして指定するFullyReplicated
かのように設定されます。
トレーニングデータ
CreateTrainingJob
リクエストの AlgorithmSpecification
にある TrainingInputMode
パラメータでトレーニングのデータセットを使用可能にする方法を指定します。次の入力モードを使用できます。
-
File
モードFile
モードをTrainingInputMode
値として使用すると、 はコンテナに次のパラメータ SageMaker を設定します。-
TrainingInputMode
パラメータはinputdataconfig.json
に「File」として書き込まれます。 -
/opt/ml/input/data/
にデータチャネルディレクトリが書き込まれます。channel_name
File
モードを使用する場合、 はチャンネルごとにディレクトリ SageMaker を作成します。例えば、training
、、 という名前のチャネルが 3 つある場合validation
、testing
SageMaker は Docker コンテナに次の 3 つのディレクトリを作成します。-
/opt/ml/input/data/training
-
/opt/ml/input/data/validation
-
/opt/ml/input/data/testing
File
モードでは、次のデータソースがサポートされています。-
Amazon Simple Storage Service (Amazon S3)
-
Amazon Elastic File System (Amazon EFS)
-
Amazon FSx for Lustre
注記
Amazon EFSや Amazon などのファイルシステムデータソースを使用するチャネルFSxは、
File
モードを使用する必要があります。この場合、チャネルで提供されるディレクトリパスは/opt/ml/input/data/
にマウントされます。channel_name
-
-
FastFile
モードFastFile
モードを として使用するとTrainingInputNodeParameter
、 はコンテナに次のパラメータ SageMaker を設定します。-
File
mode と同様に、FastFile
mode ではTrainingInputMode
パラメータはinputdataconfig.json
に「File」として書き込まれます。 -
/opt/ml/input/data/
にデータチャネルディレクトリが書き込まれます。channel_name
FastFile
モードでは、次のデータソースがサポートされています。-
Amazon S3
FastFile
モードを使用すると、チャネルディレクトリは読み取り専用権限でマウントされます。歴史的に、
File
mode はFastFile
mode よりも優先されていました。下位互換性を確保するため、TrainingInputMode
パラメータがinputdataconfig.json.
でFile
に設定されている限り、File
mode をサポートするアルゴリズムはFastFile
mode とシームレスに連携できます。注記
FastFile
モードを使用するチャネルは、「S3Prefix」のS3DataType
を使用する必要があります。FastFile
モードは、スラッシュ (/
) を Amazon S3 オブジェクトをフォルダにグループ化するための区切り文字として使用するフォルダビューを示します。S3Uri
のプレフィックスは、部分的なフォルダ名に対応させることはできません。例えば、Amazon S3 データセットにs3://amzn-s3-demo-bucket/train-01/data.csv
がある場合、s3://amzn-s3-demo-bucket/train
またはs3://amzn-s3-demo-bucket/train-01
のどちらもS3Uri
のプレフィックスとしては許可されません。フォルダに対応するチャネルを定義するには、末尾にスラッシュを使用することをお勧めします。例えば、
train-01
フォルダにはs3://amzn-s3-demo-bucket/train-01/
チャネルです。末尾のスラッシュがないと、別のフォルダs3://amzn-s3-demo-bucket/train-011/
またはファイルs3://amzn-s3-demo-bucket/train-01.txt/
が存在する場合、チャネルがあいまいになります。 -
-
Pipe
モード-
inputdataconfig.json
に書き込まれるTrainingInputMode
パラメータ: "Pipe" -
Docker コンテナ内のデータチャネルディレクトリ:
/opt/ml/input/data/
channel_name_epoch_number
-
サポートされているデータソース: Amazon S3
チャネルごとに別のパイプから読む必要があります。例えば、
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
というチャネルがある場合は、パイプを次の順序で読み取ります。-
/opt/ml/input/data/training_0
読み取りモードで開き、 (EOF) に end-of-file読み込むか、最初のエポックが終了した場合は、パイプファイルを早期に閉じます。 -
最初のパイプファイルを閉じた後に、
/opt/ml/input/data/training_1
を探し、2 番目のエポックを実行します。同様に続けます。
指定されたエポックのファイルがまだ存在しない場合は、パイプが作成されるまでコードを再試行する必要があります。チャネルタイプ間にシーケンスの制限はありません。例えば、
training
チャネルの複数のエポックを読み取ることができ、準備ができたらvalidation
チャネルの読み取りを開始するだけです。または、アルゴリズムで必要な場合はそれらを同時に読み取ることができます。独自のコンテナを持ち込むときにパイプモードを使用する方法を示す Jupyter ノートブックの例については、「独自のパイプモードアルゴリズムを Amazon に SageMaker
持ち込む」を参照してください。 -
SageMaker モデルトレーニングは、ファイルモード、高速ファイルモード、パイプモードのデータ入力場所として、高性能 S3 Express One Zone ディレクトリバケットをサポートします。S3 Express One Zone を使用するには、Amazon S3 汎用バケットの代わりに S3 Express One Zone ディレクトリバケットの場所を入力します。 Amazon S3 IAM ロールARNに必要なアクセスコントロールとアクセス許可ポリシーを に提供します。詳細については、「AmazonSageMakerFullAccesspolicy」を参照してください。 SageMaker 出力データは、Amazon S3 マネージドキー (SSE-S3) によるサーバー側の暗号化でのみディレクトリバケットで暗号化できます。 AWS KMS キー (SSE-KMS) によるサーバー側の暗号化は現在、ディレクトリバケットへの SageMaker 出力データの保存ではサポートされていません。詳細については、「S3 Express One Zone」を参照してください。
分散型トレーニング設定
複数のコンテナで分散トレーニングを実行している場合、 は /opt/ml/input/config/resourceconfig.json
ファイルで使用可能なすべてのコンテナに関する情報 SageMaker を作成します。
コンテナ間の通信を有効にするために、このJSONファイルにはすべての Containers の情報が含まれています。 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" }