Retrain Data Upload APIの仕様

Rest APIを使用して、Prediction Oneも予測モデルのアップデート(最新データによるモデルの再学習)ができます。以下の一連のAPIによって実行します。

  1. Retrain Data Upload API:データアップロードし、再学習を実行
  2. Retrain Status Check API:再学習の状態確認と、学習後の結果ファイルダウンロードURLの取得
  3. Retrain Model Switch API:API作成済のモデルを再学習したモデルに切り替え

Retrain Data Upload API

再学習用のデータをアップロードするURLを取得します。 ファイルアップロードが完了すると自動で再学習が実行されます。

URL

https://developer-api.predictionone.sony.biz/v1/external/retrain_jobs/upload_url

HTTPメソッドは、GETです。

Request

name 説明               
x-api-key API Key。モデルごとに1つ割り当てられる。
path parameter

ありません。

query parameter
name 説明               
filename アップロードするファイル名
body

ありません。

Response

body

以下のフォーマットです。

{
    "retrain_job_id": str,
	"upload_url": str
}
error message
code error message reason
4001000204 PREDA_EXTERNAL_BAD_REQUEST invalid_api_key. APIキーが存在しない
4001000204 PREDA_EXTERNAL_BAD_REQUEST Inactive_credential. APIキーが間違っている
4001000204 PREDA_EXTERNAL_BAD_REQUEST Not_found_credential. APIキーが間違っている
4001000204 PREDA_EXTERNAL_BAD_REQUEST This user may be deleted. ユーザー情報が削除されている可能性がある
4001000204 PREDA_EXTERNAL_BAD_REQUEST This model may be deleted. モデルが削除されている可能性がある
4001000204 PREDA_EXTERNAL_BAD_REQUEST This job may be deleted. ジョブが削除されている可能性がある
5001000201 PREDA_EXTERNAL_INTERNAL_SERVER_ERROR Not found configuration_file. 設定ファイルが削除されている可能性がある

実行例 1

外部 APIのpythonによる実行例が以下となります。

サンプルデータの「モデル更新_プレミアムサービス購入.csv」で作成したモデルに対して、API作成を行った状態を前提としています。 再学習データとして「モデル更新_最新_プレミアムサービス購入.csv」を利用して、Developer APIを使用して再学習しています。

import requests
import tempfile
import zipfile
import subprocess

api_url = 'https://developer-api.predictionone.sony.biz/v1/external/retrain_jobs/upload_url'
api_key = 'YOUR_API_KEY'

headers = {'x-api-key': api_key}


# 学習ファイルのみの場合​
retrain_data_file_path = 'モデル更新_最新_プレミアムサービス購入.csv'
retrain_data_file_name = 'モデル更新_最新_プレミアムサービス購入.csv'

# request
params = {'filename': retrain_data_file_name}
response = requests.get(api_url, params=params, headers=headers)
response_json = response.json()
retrain_job_id = response_json['retrain_job_id']
upload_url = response_json['upload_url']

# upload_file
cmd = [
  'curl',
  '-X',
  'PUT',
  '--upload-file',
  retrain_data_file_path,
  upload_url
]
ret = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)


# 学習ファイルと評価ファイルを使用する場合
retrain_zip_file_name = 'モデル更新_プレミアムサービス購入.zip'
retrain_data_file_name = 'モデル更新_最新_プレミアムサービス購入.csv'
retrain_data_file_path = 'モデル更新_最新_プレミアムサービス購入.csv'
retrain_eval_data_file_name = 'モデル更新_最新_プレミアムサービス購入(評価用).csv'
retrain_eval_data_file_path = 'モデル更新_最新_プレミアムサービス購入(評価用).csv'
"""
dir_name
  |   |--train_src
  |   |   |--train_data.csv
  |   |--eval_src
  |   |   |--eval_data.csv
"""
with tempfile.TemporaryDirectory() as temp:
  zip_file_path = f'{temp}/{retrain_zip_file_name}'
	with zipfile.ZipFile(zip_file_path, 'w', compression=zipfile.ZIP_DEFLATED) as zf:
		zf.write(retrain_data_file_path, arcname=f'train_src/{retrain_data_file_name}')
		zf.write(retrain_eval_data_file_path, arcname=f'eval_src/{retrain_eval_data_file_name}')

  # request
  params = {'filename': retrain_zip_file_name}
  response = requests.get(api_url, params=params, headers=headers)
  response_json = response.json()
  retrain_job_id = response_json['retrain_job_id']
  upload_url = response_json['upload_url']

  # upload_file
  cmd = [
    'curl',
    '-X',
    'PUT',
    '--upload-file',
    zip_file_path,
    upload_url
  ]
  ret = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

実行例 2

外部 APIのコマンドプロンプトからcurlコマンドによる実行例が以下となります。

サンプルデータの「モデル更新_プレミアムサービス購入.csv」で作成したモデルに対して、API作成を行った状態を前提としています。 再学習データとして「モデル更新_最新_プレミアムサービス購入.csv」を利用して、Developer APIを使用して再学習しています。

1. コマンドプロンプトを立ち上げる

2. 表示をUTF-8に変更
$ chcp 65001

3. ファイル名を記載したファイルをUTF-8で保存(param.txtとする)

4. リクエストする
$ curl -o "response.json" -H "x-api-key:{画面から取得したクレデンシャル}" -X GET -G https://developer-api.predictionone.sony.biz/v1/external/retrain_jobs/upload_url --data-urlencode filename@"{3.のファイルのフルパス}"
ex) $ curl -o "response.json" -H "x-api-key:xxxx-xxx-xxx-xxxx" -X GET -G https://developer-api.predictionone.sony.biz/v1/external/retrain_jobs/upload_url --data-urlencode filename@param.txt

5. response.jsonを確認しretrain_job_idとupload_urlを取得

6. ファイルをアップロード
$ curl -X PUT --upload-file {再学習用データセットファイルパス} {5で取得したupload_url}