Amazon ML への予測問い合わせ件数をCloud Watchで取得してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Cloud Watch のメトリクスに、新たにAmazon MLが加わりました。

Now Access CloudWatch Metrics directly from the Amazon ML Console

このメトリクスを用いることで、Cloud Watchを通して直接Amazon MLの予測問い合わせの回数などの情報を監視することができるようになります。

この記事では、実際に予測モデルに対してメトリクスを作成し、その予測問い合わせの状況をCloud Watch を通して監視してみたいと思います。

メトリクスの設定

まずは、Amazon MLで予測モデルを作成します。モデル作成のためのデータはTutorialでお世話になった銀行データをそのまま用います。構築後にリアルタイム予測用のエンドポイントを作成しておきます。

予測モデル作成後、リアルタイム予測やバッチ予測を行うと、CloudWatchにAmazon MLのメトリクスが新たに追加されます。

cloudwatch_for_amazon_ml_1

Amazon MLの予測モデルの詳細画面からもメトリクスを見ることができます。

cloudwatch_for_amazon_ml_2

この情報をもとに、実行された予測の件数や失敗した件数などの情報を得ることができます。

Amazon MLのメトリクスを用いて取得できる情報は以下となります。

メトリクス 説明
PredictCount 実行された予測の件数
PredictFailureCount 失敗した予測の件数
ディメンション 説明
MLModelId Amazon MLのモデルID
RequestMode 予測問い合わせの種類 (BatchPredictionsまたはRealTimePredictions)

リアルタイム予測を試して見る

以下のスクリプトを実施して、実際に問い合わせのカウントが行われるか確認してみました。

import csv
import boto3

model_id         = 'ml-xxxxxxxxxx'
predict_endpoint = 'https://realtime.machinelearning.us-east-1.amazonaws.com'

with open('banking_eval.csv', 'r') as f:
    session = boto3.Session(region_name  = 'us-east-1')
    ml = session.client('machinelearning')

    reader = csv.DictReader(f)
    for row in reader:
        resp = ml.predict(
                MLModelId=model_id,
                Record=row,
                PredictEndpoint=predict_endpoint
        )

        print(resp)

結果がこちらになります。

cloudwatch_for_amazon_ml_3

計測されていることがわかります。

おわりに

CloudWatchを利用することで、Amazon MLの予測問い合わせの件数や失敗した問い合わせを監視することができるようになりました。

Amazon MLによる機械学習を実システムに運用する上では重要な機能なので、今後もアップデートを期待しています。

参考