Announcing NeoPulse® on AWS SageMaker!

re:Inventで発表された新しいNeoPulse®フレームワークがAWS SageMakerで利用可能になりました。

このドキュメントは、ユーザーが NeoPulse® を使用してカスタム AI モデルをすばやく構築およびデプロイできるように設計されています。

SageMakerマーケットプレイスには、2つのNeoPulse®製品があります:CPUのみのインスタンス用とGPU対応インスタンス用です。

AWS 前提 条件

NeoPulse® をAWS SageMaker で利用する場合はAWS アカウント が必要です。

注: AWS SageMaker は AWS 無料利用枠ではご利用いただけません。

AWS アカウントを設定した後、consoleからログインします。

AWS Console
図 1: AWSコンソルログイン

次に、AWS リソースを管理するための適切なアクセス権限を持つ IAM Roleと、モデルのトレーニングに必要なデータとスクリプトを保持する S3 バケットを設定します。

  • IAM Role

SageMaker 実行のRoleを作成するには:

1. IAM コンソール画面の左側にある "Roles"を選択し、"Create role"ボタンをクリックします:

    <center>![Create Role](../images/SageMaker/create_0.png)</center><center><b>図 2: SageMaker Roleを作成</b></center>

2. サービスのリストから SageMaker を選択します:

    <center>![SageMaker Service](../images/SageMaker/create_1.png)</center><center><b>図 3: Choose SageMaker Service</b></center>

3. タグを追加し、roleに名前を付けます。

これが完了すると、roleが使用可能になりこのようになります:

<center>![Final SM Role Role](../images/SageMaker/final_role.png)</center><center><b>図 4: SageMaker Role</b></center>
  • S3 Bucket

    次に、モデルの構築に使用する NML スクリプト、CSV ファイル、トレーニング データを保持する S3 バケットを作成します。

    1. S3 サービス から"Create bucket"を選択します。

      Create S3 Bucket
      図 5: S3 バケットを作成

    2. バケットに名前を付け、SageMaker がトレーニングを行うリージョンを選択します:

      Name S3 Bucket
      図 6: S3 バケット、名前、リージョン

    3. タグを追加しベスト プラクティスに準拠するオプションを設定し、"Next" をクリックします:

      Tag S3 Bucket
      図 7: S3 バケット、タグ、オプション

    4. 同様に、ベストプラクティスに従って S3 バケットのアクセス許可を設定し、"Next"を選択します。

    5. 選択したオプションを確認し、"Create bucket"をクリックします

    6. コンソールを使用して S3 バケットにデータをアップロードするか、AWS CLI を使用してデータを同期します。この例では、データはコンソールからアップロードされます。

      Upload S3 Bucket
      図 9: S3バケットへのコンソルアップロード

      この例では IMDB センチメント分析データセットを使用し、S3 バケットには 2 つのファイルが含まれています: training_data.csv および train.nml

      • ファイル training_data.csv には、「ラベル」(トレーニング中に学習するクラス識別子)と「レビュー」(映画レビューのテキスト)の2つの列ヘッダーがあります。各行には 1 つのムービー レビューが含まれ、ファイルには 50,000 件のレビューがあります (トレーニング用に 25,000 件、検証用に 25,000 件)。

        training data
        図 10: training_data.csv ファイルの最初の2行

      • バケットには、train.nmlという名前のファイルが絶対に必要です。これは、NeoPulse®を使用して構築するモデルを記述するマスターファイルです。NeoPulse®モデリング言語を使用して、テキスト、数値、画像、オーディオ、ビデオなどのさまざまなデータタイプを持つカスタムモデルを構築する方法の詳細については、ドキュメントを参照してください。センチメント分析の例の NML スクリプトを次に示します。

        train NML
        図11: train.nml ファイルの例

  • Algorithm Subscription

    IAM roleと S3 バケットが設定され、データが S3 にアップロードされたら、NeoPulse ®にサブスクライブします。トレーニングが CPU または GPU対応インスタンスで行われるかどうかを決定します。この例では、CPU インスタンスが使用されます。

    1. GAWS マーケットプレイスで適切なオファリングに選択し、"Continue to Subscribe" をクリックします。

      subscribe_1
      図 12: NeoPulse®にサブスクライブする

    2. 利用規約を確認し、"Accept Offer"を選択します。

      subscribe_2
      図 13: 利用規約に同意する

    3. "Continue to configuration" をクリックし、上記で構成した S3 バケットが設定されているリージョンを選択し、"View in SageMaker"をクリックします。

      subscribe_3 Figure
      図 14: サブスクリプションの設定

    アルゴリズムが SageMaker コンソールの"Algorithms: My Subscriptions"の下に表示されます。

    subscribe_4
    図 15: サブスクリプションの達成

トレーニングジョブ

前提条件が満たされ、S3 バケット内のデータを使用してカスタム AI モデルを構築するためのトレーニング ジョブを作成します。

  1. SageMaker コンソールの"Algorithms: My Subscriptions"タブから NeoPulse® サブスクリプションを選択し、"Actions"ドロップダウンメニューから"Create training job"を選択します。

    train_1
    図 16: トレーニングジョブを作成

  2. トレーニングジョブにユニークな名前を付け、上記で作成した IAM Roleを選択します。注: [リソース構成] セクションの"Additional volume per instance (GB)"フィールドに、中間ビルド製品を保持するのに十分な容量があることを確認してください。必要なストレージの量は、モデル アーキテクチャ、エポック数など、次のような要因によって異なります。

    train_2
    図 17: ジョブ設定の特定

    • IAM roleが上記で作成されていない場合は、IAM roleのドロップダウンメニューから"Create a new role"を選択して、この時点で新しい IAM roleを作成できます。これにより、次のダイアログが表示されます。

      train_3
      図 18: トレーニングジョブのために新しい IAM role作成

  3. "Input data configuration"ボックスで、トレーニングデータとNMLスクリプトを保持するバケットのS3の場所を指定します。

    train_4
    図19: 入力データ設定

  4. "Output data configuration"ボックスでS3バケット の場所を指定します。SageMaker は、トレーニングの完了時にモデルアーティファクトの場所を作成します。

    train_5
    図 20: 出力データ設定

  5. 最後に、"Create training job"ボタンをクリックしてモデルのトレーニングを開始します。SageMaker コンソールの"Training jobs"セクションに、トレーニング ジョブが表示されます。

    train_6
    図 21: トレーニングジョブ開始

  6. トレーニング ジョブが完了すると、モデルアーティファクトは、指定した S3 バケットのtraining_job_name/outputフォルダーにある model.tar.gz ファイルに配置されます。

    train_7
    図 22: S3 バケット内のモデルアーティファクト

model.tar.gz内には、次の 3 つのモデル アーティファクトがあります。

  • neopulse.pim : ポータブル推論モデル。この PIM ファイルは、NeoPulse ® クエリ ランタイムの v3.0 を実行する任意のマシンで使用できます (近日リリースされる予定)。

  • results.json: これは、トレーニング済みモデルに関するメタデータを含む JSON ドキュメントです。これには、NML スクリプトでキーワード auto が使用されたときに Oracle によって選択されたすべてのパラメータと、トレーニング済みモデルに対して計算されたメトリック (損失、検証損失など) が含まれます。

  • logs/: これは、トレーニング中に書き込まれたテンソルボードログを含むディレクトリです。

注: モデルアーティファクトをダウンロードして調べることができますが(また、PIMをNPQR v3.0以上を実行している別のマシンに転送することもできます)、SageMakerで推論するためにそれらをS3バケットに残しておく必要があります。

モデルパッケージの作成

トレーニングが完了したら、SageMaker は変換ジョブ (リアルタイムまたはバッチ) に使用するモデルパッケージを作成する必要があります。

1.完了したトレーニングジョブから、"Create model package"を選択します。

model_1
図 23: モデルパッケージの作成

  1. モデル パッケージにユニークな名前と説明を指定し、"Next" をクリックします。

    model_2
    図24: モデル名と説明文

  2. SageMakerは、モデルパッケージを検証するかどうかを尋ねます。これは、マーケットプレースでの販売モデルをリストする場合に必要です。"No"を選択し、"Create model package"をクリックしてモデルの作成を完了します。

    model_3
    図 25: モデル作成を完了

  3. モデルパッケージが正常に作成され、SageMaker コンソールに表示されます。

    model_4
    図 26: 完成されたモデルパッケージ

推論用モデルの作成

モデル パッケージを作成すると、変換ジョブ (リアルタイムまたはバッチ) に使用するモデルを作成できます。

  1. SageMaker コンソールの Inference -> Models で"Create model"を選択します。

    model_5
    図 27: 推論用モデルの作成

  2. モデルに名前を付け、適切な IAM Roleを指定して、"Create model"をクリックします。

    model_6
    図 28: モデルの名前を付けIAM roleを提供

完成したモデルが SageMaker コンソールに表示されます。

model_7
図 29: モデル作成の成功

変換ジョブ

NeoPulse®フレームワークは、ユーザーが事実上あらゆるデータ型を持つモデルを構築できるように設計されているため、トランスフォームジョブ(リアルタイムまたはバッチのいずれか)は.zipファイルの形で入力を受け取ります。その zip ファイルには、推論に使用される zip アーカイブに存在する他のデータ ファイルを参照する query.csvファイルが含まれている必要があります。

  • バッチ変換ジョブ

    バッチ変換ジョブは非同期的に完了し、結果は S3 バケットに直接書き込まれます。入力は、S3 バケットにも存在する zip ファイルです。上記で作成したモデルを使用してバッチ変換ジョブを作成するには:

    1. SageMaker Batch transformコンソールから、"Create batch transform job"を選択します。

      batch_1
      図 30: バッチ変換ジョブを作成

    2. ジョブに名前を付け、インスタンスタイプを選択します。Inputセクションで、S3 データタイプとして"S3 prefix"を選択し、コンテンツタイプとして"application/zip"を指定します。最後に、S3 で .zip ファイルの場所を指定します。

      batch_2
      図 31:バッチ変換ジョブの名前

    3. 出力を書き込む S3 バケットを指定し、"Create job"をクリックします。

      batch_3
      図 32: 出力場所

バッチ変換ジョブは正常に作成されます。

<center>![batch_4](../images/SageMaker/tr_batch_4.png)</center><center><b>図  33: ジョブ作成の成功</b></center>

出力プロダクトは、上記で指定した S3 の場所にあります。これは、<b>input_file_name.zip.out</b> という名前の CSV ファイルになります。

<center>![batch_5](../images/SageMaker/tr_batch_5.png)</center><center><b>図  34: 出力 S3 バケット</b></center>
  • リアルタイム変換ジョブ

    リアルタイム変換の場合、SageMaker では、HTTP ポストリクエストを受け取り、推論結果をリアルタイムで返すことができるエンドポイントをデプロイできます。このようなエンドポイントを作成するには、次の手順を実行します。

    1.SageMaker モデルコンソールで、エンドポイントのモデルを選択し、"Create endpoint"をクリックします。

    realtime_1
    図 35: エンドポイント構成の作成

    1. エンドポイントに名前を付けて、"Create endpoint configuration"を選択します。

      realtime_2
      図 36: エンドポイント構成

    2. "Production variants"の下で右にスクロールし、"Edit"をクリックします。

      realtime_3
      図 37:プロダクションバリアントの編集

    3. 適切な実稼働環境のエンドポイントを設定し、"Save"をクリックし、"Create Endpoint Configuration"をクリックします。

      realtime_4
      図 38: エンドポイント構成

    4. 最後に"Create endpoint"をクリックします。

      realtime_5
      図 39: エンドポイント構成

    5. これで、エンドポイントが SageMaker コンソールに表示されます。

    realtime_6
    図 40: エンドポイントが正常に作成されました

  • エンドポイントをクリックすると、API を含む詳細情報が表示されます。

    realtime_7
    図 41: エンドポイントの詳細

エンドポイントは、AWS SageMaker endpoint documentationに従って呼び出すことができます。NeoPulse®を使用して構築されたモデルをホストするエンドポイントの場合、本文にはバイナリzipファイルが含まれ、"Content-Type"ヘッダーは"application/zip"に設定する必要があります。

注: AWS 料金を節約するためにエンドポイント使用していない場合は、エンドポイントを削除する必要があります。