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