LoginSignup
1

More than 5 years have passed since last update.

[JAWS-UG CLI] Amazon MachineLearning 入門 (7) エンドポイントの作成、リアルタイム予測の実行

Last updated at Posted at 2016-10-23

この記事について

JAWS-UG CLI専門支部 #67 MachineLearning入門で実施するハンズオン用の手順書です。

前提条件

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • MachineLearningのフルコントロール権限
  • S3のフルコントロール権限
  • STSの関するフルコントロール権限

0. 準備

0.1. リージョンを指定

コマンド
export AWS_DEFAULT_REGION="eu-west-1"

0.2. 資格情報を確認

コマンド
aws configure list

インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。

結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************GMWA         iam-role
secret_key     ****************obFC         iam-role
    region                eu-west-1              env    AWS_DEFAULT_REGION

0.3. バージョン確認

コマンド
aws --version
結果
aws-cli/1.10.66 Python/2.7.12 Linux/4.4.19-29.55.amzn1.x86_64 botocore/1.4.56

0.4. バージョンアップ(必要に応じて)

コマンド
sudo pip install -U awscli

0.5. 変数の確認

コマンド
cat << ETX

    ML_MODEL_ID: ${ML_MODEL_ID}

ETX
結果

    ML_MODEL_ID: ml-model-cli-************

1. リアルタイムエンドポイントの作成

1.1. エンドポイントの作成

変数の確認

コマンド
cat << ETX

    ML_MODEL_ID: ${ML_MODEL_ID}

ETX
結果

    ML_MODEL_ID: ml-model-cli-************

エンドポイントの作成

コマンド
aws machinelearning create-realtime-endpoint \
    --ml-model-id ${ML_MODEL_ID}
結果
{
    "MLModelId": "ml-model-cli-************",
    "RealtimeEndpointInfo": {
        "EndpointStatus": "UPDATING",
        "PeakRequestsPerSecond": 0,
        "CreatedAt": 1474615929.676,
        "EndpointUrl": "https://realtime.machinelearning.eu-west-1.amazonaws.com"
    }
}

エンドポイントURLの確認

コマンド
ENDPOINT_URL=$(aws machinelearning get-ml-model \
    --ml-model-id ${ML_MODEL_ID} \
    --query "EndpointInfo.EndpointUrl" \
    --output text) \
    && echo ${ENDPOINT_URL}

2. リアルタイム予測の実行

2.1. リクエストデータの生成

リクエストデータファイル名の指定

コマンド
RECORD_FILE="record.json"

リクエストデータの生成

リクエストデータは、サンプルデータを確認しながらお好みで編集してください。
説明変数を全て指定する必要はありません。

コマンド
cat << EOF > ${RECORD_FILE}
{
    "age": "44",
    "job": "technician",
    "marital": "single",
    "education": "high.school",
    "default": "no"
}
EOF

2.2. リアルタイム予測の実行

変数の確認

コマンド
cat << ETX

    ML_MODEL_ID: ${ML_MODEL_ID}
    RECORD_FILE: ${RECORD_FILE}
    ENDPOINT_URL: ${ENDPOINT_URL}

ETX
結果

    ML_MODEL_ID: ml-model-cli-************
    RECORD_FILE: record.json
    ENDPOINT_URL: https://realtime.machinelearning.eu-west-1.amazonaws.com

リアルタイム予測の実行

以下の通り、IAMのクレデンシャルが必要です。
Webサービスでリアルタイム予測を利用する場合には、AWS GatewayとLambdaのバックエンドで利用するもしくはCognitoを利用すると比較的実装しやすいと思います。

Amazon Machine Learning + AWS Lambda + API Gateway でリアルタイム予測APIを構築する

コマンド
aws machinelearning predict \
    --ml-model-id ${ML_MODEL_ID} \
    --record file://${RECORD_FILE} \
    --predict-endpoint ${ENDPOINT_URL}
結果
{
    "Prediction": {
        "predictedLabel": "0",
        "predictedScores": {
            "0": 0.24819324910640717
        },
        "details": {
            "PredictiveModelType": "BINARY",
            "Algorithm": "SGD"
        }
    }
}

補足

Management Consoleからリアルタイム予測を気軽に試すことができます。
詳細は、やっぱりDevelopers.IOで!

マネジメントコンソール上でAmazon Machine Learningのリアルタイム予測を試せるようになりました

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1