バッチ・デプロイメントのスコアリングのためのデータ・ソース
バッチ・デプロイメント・ジョブの入力データは、ファイルの直接アップロードやデータベース表へのリンクの提供など、いくつかの方法で提供できます。 許容される入力データのタイプは、作成するデプロイメント・ジョブのタイプによって異なります。
フレームワークごとにサポートされる入力タイプについては、 フレームワーク別のバッチ・デプロイメント入力の詳細を参照してください。
入力データは、 インライン・データ または データ参照としてバッチ・ジョブに提供できます。
フレームワークおよび資産タイプ別のバッチ・デプロイメントに使用可能な入力タイプ
フレームワーク | バッチ・デプロイメント・タイプ |
---|---|
Decision Optimization | インラインおよび参照 |
Python 関数 | インライン |
PyTorch | インラインおよび参照 |
Tensorflow | インラインおよび参照 |
Scikit-learn | インラインおよび参照 |
Python スクリプト | 参照 |
Spark MLlib | インラインおよび参照 |
SPSS | インラインおよび参照 |
XGBoost | インラインおよび参照 |
インライン・データ説明
バッチ処理のインライン・タイプ入力データは、バッチ・デプロイメント・ジョブのペイロードで指定されます。 例えば、UI でデプロイメント入力として、またはノートブックで
パラメーターの値として CSV ファイルを渡すことができます。 バッチ・デプロイメント・ジョブが完了すると、対応するジョブの scoring.input_data
メタデータ・パラメーターに出力が書き込まれます。scoring.predictions
データ参照の説明
バッチ処理に使用される データ参照 タイプの入出力データは、以下のように保管できます。
- リモート・データ・ソース ( Cloud Object Storage バケット、SQL データベース、非 SQL データベースなど)。
- デプロイメント・スペース内のローカル・データ資産または管理対象データ資産として。
データ参照の詳細には、以下が含まれます。
データ・ソース参照
は、資産タイプに依存します。 デプロイメント・スペースへのデータ資産の追加の 「データ・ソース参照タイプ」 セクションを参照してください。type
タイプの場合、入力データへの参照は、デプロイメント・ジョブのペイロードのdata_asset
パラメーターでinput_data_references.location.href
href として指定する必要があります。 指定されたデータ資産は、ローカル・データ資産または接続済みデータ資産への参照です。 また、バッチ・デプロイメント・ジョブの出力データをリモート・データ・ソースに保持する必要がある場合、出力データへの参照は、デプロイメント・ジョブのペイロードで/v2/assets
href in/v2/assets
パラメーターとして指定する必要があります。output_data_reference.location.href
すべての入出力
参照は、バッチ・デプロイメントと同じスペース ID 内に存在しなければなりません。data_asset
バッチ・デプロイメント・ジョブの出力データをローカル資産としてデプロイメント・スペースに保持する必要がある場合は、
を指定する必要があります。 バッチ・デプロイメント・ジョブが正常に完了すると、指定された名前の資産がスペースに作成されます。output_data_reference.location.name
出力データには、リモート・データベース内のどこにデータ資産があるかに関する情報を含めることができます。 この状況では、バッチ出力を表に追加するか、表を切り捨てて出力データを更新するかを指定できます。
パラメーターを使用して、値output_data_references.location.write_mode
またはtruncate
を指定します。append
- 値として
を指定すると、表が切り捨てられ、バッチ出力データが挿入されます。truncate
- 値として
を指定すると、バッチ出力データがリモート・データベース表に追加されます。append
は、write_mode
パラメーターにのみ適用されます。output_data_references
は、リモート・データベース関連のデータ資産にのみ適用されます。 このパラメーターは、ローカル・データ資産または Cloud Object Storage ベースのデータ資産には適用されません。write_mode
- 値として
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}]}
親トピック: バッチ・デプロイメントの作成