この記事について
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のリアルタイム予測を試せるようになりました
以上です。