拡張マニフェストファイルを使用してトレーニングジョブにデータセットメタデータを提供する - アマゾン SageMaker

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

拡張マニフェストファイルを使用してトレーニングジョブにデータセットメタデータを提供する

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

チャンネルのパラメータを指定するときは、と呼ばれるファイルへのパスを指定します。S3Uri。アマゾン SageMaker 指定されたに基づいて、この URI を解釈します。S3DataTypeS3DataSourceAugmentedManifestFile オプションは、入力データを含むメタデータを含むマニフェスト形式を定義します。データにラベルを付けた場合は、拡張マニフェストファイルの使用が、前処理の代わりになります。ラベル付きのデータを使用してジョブをトレーニングする場合は、通常、トレーニング前にデータセットを前処理して、データセットをメタデータと結合する必要があります。トレーニングデータセットが大きい場合、前処理に時間とコストがかかる可能性があります。

拡張マニフェストファイル形式

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

トレーニング中、 SageMaker は各 JSON 行を解析し、その属性の一部または全部をトレーニングアルゴリズムに送ります。渡す属性の内容とそれらを渡す順序は、CreateTrainingJob API の AttributeNames パラメータで指定します。-AttributeNamesparameter は、次の属性名の順序付きリストです。 SageMaker は、トレーニング入力として使用するためにが JSON オブジェクト内で探します。

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

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

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

拡張マニフェストファイルを使用するときには、以下のガイドラインに従ってください。

  • AttributeNames パラメータにリストされている属性の順序によって、トレーニングジョブでアルゴリズムに渡される属性の順序が決まります。

  • リストされているAttributeNamesは、JSON 行のすべての属性のサブセットにすることができます。 SageMaker は、ファイル内のリストされていない属性を無視します。

  • テキスト、数値、データ配列、オブジェクトなど、JSON 形式で許可されている任意のタイプのデータを AttributeNames に指定できます。

  • 属性名として S3 URI を含めるには、サフィックス -ref をそれに追加します。

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

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

このマニフェストファイルの最初の JSON 行の場合、 SageMaker の取得image1.jpgファイルからs3://mybucket/sample01/との、の文字列表現is-a-cat属性"1"イメージの分類用。

ヒント

拡張マニフェストファイルを作成するには、Amazon を使用します。 SageMaker Ground Truth とラベリングジョブを作成します。ラベリングジョブの出力の詳細については、「」を参照してください。出力データ

拡張マニフェストファイルのデータをストリーミングする

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

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

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

recordio_formatted(s3://mybucket/foo/image1.jpg)recordio_formatted("1")recordio_formatted(s3://mybucket/bar/image2.jpg)recordio_formatted("0")

RecordIO 形式でラップされていないイメージは、対応する is-a-cat 属性値と共に 1 つのレコードとしてストリーミングされます。これは問題を引き起こす場合があります。アルゴリズムがイメージと属性を正しく区切らない可能性があるためです。イメージ分類のための拡張マニフェストファイル使用の詳細については、「拡張マニフェストイメージ形式でトレーニングする」を参照してください。

一般的に拡張マニフェストファイルとパイプモードでは、EBS ボリュームのサイズ制限が適用されません。これには、それ以外では EBS ボリュームのサイズ制限内でなければならない設定が含まれます (など)。S3DataDistributionType 。パイプモードとその使用方法の詳細については、「独自のトレーニングアルゴリズムを使用する - 入力データ設定」を参照してください。

拡張マニフェストファイルを使用する (コンソール)

この手順を完了するには、以下が必要です。

  • 拡張マニフェストファイルを保存している S3 バケットの URL。

  • 拡張マニフェストファイルにリストされているデータを S3 バケットに保存する。

  • ジョブの出力を保存する S3 バケットの URL。

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

  1. Amazonを開きます。 SageMaker コンソールでhttps://console.aws.amazon.com/sagemaker/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. (オプション) AWS Key Management Service (AWS KMS) 暗号化キーを使用すると、保存データを暗号化できます。[暗号化キー] に、キー ID またはその Amazon リソース番号 (ARN) を入力します。詳細については、KMS で管理された暗号化キーを参照してください。

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

  10. 選択トレーニングジョブの作成。 SageMaker がトレーニングジョブを作成し、実行します。

トレーニングの仕事が終わったら、 SageMaker 指定したパスを持つバケットにモデルアーティファクトを格納します。S3 出力パス出力データ構成フィールド。モデルをデプロイして予測を得るには、ステップ 5: モデルを Amazon EC2 にデプロイするを参照してください。

拡張マニフェストファイルを使用する (API)

以下は、拡張マニフェストファイルでモデルをトレーニングする方法を示しています。を使用して、 SageMaker 高レベルの 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 指定したパスを持つバケットにモデルアーティファクトを格納します。S3 出力パス出力データ構成フィールド。モデルをデプロイして予測を得るには、ステップ 5: モデルを Amazon EC2 にデプロイするを参照してください。