

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

# トレーニングジョブの拡張マニフェストファイル
<a name="augmented-manifest"></a>

データセットとともにメタデータをトレーニングジョブに含めるには、拡張マニフェストファイルを使用します。拡張マニフェストファイルを使用する場合は、データセットを Amazon Simple Storage Service (Amazon S3) に保存し、そこに保存されているデータセットを使用するようにトレーニングジョブを設定する必要があります。1 つ以上の [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html) に対してこのデータセットの場所と形式を指定します。拡張マニフェストはパイプ入力モードのみをサポートできます。パイプ入力モードの詳細については、「[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html)」の「**InputMode**」セクションを参照してください。

チャネルのパラメータを指定するときは、`S3Uri` と呼ばれるファイルへのパスを指定します。Amazon SageMaker AI は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html) で指定された `S3DataType` に基づいてこの URI を解釈します。`AugmentedManifestFile` オプションは、入力データを含むメタデータを含むマニフェスト形式を定義します。データにラベルを付けた場合は、拡張マニフェストファイルの使用が、前処理の代わりになります。ラベル付きのデータを使用してジョブをトレーニングする場合は、通常、トレーニング前にデータセットを前処理して、データセットをメタデータと結合する必要があります。トレーニングデータセットが大きい場合、前処理に時間とコストがかかる可能性があります。

## 拡張マニフェストファイル形式
<a name="augmented-manifest-format"></a>

拡張マニフェストファイルは [JSON Lines](http://jsonlines.org/) 形式で形式設定する必要があります。JSON Lines 形式では、ファイル内の各行が完全な JSON オブジェクトであり、その後に改行区切り文字が続きます。

トレーニング中、SageMaker AI は各 JSON 行を解析し、その属性の一部または全部をトレーニングアルゴリズムに送ります。渡す属性の内容とそれらを渡す順序は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) API の `AttributeNames` パラメータで指定します。`AttributeNames` パラメータは、トレーニング入力として使うために SageMaker AI が JSON オブジェクト内で探す属性名の順序付きリストです。

たとえば、`AttributeNames` に `["line", "book"]` をリストした場合、入力データには、指定された順序で `line` と `book` の属性名を含める必要があります。この例では、次の拡張マニフェストファイルの内容が有効です。

```
{"author": "Herman Melville", "line": "Call me Ishmael", "book": "Moby Dick"}
{"line": "It was love at first sight.", "author": "Joseph Heller", "book": "Catch-22"}
```

SageMaker AI は、リストにない属性名については、リストされている属性の前、後、または間にある場合でも、無視します。

拡張マニフェストファイルを使用するときには、以下のガイドラインに従ってください。
+ `AttributeNames` パラメータにリストされている属性の順序によって、トレーニングジョブでアルゴリズムに渡される属性の順序が決まります。
+ リストされている `AttributeNames` は、JSON 行のすべての属性のサブセットにすることができます。SageMaker AI は、ファイル内のリストされていない属性を無視します。
+ テキスト、数値、データ配列、オブジェクトなど、JSON 形式で許可されている任意のタイプのデータを `AttributeNames` に指定できます。
+ 属性名として S3 URI を含めるには、サフィックス `-ref` をそれに追加します。

属性名にサフィックス `-ref` が含まれている場合、属性の値はトレーニングジョブにアクセス可能なデータファイルの S3 URI である必要があります。例えば、`AttributeNames` に `["image-ref", "is-a-cat"]` が含まれている場合、次の例は有効な拡張マニフェストファイルを示しています。

```
{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "is-a-cat": 1}
{"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "is-a-cat": 0}
```

このマニフェストファイルの最初の JSON 行の場合、SageMaker AI は `s3://amzn-s3-demo-bucket/sample01/` から `image1.jpg` ファイルと画像分類用の `is-a-cat` 属性 `"1"` の文字列特性を取得します。

**ヒント**  
拡張マニフェストファイルを作成するには、Amazon SageMaker Ground Truth を使用してラベル付けジョブを作成します。ラベル付けジョブの出力の詳細については、「[ラベル付けジョブの出力データ](sms-data-output.md)」を参照してください。

# パイプモードトレーニングの拡張マニフェストファイル形式
<a name="augmented-manifest-stream"></a>

拡張マニフェスト形式を使用すると、RecordIO ファイルを作成しなくても、ファイルを使ってパイプモードでトレーニングを行うことができます。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストの `InputDataConfig` パラメータの値として、トレーニングチャネルと検証チャネルの両方を指定する必要があります。拡張マニフェストファイルは、パイプ入力モードを使用しているチャネルでのみサポートされます。チャネルごとにデータがその拡張マニフェストファイルから抽出され、チャネルの名前付きパイプを介してアルゴリズムに (順番に) ストリーミングされます。パイプモードは先入れ先出し (FIFO) 方式を使用するため、レコードはキューに入れられた順に処理されます。パイプ入力モードの詳細については、「[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-InputMode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Channel.html#SageMaker-Type-Channel-InputMode)」を参照してください。

サフィックス `"-ref"` が付いた属性名は、形式設定済みのバイナリデータを指します。アルゴリズムにとって、そのデータの解析方法は既知である場合があります。また、レコードがアルゴリズム用に区切られるようにデータをラップしなければならない場合もあります。アルゴリズムが [RecordIO 形式のデータ](https://mxnet.apache.org/api/architecture/note_data_loading#data-format)と互換性がある場合は、`RecordWrapperType` に `RecordIO` を指定すると、この問題は解決します。アルゴリズムが `RecordIO` 形式と互換性がない場合は、`RecordWrapperType` に `None` を指定し、データがアルゴリズムに対して正しく解析されることを保証します。

`["image-ref", "is-a-cat"]` の例を使用して、RecordIO ラッピングを使用している場合は、次のデータストリームがキューに送信されます。

`recordio_formatted(s3://amzn-s3-demo-bucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://amzn-s3-demo-bucket/bar/image2.jpg)recordio_formatted("0")`

RecordIO 形式でラップされていないイメージは、対応する `is-a-cat` 属性値と共に 1 つのレコードとしてストリーミングされます。これは問題を引き起こす場合があります。アルゴリズムがイメージと属性を正しく区切らない可能性があるためです。イメージ分類のための拡張マニフェストファイル使用の詳細については、「[拡張マニフェストイメージ形式でトレーニングする](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html#IC-augmented-manifest-training)」を参照してください。

一般的に拡張マニフェストファイルとパイプモードでは、EBS ボリュームのサイズ制限が適用されません。それ以外の場合、これには、EBS ボリュームのサイズ制限内でなければならない設定が含まれます ([https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html#SageMaker-Type-S3DataSource-S3DataDistributionType                 ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html#SageMaker-Type-S3DataSource-S3DataDistributionType                 ) など)。パイプモードとその使用方法の詳細については、「[独自のトレーニングアルゴリズムを使用する - 入力データ設定](your-algorithms-training-algo.html#your-algorithms-training-algo-running-container-inputdataconfig)」を参照してください。

## 拡張マニフェストファイルを使用する
<a name="augmented-manifest-create"></a>

以下のセクションでは、Amazon SageMaker AI コンソールで、または SageMaker Python SDK を使用してプログラムで Amazon SageMaker トレーニングジョブに拡張マニフェストファイルを使用する方法を示します。

### 拡張マニフェストファイルを使用する (コンソール)
<a name="augmented-manifest-console"></a>

この手順を完了するには、以下が必要です。
+ 拡張マニフェストファイルを保存している S3 バケットの URL。
+ 拡張マニフェストファイルにリストされているデータを S3 バケットに保存する。
+ ジョブの出力を保存する S3 バケットの URL。

**拡張マニフェストファイルをトレーニングジョブで使用する (コンソール)**

1. Amazon SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

1. ナビゲーションペインで [**トレーニング**]、[**トレーニングジョブ**] の順に選択します。

1. **[トレーニングジョブの作成]** を選択します。

1. トレーニングジョブの名前を指定します。名前は、 AWS アカウントの AWS リージョン内で一意である必要があります。1 〜 63 文字で指定できます。有効な文字は、a ～ z、A ～ Z、0 ～ 9、および . : \$1 = @ \$1 % - (ハイフン) です。

1. 使用するアルゴリズムを選択します。サポートされている組み込みアルゴリズムの詳細については、「[Amazon SageMaker の組み込みアルゴリズムと事前トレーニング済みモデル](algos.md)」を参照してください。カスタムアルゴリズムを使用するには、パイプモードと互換性があることを確認してください。

1. (オプション) [**リソース設定**] で、デフォルト値をそのまま使用するか、計算時間を短縮するためにリソース使用量を増やします。

   1. (オプション) [**インスタンスタイプ**] で、使用する ML コンピューティングインスタンスのタイプを選択します。ほとんどの場合、**ml.m4.xlarge** で十分です。

   1. [**インスタンス数**] で、デフォルトの `1` を使用します。

   1. (オプション) [**インスタンスあたりのボリュームサイズ (GB)**] で、プロビジョニングする ML ストレージボリュームのサイズを選択します。ほとんどの場合、デフォルトの `1` を使用できます。大規模なデータセットを使用する場合は、サイズを大きくします。

1. トレーニングデータセットの入力データに関する情報を入力します。

   1. [**チャネル名**] で、デフォルト (**train**) をそのまま使用するか、**training-augmented-manifest-file** のようにわかりやすい名前を入力します。

   1. [**入力モード**] で [**Pipe (パイプ)**] を選択します。

   1. [**S3 データディストリビューションタイプ**] で [**FullyReplicated**] を選択します。段階的にトレーニングする場合は、完全なレプリケーションを実行すると、各 ML コンピューティングインスタンスが、展開されたデータセットの完全なコピーを使用します。[ニューラルトピックモデル (NTM) アルゴリズム](ntm.md) などのニューラルベースのアルゴリズムの場合は、`ShardedByS3Key` を選択します。

   1. 拡張マニフェストファイルで指定されたデータが圧縮されていない場合は、[**圧縮の種類**] を [**なし**] に設定します。データが gzip を使用して圧縮されている場合は、[**Gzip**] に設定します。

   1. (オプション) [**コンテンツタイプ**] に、適切な MIME タイプを指定します。コンテンツタイプ は、多目的インターネットメール拡張 (MIME) タイプのデータです。

   1. [**レコードラッパー**] で、拡張マニフェストファイルで指定されたデータセットが RecordIO 形式で保存されている場合は、[**RecordIO**] を選択します。データセットが RecordIO 形式のファイルとして保存されていない場合は、[**なし**] を選択します。

   1. [**S3 データタイプ**] で [**AugmentedManifestFile (拡張マニフェストファイル)**] を選択します。

   1. [**S3 の場所**] に、拡張マニフェストファイルを保存したバケットのパスを指定します。

   1. [**AugmentedManifestFile attribute names (拡張マニフェストファイルの属性名)**] に、使用する属性の名前を指定します。属性名は、拡張マニフェストファイル内に存在する必要があり、大文字と小文字が区別されます。

   1. (オプション) 属性名をさらに追加するには、[**行を追加**] を選択して、各属性に別の属性名を指定します。

   1. (オプション) 属性名の順序を調整するには、名前の横にある上下ボタンを選択します。拡張マニフェストファイルを使用するときには、指定する属性名の順序が重要です。

   1. **[Done]** (完了) をクリックします。

1. [**出力データ設定**] で、以下の情報を入力します。

   1. [**S3 の場所**] に、出力データを保存する S3 バケットのパスを入力します。

   1. (オプション) AWS Key Management Service (AWS KMS) 暗号化キーを使用して、保管中の出力データを暗号化できます。[**暗号化キー**] に、キー ID またはその Amazon リソース番号 (ARN) を入力します。詳細については、[KMS で管理された暗号化キー](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html)を参照してください。

1. (オプション) [**タグ**] で、1 つ以上のタグをトレーニングジョブに追加します。*タグ*は、定義して AWS リソースに割り当てることができるメタデータです。この例では、タグを使用してトレーニングジョブを管理しやすくすることができます。タグは、ユーザーが定義するキーと値で構成されます。たとえば、**Project** をキーとし、**Home value forecasts** などのトレーニングジョブに関連するプロジェクトを参照する値を持つタグを作成するとします。

1. **[トレーニングジョブの作成]** を選択します。SageMaker AI がトレーニングジョブを作成して実行します。

トレーニングジョブが終了すると、SageMaker AI は **[出力データ設定]** フィールドで **S3 出力パス**として指定したパスのバケットにモデルアーティファクトを保存します。モデルをデプロイして予測を得るには、[モデルを Amazon EC2 にデプロイする](ex1-model-deployment.md)を参照してください。

### 拡張マニフェストファイルを使用する (API)
<a name="augmented-manifest-api"></a>

SageMaker AI の高レベル Python ライブラリを使用して、拡張マニフェストファイルでモデルをトレーニングする方法は、以下のとおりです。

```
import sagemaker

# Create a model object set to using "Pipe" mode.
model = sagemaker.estimator.Estimator(
    training_image,
    role,
    instance_count=1,
    instance_type='ml.p3.2xlarge',
    volume_size = 50,
    max_run = 360000,
    input_mode = 'Pipe',
    output_path=s3_output_location,
    sagemaker_session=session
)

# Create a train data channel with S3_data_type as 'AugmentedManifestFile' and attribute names.
train_data = sagemaker.inputs.TrainingInput(
    your_augmented_manifest_file,
    distribution='FullyReplicated',
    content_type='application/x-recordio',
    s3_data_type='AugmentedManifestFile',
    attribute_names=['source-ref', 'annotations'],
    input_mode='Pipe',
    record_wrapping='RecordIO'
)

data_channels = {'train': train_data}

# Train a model.
model.fit(inputs=data_channels, logs=True)
```

トレーニングジョブが終了すると、SageMaker AI は **[出力データ設定]** フィールドで **S3 出力パス**として指定したパスのバケットにモデルアーティファクトを保存します。モデルをデプロイして予測を得るには、[モデルを Amazon EC2 にデプロイする](ex1-model-deployment.md)を参照してください。