Azure Database for PostgreSQL と Azure Machine Learning Services を統合する
Azure AI 拡張機能を使うと、Azure Machine Learning オンライン エンドポイントにデプロイされた機械学習モデルを SQL 内から呼び出すことができます。 これらのモデルは、Azure Machine Learning カタログのものでも、トレーニングされてデプロイされたカスタム モデルでも構いません。
前提条件
azure_ai
拡張機能を有効にして構成します。- 機械学習ワークスペースを作成し、CLI、Python、または Azure Machine Learning スタジオを使ってオンライン エンドポイントでモデルをデプロイするか、mlflow モデルをオンライン エンドポイントにデプロイします。
- デプロイの状態を調べてモデルが正常にデプロイされたことを確認し、エンドポイントでモデルの呼び出しをテストして、モデルが正常に実行されることを確認します。
- URI とキーを取得します。これらは、Azure Machine Learning と通信するように拡張機能を構成するために必要です。
Note
Azure Machine Learning のサンプルを調べることができます。
Azure Machine Learning のエンドポイントを構成する
Azure Machine Learning スタジオの [エンドポイント]>[エンドポイントの選択]>[使用] で、オンライン エンドポイントのエンドポイント URI とキーを見つけることができます。 これらの値を使って、オンライン推論エンドポイントを使うように azure_ai
拡張機能を構成します。
select azure_ai.set_setting('azure_ml.scoring_endpoint','<URI>');
select azure_ai.set_setting('azure_ml.endpoint_key', '<Key>');
azure_ml.invoke
オンライン エンドポイントで Azure Machine Learning モデルのデプロイを呼び出して、入力データのスコアを付けます。
azure_ml.invoke(input_data jsonb, timeout_ms integer DEFAULT NULL, throw_on_error boolean DEFAULT true, deployment_name text DEFAULT NULL)
引数
input_data
モデルの要求ペイロードを含む jsonb
JSON。
deployment_name
Azure Machine Learning オンライン推論エンドポイントにデプロイされたモデルに対応するデプロイの text
名
timeout_ms
integer DEFAULT NULL
操作停止後のタイムアウト時間 (ミリ秒単位)。 モデルのデプロイ自体に、ユーザー定義関数のタイムアウト パラメーターより小さいタイムアウト値を指定できます。 このタイムアウトを超えると、スコア付け操作は失敗します。
throw_on_error
boolean DEFAULT true
エラーが発生すると、関数から例外がスローされ、ラップしていたトランザクションがロールバックされます。
max_attempts
integer DEFAULT 1
拡張機能が何らかの再試行可能なエラーで失敗した場合に、Azure Machine Learning エンドポイントの呼び出しを再試行する回数。
retry_delay_ms
integer DEFAULT 1000
拡張機能が何らかの再試行可能なエラーで失敗した場合に、Azure Machine Learning エンドポイントを呼び出すまでに待機する時間 (ミリ秒)。
返り値の種類
JSONB で呼び出されたモデルに対する jsonb
スコアリング出力。
例
機械学習モデルを呼び出す
これは、input_data でモデルを呼び出し、jsonb ペイロードを返します。
-- Invoke model, input data depends on the model.
SELECT * FROM azure_ml.invoke('
{
"input_data": [
[1,2,3,4,5,6,7,8],
[-1,-2,-3,-4,-5,-6,-7,-8]
],
"params": {}
}', deployment_name=>'Housingprediction' )
-- Get JSON elements from model output
SELECT jsonb_array_elements(invoke.invoke) as MedianHousePrediction
FROM azure_ml.invoke('
{
"input_data": [
[1,2,3,4,5,6,7,8],
[-1,-2,-3,-4,-5,-6,-7,-8]
],
"params": {}
}', deployment_name=>'Housingprediction' )