Oracle Machine Learningモデルの使用
Oracle Machine Learning Servicesは、Oracle Databaseをバックエンド・リポジトリとして使用する中間層Webアプリケーションです。
- APIの表示
- 保存済モデルのリストの取得
- モデルIDの参照による特定のモデルの表示
- モデル名でフィルタされたモデルのリストの取得
- バージョンおよびネームスペースでフィルタされたモデルのリストの取得
- Oracle Machine Learningモデル(回帰)のデプロイ
- Oracle Machine Learningモデル(分類)のデプロイ
jq
を使用して、JSON出力を読取り可能な形式に解析できます。jq
ユーティリティは、主要なLinux配布リポジトリのすべてに含まれています。Oracle LinuxおよびRed Hatシステムでは、次のコマンドを使用してインストールされます。 $ sudo yum install jq
ノート:
cURLコマンドでjq
を使用しても、HTTPレスポンスは返されません。HTTPレスポンスを返すには、jq
を削除し、curlコマンドに-i
フラグを追加します。
1: Oracle Machine Learning ServicesのREST APIの表示
この例では、OML ServicesのREST APIを表示する方法を示します。
curl -i -X GET --header "Authorization: Bearer ${token}" "<oml-cloud-service-location-url>/omlmod/v1/api"
HTTP/1.1 200 OK Date: Tue, 10 Nov 2021 18:03:08 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: X-Requested-With, Content-Type { "openapi": "3.0.0", "info": { "title": "OML Services APIs", "description": "APIs for the Oracle Machine Learning Services.", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "Simeon Greene", "url": "http://www.oracle.com", "email": "simeon.m.greene@oracle.com" }, "version": "1.0.0" }, "servers": .. ..
2: 保存済モデルのリストの取得
この例では、リポジトリに保存されているすべてのOMLモデルのリストを取得する方法を示します。
curl -X GET --header "Authorization: Bearer ${token}" "<oml-cloud-service-location-url>/omlmod/v1/models" | jq
{ "items": [ { "version": "1.5", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "1b6fed66-bacb-48c7-8549-14542abe2a82", "modelName": "OML_Insurance_Affinity", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/1b6fed66-bacb-48c7-8549-14542abe2a82" } ], "namespace": "OML_MODELS", "shared": true, "storedOn": "2021-11-16T20:43:28.733Z" }, { "version": "1.4", "modelType": "ONNX", "createdBy": "OMLUSER", "modelId": "228707fa-218a-4fb9-b1e7-bc111059a04f", "modelName": "onnxTitanicModel", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/228707fa-218a-4fb9-b1e7-bc111059a04f" } ], "namespace": "ONNX_MODELS", "shared": true, "storedOn": "2021-11-16T21:07:13.291Z" }, ... ... } ] }
3: モデルIDの参照による特定のモデルの表示
ノート:
モデルIDを参照してモデルを表示するには、最初にmodel_Id
をエクスポートする必要があります。
$model_Id
にエクスポートします。 export model_Id=bc5cf626-d4f6-45ba-8a50-c3e57a008bd7
この例では、bc5cf626-d4f6-45ba-8a50-c3e57a008bd7
がmodel_Id
です。
model_Id
を参照してモデルを表示します。curl -X GET --header "Authorization: Bearer ${token}" "<oml-cloud-service-location-url>/omlmod/v1/models/$model_Id" | jq
bc5cf626-d4f6-45ba-8a50-c3e57a008bd7
のモデルについて次の情報を返します。 { "version": "1.0", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "bc5cf626-d4f6-45ba-8a50-c3e57a008bd7", "modelName": "GLM_MODEL", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/bc5cf626-d4f6-45ba-8a50-c3e57a008bd7" } ], "namespace": "OML_MODELS", "shared": true, "storedOn": "2021-11-06T22:16:29.387Z" }
4: モデル名でフィルタされたモデルのリストの取得
この例では、モデル名でフィルタされたモデルのリストを取得する方法を示します。
modelName
でフィルタされたモデルのリストを取得します。この例では、GLM_MODEL
がmodelName
です。
curl -X GET --header "Authorization: Bearer $token" "<oml-cloud-service-location-url>/omlmod/v1/models?modelName=GLM_MODEL" | jq
{ "items": [ { "version": "1.5", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "bc5cf626-d4f6-45ba-8a50-c3e57a008bd7", "modelName": "GLM_Model", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/1b6fed66-bacb-48c7-8549-14542abe2a82" } ], "namespace": "OML_MODELS", "shared": true, "storedOn": "2021-11-16T20:43:28.733Z" }, } ] }
5: バージョンおよびネームスペースでフィルタされたモデルのリストの取得
この例では、モデルのバージョンおよびネームスペースでフィルタされたモデルのリストを取得する方法を示します。
version=1.0
およびnamespace=OML_MODELS
でフィルタされたモデルのリストを取得します。curl -X GET --header "Authorization: Bearer $token" "<oml-cloud-service-location-url>/omlmod/v1/models?version=1.0&namespace=OML_MODELS" | jq
{ "items": [ { "version": "1.0", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "bc5cf626-d4f6-45ba-8a50-c3e57a008bd7", "modelName": "GLM_MODEL", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/bc5cf626-d4f6-45ba-8a50-c3e57a008bd7" } ], "namespace": "OML_MODELS", "shared": true, "storedOn": "2021-11-06T22:16:29.387Z" } ], "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models" } ] }
6: Oracle Machine Learningモデル(回帰)のデプロイ
この例では、機械学習回帰モデルをデプロイする方法を示します。
この例は、次のサブステップで構成され、データベースからのモデルのエクスポート、モデル・リポジトリへのモデルの格納、モデル・スコアリング・エンドポイントの作成、エンドポイント詳細の取得、モデルによるスコアリング、2つのレコードのミニ・バッチによるスコアリング、モデル・スコアリング・エンドポイントの削除およびモデルの削除の各方法を示します。
- モデルのエクスポート:
EXPORT_SERMODEL
プロシージャを使用してデータベースからモデルをエクスポートします。詳細は、EXPORT_SERMODELプロシージャを参照してください。または、データベースからOMLサービス・リポジトリにモデルを直接エクスポートすることもできます。モデルをデータベースから直接リポジトリにエクスポートするには、次のcURLコマンドを実行します:curl -i -X POST --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ "<oml-cloud-service-location-url>/omlmod/v1/models" \ -d '{"dbModelName":"GLM_MODEL", "modelSchemaName": "OMLUSER", "modelName":"GLM_MODEL_DEPLOY", "modelType":"OML", "description": "testing JSON structure", "namespace": "OML_MODELS", "shared": true, "version": "1.0"}'
この例では、モデルIDはf1c52fe4-3ebf-4151-8ba6-6fa8f6c6ceb6
です。次のパラメータを指定する必要があります:dbModelName:
これは、データベース内のモデル名です。modelSchemaName:
これは、データベース内モデルのスキーマです。デフォルトはユーザー・スキーマです。ただし、ユーザーが別のスキーマのモデルに対する権限を持っている場合、そのユーザーはそのモデルをリポジトリに格納できます。modelName:
これは、リポジトリに格納する既存のPOSTコールの名前と同じです。modelType:
description:
このモデルの説明を入力します。namespace:
モデル・ネームスペースの名前を入力します。shared:
TRUE
と入力すると、データベース・スキーマへのアクセス権を持つユーザーはモデルを表示およびデプロイできます。それ以外の場合は、FALSE
と入力します。version:
モデルのバージョンを入力します。バージョンの形式はxx.xx
にする必要があります。ここで、x
は数値です。
- モデルの格納:
POST
リクエストをモデル・リポジトリ・サービスに送信して、新しいモデルをデータベースのモデル・リポジトリに格納します。ノート:
モデルをリポジトリに格納すると、一意のモデルIDが生成されます。このmodelId
は、モデル・エンドポイントの作成時に使用します。curl -X POST --header "Authorization: Bearer $token" \ <oml-cloud-service-location-url>/omlmod/v1/models \ --header 'content-type: multipart/form-data; boundary=Boundary' \ --form modelData=@GLM_MODEL.mod \ --form modelName=GLM_MODEL \ --form modelType=OML \ --form 'description=Saving GLM_MODEL' \ --form 'namespace=OML_MODELS' \ --form shared=true \ --form version=1.0 | jq
このコマンドは、次のメッセージに示すように、c9e5c222-ab73-4f4f-ba51-7ded59f33251
である一意のmodelId
を生成し、モデルをリポジトリに格納し、モデルが格納されているリポジトリのURLを提供します:{ "modelId": "c9e5c222-ab73-4f4f-ba51-7ded59f33251", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/c9e5c222-ab73-4f4f-ba51-7ded59f33251" } ] }
- OMLモデル・スコアリング・エンドポイントの作成: 次のcURLコマンドを実行して、OMLモデル・スコアリング・エンドポイントを作成します。
ノート:
モデル・スコアリング・エンドポイントを作成するには、modelId
を指定する必要があります。curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment" \ --header 'Content-Type: application/json' \ --header "Authorization: Bearer ${token}" \ --data '{ "modelId":"c9e5c222-ab73-4f4f-ba51-7ded59f33251", "uri":"GLM_MODEL" }' | jq
このコマンドは、モデル・スコアリング・エンドポイントを作成し、次の詳細を返します。{ "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/GLM_MODEL" } ], "modelId": "c9e5c222-ab73-4f4f-ba51-7ded59f33251", "uri": "GLM_MODEL", "deployedOn": "2021-11-17T00:52:13.892Z" }
- エンドポイント詳細の取得: 次のcURLコマンドを実行して、モデル・エンドポイントの詳細を取得します。
curl -X GET "<oml-cloud-service-location-url>/omlmod/v1/deployment/GLM_MODEL" \ --header "Authorization: Bearer $token" | jq
このコマンドは、モデル・エンドポイントに関する次の情報を返します。{ "version": "1.0", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "c9e5c222-ab73-4f4f-ba51-7ded59f33251", "description": "Saving GLM_MODEL", "modelName": "GLM_MODEL", "metadata": { "miningFunction": "REGRESSION", "algorithm": "GENERALIZED_LINEAR_MODEL", "attributes": [ { "name": "PETAL_LENGTH", "attributeType": "NUMERICAL" }, { "name": "PETAL_WIDTH", "attributeType": "NUMERICAL" }, { "name": "SPECIES", "attributeType": "CATEGORICAL" } ], "output": { "name": "SEPAL_WIDTH", "attributeType": "NUMERICAL" }, "labels": [], "modelName": "GLM_MODEL" }, "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/GLM_MODEL" } ], "namespace": "OML_MODELS", "shared": true, "uri": "GLM_MODEL", "deployedOn": "2021-11-17T00:52:13.892Z" }
- OMLモデルを使用したスコアリング: 次のcURLコマンドを実行して、入力レコードが
SEPAL_WIDTH
およびPETAL_WIDTH
のOracle Machine Learningモデルを使用してスコアリングします。curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment/GLM_MODEL/score" \ --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ -d '{"inputRecords":[{"SEPAL_WIDTH":4,"PETAL_WIDTH":5}]}'| jq
このコマンドは、OMLモデルをスコアリングし、次のスコアリング結果を返します。{ "scoringResults": [ { "regression": 6.746995678623538 } ] }
- 2つのレコードのミニバッチを使用したスコアリング: 次のcURLコマンドを実行して、2つのレコードのミニバッチを使用してスコアリングします。
curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment/GLM_MODEL/score" \ --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ -d '{"inputRecords":[{"SEPAL_WIDTH":4,"PETAL_WIDTH":7},{"SEPAL_WIDTH":5,"PETAL_WIDTH":8}]}'} | jq
このコマンドは、2つのミニバッチ・レコードをスコアリングし、次のスコアリング結果を返します。{ "scoringResults": [ { "regression": 7.993886859024584 }, { "regression": 8.617332449225106 } ] }
- モデル・スコアリング・エンドポイントの削除: 次のcURLコマンドを実行して、モデル・スコアリング・エンドポイントを削除します。
curl -i -X DELETE "<oml-cloud-service-location-url>/omlmod/v1/deployment/GLM_MODEL" \ --header "Authorization: Bearer $token"
このコマンドは、モデル・エンドポイントを削除し、次の情報を返します。HTTP/1.1 204 No Content Date: Tue, 17 Nov 2021 01:03:04 GMT Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: X-Requested-With, Content-Type
- モデルの削除: 次のcURLコマンドを実行して、モデルを削除します。
curl -i -X DELETE "<oml-cloud-service-location-url>/omlmod/v1/models/c9e5c222-ab73-4f4f-ba51-7ded59f33251" \ --header "Authorization: Bearer $token"
このコマンドは、モデルを削除し、次の情報を返します。HTTP/1.1 204 No Content Date: Tue, 17 Nov 2021 01:04:00 GMT Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: X-Requested-With, Content-Type
7: Oracle Machine Learningモデル(分類)のデプロイ
- モデルのエクスポート: データベースからモデルをエクスポートするには、
EXPORT_SERMODEL
プロシージャを使用します。ノート:
詳細は、EXPORT_SERMODELプロシージャを参照してください。または、データベースからOMLサービス・リポジトリにモデルを直接エクスポートすることもできます。モデルをデータベースから直接リポジトリにエクスポートするには、次のcURLコマンドを実行します:
この例では、モデルIDはcurl -i -X POST --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ "<oml-cloud-service-location-url>/omlmod/v1/models" \ -d '{"dbModelName":"GLM_MODEL", "modelSchemaName": "OMLUSER", "modelName":"GLM_MODEL_DEPLOY", "modelType":"OML", "description": "testing JSON structure", "namespace": "OML_MODELS", "shared": true, "version": "1.0"}'
f1c52fe4-3ebf-4151-8ba6-6fa8f6c6ceb6
です。次のパラメータを指定する必要があります:dbModelName:
これは、データベース内のモデル名です。modelSchemaName:
これは、データベース内モデルのスキーマです。デフォルトはユーザー・スキーマです。ただし、ユーザーが別のスキーマのモデルに対する権限を持っている場合、そのユーザーはそのモデルをリポジトリに格納できます。modelName:
これは、リポジトリに格納する既存のPOSTコールの名前と同じです。modelType:
description:
このモデルの説明を入力します。namespace:
モデル・ネームスペースの名前を入力します。shared:
TRUE
と入力すると、データベース・スキーマへのアクセス権を持つユーザーはモデルを表示およびデプロイできます。それ以外の場合は、FALSE
と入力します。version:
モデルのバージョンを入力します。バージョンの形式はxx.xx
にする必要があります。ここで、x
は数値です。
- モデルの格納: モデルをデータベースのモデル・リポジトリに格納するには、
POST
リクエストをモデル・リポジトリ・サービスに送信します。ノート:
モデルをリポジトリに格納すると、一意のモデルIDが生成されます。これは、モデル・エンドポイントの作成時に使用するmodelId
です。curl -X POST --header "Authorization: Bearer $token" \ <oml-cloud-service-location-url>/omlmod/v1/models \ -H 'content-type: multipart/form-data; boundary=Boundary' \ -F modelData=@CLASS_MODEL.mod \ -F modelName=CLASS_MODEL \ -F modelType=OML \ -F 'description=Saving CLASS_MODEL' \ -F 'namespace=OML_MODELS' \ -F shared=true \ -F version=1.0 | jq
このコマンドは、次のメッセージに示すように、モデルをモデル・リポジトリに格納し、一意のmodelId
を生成し、モデルが格納されているリポジトリのURLを提供します。{ "modelId": "074abec1-72e3-413e-bc4a-d6f9f486de20", "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/074abec1-72e3-413e-bc4a-d6f9f486de20" } ] }
- スコアリング・エンドポイントの作成: OMLモデル・スコアリング・エンドポイントを作成するには、次のcURLコマンドを実行します。
curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment" \ --header 'Content-Type: application/json' \ --header "Authorization: Bearer ${token}" \ --data '{ "modelId":"074abec1-72e3-413e-bc4a-d6f9f486de20", "uri":"CLASS_MODEL" }'
このコマンドは、スコアリング・エンドポイントを作成し、次の情報を返します:{ "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/CLASS_MODEL" } ], "modelId": "074abec1-72e3-413e-bc4a-d6f9f486de20", "uri": "CLASS_MODEL", "deployedOn": "2021-11-17T01:08:26.946Z" }
- エンドポイント詳細の取得: URIで識別されるモデル・エンドポイント詳細を取得するには、次のcURLコマンドを実行します。
curl -X GET "<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL" \ --header "Authorization: Bearer $token" | jq
この例では、CLASS_MODEL
がURIです。このコマンドは、次のモデル・エンドポイント詳細を返します。{ "version": "1.0", "modelType": "OML", "createdBy": "OMLUSER", "modelId": "074abec1-72e3-413e-bc4a-d6f9f486de20", "description": "Saving CLASS_MODEL", "modelName": "CLASS_MODEL", "metadata": { "miningFunction": "CLASSIFICATION", "algorithm": "DECISION_TREE", "attributes": [ { "name": "PETAL_LENGTH", "attributeType": "NUMERICAL" }, { "name": "PETAL_WIDTH", "attributeType": "NUMERICAL" }, { "name": "SEPAL_WIDTH", "attributeType": "NUMERICAL" } ], "output": { "name": "SEPAL_LENGTH", "attributeType": "CATEGORICAL" }, "labels": [ "4.3", "4.4", ... ... ... "7.7", "7.9" ], "modelName": "CLASS_MODEL" }, "links": [ { "rel": "self", "href": "https://qtraya2braestch-omldb.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/CLASS_MODEL" } ], "namespace": "OML_MODELS", "shared": true, "uri": "CLASS_MODEL", "deployedOn": "2021-11-17T01:08:26.946Z" }
- モデルによるスコアリング: URIで識別されるエンドポイントを使用してOMLモデルでスコアリングするには、次のcURLコマンドを実行します:
curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL/score" \ --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ -d '{"inputRecords":[{"SEPAL_LENGTH":3}],"topN":1}' }'
この例では、CLASS_MODEL
がURIです。指定されるのは、入力レコードSEPAL_LENGTH
1つのみです。コマンドではモデルでスコアリングします。ここでは、次のスコアリング結果に示すように、topN
によって分類結果がフィルタされ、N個の最も高い確率が表示されます:{ "scoringResults": [ { "classifications": [ { "label": "4.4", "probability": 0.2727272727272727 } ] } ] }
- 2つのレコードのミニバッチによるスコアリング: URIで識別されるエンドポイントを使用してOMLモデルでスコアリングするには、次のcURLコマンドを実行します:
curl -X POST "<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL/score" \ --header "Authorization: Bearer ${token}" \ --header 'Content-Type: application/json' \ -d '{"inputRecords":[{"SEPAL_LENGTH":4},{"SEPAL_LENGTH":5}], "topN":1}'} '}
このコマンドは、ミニバッチでスコアリングし、次のスコアリング結果を返します。{ "scoringResults": [ { "classifications": [ { "label": "4.4", "probability": 0.2727272727272727 } ] }, { "classifications": [ { "label": "4.4", "probability": 0.2727272727272727 } ] } ] }
- スコアリング・エンドポイントの削除: URIで識別されるスコアリング・エンドポイントを削除するには、次のcURLコマンドを実行します:
curl -i -X DELETE "<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL" \ --header "Authorization: Bearer $token"
この例では、CLASS_MODEL
がURIです。このコマンドは、スコアリング・エンドポイントを削除し、次の情報を返します。HTTP/1.1 204 No Content Date: Tue, 17 Nov 2021 01:11:20 GMT Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: X-Requested-With, Content-Type
- モデルの削除: modelIdで識別されるモデルを削除するには、次のcURLコマンドを実行します。
curl -i -X DELETE "<oml-cloud-service-location-url>/omlmod/v1/models/074abec1-72e3-413e-bc4a-d6f9f486de20" \ --header "Authorization: Bearer $token"
この例では、074abec1-72e3-413e-bc4a-d6f9f486de20
がmodelId.
です。このコマンドは、モデルを削除し、次の情報を返します。HTTP/1.1 204 No Content Date: Tue, 17 Nov 2021 01:12:13 GMT Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: X-Requested-With, Content-Type