バッチ・デプロイメントのスコアリングのためのデータ・ソース

最終更新: 2024年7月30日
バッチ・デプロイメントのスコアリングのためのデータ・ソース

バッチ・デプロイメント・ジョブの入力データは、ファイルの直接アップロードやデータベース表へのリンクの提供など、いくつかの方法で提供できます。 許容される入力データのタイプは、作成するデプロイメント・ジョブのタイプによって異なります。

フレームワークごとにサポートされる入力タイプについては、 フレームワーク別のバッチ・デプロイメント入力の詳細を参照してください。

入力データは、 インライン・データ または データ参照としてバッチ・ジョブに提供できます。

フレームワークおよび資産タイプ別のバッチ・デプロイメントに使用可能な入力タイプ

フレームワークおよび資産タイプ別のバッチ・デプロイメントに使用可能な入力タイプ
フレームワーク バッチ・デプロイメント・タイプ
Decision Optimization インラインおよび参照
Python 関数 インライン
PyTorch インラインおよび参照
Tensorflow インラインおよび参照
Scikit-learn インラインおよび参照
Python スクリプト 参照
Spark MLlib インラインおよび参照
SPSS インラインおよび参照
XGBoost インラインおよび参照

インライン・データ説明

バッチ処理のインライン・タイプ入力データは、バッチ・デプロイメント・ジョブのペイロードで指定されます。 例えば、UI でデプロイメント入力として、またはノートブックで scoring.input_data パラメーターの値として CSV ファイルを渡すことができます。 バッチ・デプロイメント・ジョブが完了すると、対応するジョブの scoring.predictions メタデータ・パラメーターに出力が書き込まれます。

データ参照の説明

バッチ処理に使用される データ参照 タイプの入出力データは、以下のように保管できます。

  • リモート・データ・ソース ( Cloud Object Storage バケット、SQL データベース、非 SQL データベースなど)。
  • デプロイメント・スペース内のローカル・データ資産または管理対象データ資産として。

データ参照の詳細には、以下が含まれます。

  • データ・ソース参照 type は、資産タイプに依存します。 デプロイメント・スペースへのデータ資産の追加「データ・ソース参照タイプ」 セクションを参照してください。

  • data_asset タイプの場合、入力データへの参照は、デプロイメント・ジョブのペイロードの input_data_references.location.href パラメーターで /v2/assets href として指定する必要があります。 指定されたデータ資産は、ローカル・データ資産または接続済みデータ資産への参照です。 また、バッチ・デプロイメント・ジョブの出力データをリモート・データ・ソースに保持する必要がある場合、出力データへの参照は、デプロイメント・ジョブのペイロードで /v2/assets href in output_data_reference.location.href パラメーターとして指定する必要があります。

  • すべての入出力 data_asset 参照は、バッチ・デプロイメントと同じスペース ID 内に存在しなければなりません。

  • バッチ・デプロイメント・ジョブの出力データをローカル資産としてデプロイメント・スペースに保持する必要がある場合は、 output_data_reference.location.name を指定する必要があります。 バッチ・デプロイメント・ジョブが正常に完了すると、指定された名前の資産がスペースに作成されます。

  • 出力データには、リモート・データベース内のどこにデータ資産があるかに関する情報を含めることができます。 この状況では、バッチ出力を表に追加するか、表を切り捨てて出力データを更新するかを指定できます。 output_data_references.location.write_mode パラメーターを使用して、値 truncate または appendを指定します。

    • 値として truncate を指定すると、表が切り捨てられ、バッチ出力データが挿入されます。
    • 値として append を指定すると、バッチ出力データがリモート・データベース表に追加されます。
    • write_mode は、 output_data_references パラメーターにのみ適用されます。
    • write_mode は、リモート・データベース関連のデータ資産にのみ適用されます。 このパラメーターは、ローカル・データ資産または Cloud Object Storage ベースのデータ資産には適用されません。

data_asset ペイロードの例

"input_data_references": [{
    "type": "data_asset",
    "connection": {
    },
    "location": {
        "href": "/v2/assets/<asset_id>?space_id=<space_id>"
    }
}]

connection_asset ペイロードの例

"input_data_references": [{
    "type": "connection_asset",
    "connection": {
        "id": "<connection_guid>"
    },
    "location": {
        "bucket": "<bucket name>",
        "file_name": "<directory_name>/<file name>"
    }
    <other wdp-properties supported by runtimes>
}]

入力データの構造化

バッチ・ジョブの入力データ (ペイロードとも呼ばれます) をどのように構造化するかは、デプロイする資産のフレームワークによって異なります。

.csv 入力ファイルまたはその他の構造化データ・フォーマットは、アセットのスキーマと一致するようにフォーマット設定する必要があります。 先頭の行に列名 (フィールド) をリストし、後続の行にスコアリングする値をリストします。 例えば、以下のコード・スニペットを参照してください。

PassengerId, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked
1,3,"Braund, Mr. Owen Harris",0,22,1,0,A/5 21171,7.25,,S
4,1,"Winslet, Mr. Leo Brown",1,65,1,0,B/5 200763,7.50,,S

JSON 入力ファイルは、以下の形式を使用して、フィールドと値に関する同じ情報を提供する必要があります。

{"input_data":[{
        "fields": [<field1>, <field2>, ...],
        "values": [[<value1>, <value2>, ...]]
}]}

例:

{"input_data":[{
        "fields": ["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],
        "values": [[1,3,"Braund, Mr. Owen Harris",0,22,1,0,"A/5 21171",7.25,null,"S"],
                  [4,1,"Winselt, Mr. Leo Brown",1,65,1,0,"B/5 200763",7.50,null,"S"]]
}]}

既存のモデルのスキーマに一致するペイロードの準備

以下のサンプル・コードを参照してください。

model_details = client.repository.get_details("<model_id>")  # retrieves details and includes schema
columns_in_schema = []
for i in range(0, len(model_details['entity']['schemas']['input'][0].get('fields'))):
    columns_in_schema.append(model_details['entity']['schemas']['input'][0].get('fields')[i]['name'])

X = X[columns_in_schema] # where X is a pandas dataframe that contains values to be scored
#(...)
scoring_values = X.values.tolist()
array_of_input_fields = X.columns.tolist()
payload_scoring = {"input_data": [{"fields": [array_of_input_fields],"values": scoring_values}]}

親トピック: バッチ・デプロイメントの作成