データベースからOracle Machine Learning Servicesへのデータベース内モデルのデプロイ

この例では、データベースからOracle Machine Learning Servicesにモデルをデプロイする方法を示します。

Linuxユーティリティjqを使用して、JSON出力を読取り可能な形式に解析できます。jqユーティリティは、主要なLinux配布リポジトリのすべてに含まれています。Oracle LinuxおよびRed Hatシステムでは、次のコマンドを使用してインストールされます。
$ sudo yum install jq

ノート:

cURLコマンドでjqを使用しても、HTTPレスポンスは返されません。HTTPレスポンスを返すには、jqを削除し、curlコマンドに-iフラグを追加します。
この例では、分類モデルCLASS_MODELをデータベースからOMLサービス・リポジトリにデプロイする方法を示します。ここでは、次のステップを実行します:
  • データベースからOracle Machine Learning Servicesにモデルをインポートする
  • モデル・スコアリング・エンドポイントを作成する
  • エンドポイント詳細の取得
  • そのモデルを使用してスコアリングする
モデルをデプロイするには:
  1. モデルのインポート: データベースから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":"CLASS_MODEL", "modelSchemaName": "OMLUSER", "modelName":"CLASS_MODEL", "modelType":"OML", "description": "testing JSON structure", "namespace": "OML_MODELS", "shared": true, "version": "1.0"}'
    次のパラメータを指定する必要があります:
    • dbModelName: これは、データベース内のモデル名です。
    • modelSchemaName: これは、データベース内モデルのスキーマです。デフォルトはユーザー・スキーマです。ただし、ユーザーは、別のスキーマ内のモデルに対する権限がある場合でも、それをOracle Machine Learning Servicesリポジトリに格納できます。
    • modelName: これは、Oracle Machine Learning Servicesリポジトリに格納する、既存のPOSTコール内と同じ名前です。
    • modelType:
    • description: このモデルの説明を入力します。
    • namespace: モデル・ネームスペースの名前を入力します。
    • shared: TRUEと入力すると、データベース・スキーマへのアクセス権を持つユーザーはモデルを表示およびデプロイできます。そうしない場合は、FALSEと入力します。
    • version: モデルのバージョンを入力します。バージョンの形式はxx.xxにする必要があります。ここで、xは数値です。
    このコマンドでは、モデルがリポジトリに格納されます。この例では、モデルIDは308a5b01-1d2c-4f7b-b612-e9951814689fです。このコマンドにより、次の情報が返されます。
    HTTP/1.1 201 Created
    Date: Wed, 07 May 2025 14:29:13 GMT
    Content-Type: application/json
    Content-Length: 205
    Connection: keep-alive
    Strict-Transport-Security: max-age=31536000;includeSubDomains
    X-Content-Type-Options: nosniff
    Location: https://qtraya2braestch-omlla.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/308a5b01-1d2c-4f7b-b612-e9951814689f 
    {"modelId":"308a5b01-1d2c-4f7b-b612-e9951814689f","links":[{"rel":"self","href":https://qtraya2braestch-omlla.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/models/308a5b01-1d2c-4f7b-b612-e9951814689f}]}
  2. スコアリング・エンドポイントの作成: OMLモデル・スコアリング・エンドポイントを作成するには、次のcURLコマンドを実行します。
    curl -X POST "$<oml-cloud-service-location-url>/omlmod/v1/deployment" \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer ${token}" \
    --data '{
    "modelId":"308a5b01-1d2c-4f7b-b612-e9951814689f",
    "uri":"CLASS_MODEL2"
    }'
    このコマンドは、スコアリング・エンドポイントを作成し、次の情報を返します:
    {"links":[{"rel":"self","href":"<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL2"}],"modelId":"308a5b01-1d2c-4f7b-b612-e9951814689f","uri":"CLASS_MODEL2","deployedOn":"2025-05-07T14:34:09.289424Z"}
  3. エンドポイント詳細の取得: URIで識別されるモデル・エンドポイント詳細を取得するには、次のcURLコマンドを実行します。
    curl -X GET "$<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL2" \
    --header "Authorization: Bearer $token" | jq
    
    この例では、CLASS_MODEL2がそのURIです。このコマンドは、次のモデル・エンドポイント詳細を返します。
    {"links":[{"rel":"self","href":https://qtraya2braestch-omlla.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/CLASS_MODEL2}],"modelId":"308a5b01-1d2c-4f7b-b612-e9951814689f","uri":"CLASS_MODEL2","deployedOn":"2025-05-07T14:34:09.(base) bash-4.4$ curl -X GET "$<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL2" \
    > --header "Authorization: Bearer $token" | jq
    
    {
      "version": "1.0",
      "modelType": "OML",
      "createdBy": "OMLUSER",
      "modelId": "308a5b01-1d2c-4f7b-b612-e9951814689f",
      "description": "testing JSON structure",
      "modelName": "CLASS_MODEL",
      "metadata": {
        "miningFunction": "CLASSIFICATION",
        "algorithm": "DECISION_TREE",
        "attributes": [
          {
            "name": "PETAL.LENGTH",
            "attributeType": "NUMERICAL"
          },
          {
            "name": "PETAL.WIDTH",
            "attributeType": "NUMERICAL"
          }
        ],
        "output": {
          "name": "SPECIES",
          "attributeType": "CATEGORICAL"
        },
        "labels": [
          "setosa",
          "versicolor",
          "virginica"
        ],
        "modelName": "CLASS_MODEL"
      },
      "links": [
        {
          "rel": "self",
          "href": https://qtraya2braestch-omlla.adb.us-sanjose-1.oraclecloudapps.com/omlmod/v1/deployment/CLASS_MODEL2
        }
      ],
      "namespace": "OML_MODELS",
      "shared": true,
      "uri": "CLASS_MODEL2",
      "deployedOn": "2025-05-07T14:34:09.289424Z"
    }
  4. モデルによるスコアリング: 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":[{"SPECIES":"virginica"}],"topN":2, "topNdetails":2}'
    }'
    この例では、CLASS_MODEL2がそのURIです。このコマンドは、モデルでスコアリングします。ここでは、次のスコアリング結果で示されているように、topNによって分類結果がフィルタされて、最も高い確率がN個表示されます:
    {"scoringResults":[{"classifications":[{"label":"setosa","probability":1.0},{"label":"versicolor","probability":0.0}],"details":[{"columnName":"PETAL.LENGTH","weight":0.667}]}]}
  5. スコアリング・エンドポイントの削除: URIで識別されるスコアリング・エンドポイントを削除するには、次のcURLコマンドを実行します:
    curl -i -X DELETE "<oml-cloud-service-location-url>/omlmod/v1/deployment/CLASS_MODEL2" \
    --header "Authorization: Bearer $token"
    この例では、CLASS_MODELがURIです。このコマンドは、スコアリング・エンドポイントを削除し、次の情報を返します。
    HTTP/1.1 204 No Content
    Date: Tue, 06 May 2025 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
  6. モデルの削除: 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-d6f9f486de20modelId.です。このコマンドは、モデルを削除し、次の情報を返します。
    HTTP/1.1 204 No Content
    Date: Tue, 06 May 2025 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