Oracle Machine Learningモデルのデプロイ

Oracle Machine Learning Servicesは、Oracle Databaseをバックエンド・リポジトリとして使用する中間層Webアプリケーションです。Oracle Machine Learning Servicesでは、Oracle Machine LearningモデルおよびONNX形式モデルのモデル・デプロイメントをサポートしています。モデルのデプロイメントとは、機械学習モデルを本番環境に統合する方法のことです。

サポートされる機能

Oracle Machine Learning ServicesのREST APIでは、Oracle Machine LearningモデルおよびONNX形式モデルに対して次の機能をサポートしています。
  • デプロイ済モデルの格納、削除およびリスト
  • モデルのメタデータおよびコンテンツの取得
  • ネームスペースでのモデルの編成
  • モデル・エンドポイントの作成、削除およびリスト
  • モデル・エンドポイントのSwaggerドキュメントの取得
  • モデルの詳細の取得
  • エンドポイント詳細の取得
  • モデル・エンドポイントを使用したスコアリング

サポートされる機械学習モデル

Oracle Machine Learning ServicesのREST APIでは、次の機械学習モデルをサポートしています。
  • 分類モデル
  • クラスタリング・モデル
  • 特徴抽出モデル
  • 回帰モデル

ノート:

パーティション化されたモデルも含まれます。

数値列、カテゴリ列、テキスト列およびネストした列をサポートしています。予測の詳細は、数値列およびカテゴリ列ではサポートされますが、ネストした列およびテキスト列ではサポートされません。

ノート:

sql変換が埋め込まれたモデルはサポートされていません。

Oracle Machine Learningモデルをデプロイするには:

  1. dbms_data_mining.export_sermodel APIを使用して、Oracle Machine Learningモデルをファイルにエクスポートします。

    詳細は、EXPORT_SERMODELプロシージャを参照してください

  2. 認証に記載されている手順に従って、トークンを取得します。これは、HTTP認証スキームのセキュリティ・トークンであるBearerトークンです。リクエストの実行時に、Authorizationヘッダーのこのトークンを送信する必要があります。

    ノート:

    トークンを取得できるデータベース・アカウントには、OML_DEVELOPERロールが必要です。
  3. POSTリクエストをモデル・リポジトリ・サービスに送信して、モデルをデータベースのモデル・リポジトリに格納します。次のcURLコマンドを使用します。
    curl -X POST --header "Authorization: Bearer $token" 
    <omlmod-cloud-service-location-url>/omlmod/v1/models \
    -H 'content-type: multipart/form-data; boundary=Boundary' \
    -F modelData=@modelfile \
    -F modelName=kmmod \
    -F modelType=OML \
    -F 'description=Clustering model' \
    -F shared=true \
    -F version=1.0

    ノート:

    モデルをリポジトリに格納すると、一意のIDが生成されます。これは、モデル・エンドポイントの作成時に使用するmodelIdです。
    この例の説明は、次のとおりです。
    • $tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数を表します。
    • kmmodはモデル名です
  4. POSTリクエストを使用してモデル・エンドポイントを作成します。このメソッドは、modelIdおよびuriを入力として取ります。
    モデルをデプロイするPOSTリクエストの例:
    curl -X POST --header "Authorization: Bearer $token" 
    <omlmod-cloud-service-location-url> /omlmod/v1/deployment\
    --header 'Content-Type: application/json' \
    -d '{"uri":"km_model","modelId":"8c8a4499-a6cd-4706-b9bf-dbf489104a95"}'
    この例の説明は、次のとおりです。
    • $tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数を表します。
    • km_modelはURIです。
    • 8c8a4499-a6cd-4706-b9bf-dbf489104a95はmodelIdです。

    ノート:

    モデル所有者のみがモデルをデプロイできます。モデル所有者とは、モデルを格納するユーザーです。デプロイ済モデルに対して新しいエンドポイントが作成されます。
  5. GETリクエストを使用して、このエンドポイントのOpen APIドキュメントを取得します。
    URIがkm_modelのデプロイ済モデル・エンドポイントのOpen APIドキュメントの例:
    curl  -X GET --header "Authorization: Bearer $token" 
     <omlmod-cloud-service-location-url>/omlmod/v1/deployment/km_model/api
    この例の説明は、次のとおりです。
    • $tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数を表します。
    • km_modelはURIです。
  6. 次のようにPOSTリクエストを使用して、モデル・エンドポイントをスコアリングします。
    curl  -X POST --header "Authorization: Bearer $token" 
    <omlmod-cloud-service-location-url>/omlmod/v1/deployment/km_model/score\
     --header 'Content-Type: application/json' --header 'Accept: application/json'\
    -d '{"inputRecords":[{"X1":1,"X2":5}]}'
    この例の説明は、次のとおりです。
    • $tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数を表します。
    • /deployment/km_model/はURIです。
    • inputRecordsは配列で、単一のレコード(例を参照)または複数のレコードのミニバッチを渡すことができます。