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

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

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.jsonetaハイパーパラメータ設定の例です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 つのデータチャネル (trainevaluation、および 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 つある場合validationtesting 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

    チャネルごとに別のパイプから読む必要があります。例えば、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. /opt/ml/input/data/training_0 読み取りモードで開き、 (EOF) に end-of-file読み込むか、最初のエポックが終了した場合は、パイプファイルを早期に閉じます。

    2. 最初のパイプファイルを閉じた後に、/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 は、このファイルを FilePipe モードアルゴリズムの両方で使用できるようにします。ファイルは以下の情報を提供します。

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