翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 はコンテナに次のパラメータを設定します。-
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
を読み取りモードで開き、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" }