Machine Learning (ML) with Amazon Athena の使用
Machine Learning (ML) with Amazon Athena では、Amazon SageMaker を使用して Machine Learning (ML) 推論を実行する SQL ステートメントの記述に Athena を使用することができます。この機能により、データ分析用の ML モデルへのアクセスが簡単になり、複合型のプログラミング方法を使用して推論を実行する必要がなくなります。
ML with Athena を使用するには、USING EXTERNAL
FUNCTION
句で ML with Athena 関数を定義します。この関数は、使用する SageMaker モデルのエンドポイントをポイントし、モデルに渡す変数名とデータ型を指定します。クエリの後続の句は、関数を参照してモデルに値を渡します。モデルは、クエリが渡す値に基づいて推論を実行し、推論結果を返します。SageMaker と SageMaker エンドポイントの仕組みに関する詳細については、Amazon SageMaker デベロッパーガイドを参照してください。
ML with Athena と SageMaker 推論を使用して結果セット内の異常な値を検出する例については、AWS ビッグデータブログの記事「Amazon Athena 機械学習推論機能を起動して異常値を検出する
考慮事項と制約事項
-
利用可能なリージョン - Athena ML は、Athena エンジンバージョン 2 以降がサポートされている AWS リージョン の機能です。
-
SageMaker モデルのエンドポイントは
text/csv
を受け入れて返す必要があります – データ形式の詳細については、「Amazon SageMaker デベロッパーガイド」の「推論の共通データ形式」を参照してください。 -
Athena が CSV ヘッダーを送信しない – SageMaker エンドポイントが
text/csv
である場合、入力ハンドラーは入力の最初の行が CSV ヘッダーであると想定しません。Athena は CSV ヘッダーを送信しないため、Athena に返される出力に含まれる結果は Athena が想定する行よりも 1 行少なくなり、エラーが発生します。 -
SageMaker エンドポイントのスケーリング – 参照された SageMaker モデルのエンドポイントが、エンドポイントへの Athena コールのために十分にスケールアップされていることを確認してください。詳細については、「Amazon SageMaker デベロッパーガイド」の「Amazon SageMaker モデルの自動スケーリング」と、「Amazon SageMaker API リファレンス」の「CreateEndpointConfig」を参照してください。
-
IAM 許可 – ML with Athena 関数を指定するクエリを実行するには、クエリを実行する IAM プリンシパルに、参照される SageMaker モデルのエンドポイントへの
sagemaker:InvokeEndpoint
アクションの実行が許可されている必要があります。詳細については、「Athena での ML へのアクセスの許可」を参照してください。 -
GROUP BY
句で ML with Athena 関数を直接使用することはできません
ML with Athena 構文
USING EXTERNAL FUNCTION
句は、クエリ内の後続の SELECT
ステートメントで参照できる 1 つの ML with Athena 関数または複数の関数を指定します。関数名、変数名、および変数と戻り値のデータ型を定義します。
概要
以下の構文は、ML with Athena 関数を指定する USING EXTERNAL FUNCTION
句を示しています。
USING EXTERNAL FUNCTION ml_function_name
(variable1
data_type
[, variable2
data_type
][,...])
RETURNS data_type
SAGEMAKER 'sagemaker_endpoint
'
SELECT ml_function_name
()
パラメータ
- USING EXTERNAL FUNCTION
ml_function_name
(variable1
data_type
[,variable2
data_type
][,...]) -
ml_function_name
は、後続のクエリ句で使用できる関数名を定義します。各variable data_type
は、SageMaker モデルが入力として受け入れる名前付き変数とそれに対応するデータ型を指定します。指定されるデータ型は、サポートされている Athena データ型である必要があります。 - RETURNS
data_type
-
data_type
は、SageMaker モデルからの出力としてml_function_name
がクエリに返す SQL データ型を指定します。 - SAGEMAKER '
sagemaker_endpoint
' -
sagemaker_endpoint
は、SageMaker モデルのエンドポイントを指定します。 - SELECT [...]
ml_function_name
(expression
) [...] -
結果を返すために関数変数と SageMaker モデルに値を渡す SELECT クエリです。
ml_function_name
は以前にクエリで定義された関数を指定し、値を渡すために評価されるexpression
がその後に続きます。渡される値および返される値は、USING EXTERNAL FUNCTION
句内の関数に指定された対応するデータ型と一致する必要があります。
例
以下の例は、ML with Athena を使用したクエリを示しています。
USING EXTERNAL FUNCTION predict_customer_registration(age INTEGER) RETURNS DOUBLE SAGEMAKER 'xgboost-2019-09-20-04-49-29-303' SELECT predict_customer_registration(age) AS probability_of_enrolling, customer_id FROM "sampledb"."ml_test_dataset" WHERE predict_customer_registration(age) < 0.5;
お客様の使用例
Machine Learning (ML) with Amazon Athena のプレビュー版を使用する以下の動画では、Athena と SageMaker を併用できる方法が紹介されています。
カスタマーチャーンの予測
以下の動画は、Athena と Amazon SageMaker の機械学習機能を組み合わせてカスタマーチャーンを予測する方法を紹介しています。
ボットネットの検出
以下の動画は、ある企業が Amazon Athena と Amazon SageMaker を使用してボットネットを検出する方法を紹介しています。