REST APIs

NeoPulse® Studioは、LocalHostのポート46921で次のREST APIを公開します。例が存在する場合、サンプルコマンドセグメントは概要のMNISTプロジェクト例をご覧ください。

delete

プロジェクトに対する単一クエリ、プロジェクトに対して行われたすべてのクエリ、またはプロジェクト自体を削除します。project_nameを指定すると、NeoPulse®Studioインスタンスからプロジェクトが完全に削除されます。 query_id(または"all")を指定すると、NeoPulse®StudioインスタンスからそのIDに該当するクエリ(または作成されたすべてのクエリ)の結果が削除されます。 project_nameまたはquery_idのいずれかが指定される必要があります。 このコマンドは、NeoPulse®Studioの現在のインスタンスでプロジェクトやクエリがこれ以上必要でない場合に用います。例)プロジェクトやクエリ不要時、他の場所にエクスポートされた場合等

Method Type Path
POST application/json /api/ai/delete

リクエストボディ:

Parameter Data Type 説明
project_name String 削除するプロジェクト名
query_id String 削除するクエリID
"all"-すべてのクエリを削除します
is_forceful Boolean trueに設定時は、現在のトレーニングプロジェクトも削除

レスポンスボディ:

Parameter Data Type 説明
success String プロジェクトまたはクエリの削除ステータス
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (MNISTプロジェクト全体の削除):

$ curl -s -X POST http://localhost:46921/api/ai/delete -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project"}' | json_pp

レスポンスの例:

{
    "success": true
}

cURLの例 (NeoPulse®Studioインスタンスでクエリをクリア):

$ curl -s -X POST http://localhost:46921/api/ai/delete -H 'Content-Type: application/json' -d '{"query_id": "ryfHIQ3XM"}' | json_pp

レスポンスの例:

{
    "success": true
}

cURLの例 (NeoPulse®Studioインスタンスのすべてのクエリをクリア):

$ curl -s -X POST http://localhost:46921/api/ai/delete -H 'Content-Type: application/json' -d '{"query_id": "all"}' | json_pp

レスポンスの例:

{
    "success": true
}

export

プロジェクト中の指定したAIモデルをPIM(Portable Injection Model)ファイルとしてエキスポートします。このコマンドは、学習したAIモデルを他のNeoPulse® Studio、またはNeoPulse® Runtimeに共有する場合に用います。

Method Type Path
POST application/json /api/ai/export

リクエストボディ:

Parameter Data Type 説明
model_id String エクスポートするモデルのID
model_iter Number エクスポートするモデルのiteration
output_path String エクスポートされたモデルを保存するディレクトリへの絶対パス
file_name String エクスポートされたモデルのファイル名(拡張子.pimを除く)
注意:この値が指定されていない場合、モデルIDがデフォルトに設定されます。

レスポンスボディ:

Parameter Data Type 説明
success Boolean モデルエクスポートのステータス
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (MNIST_Project_2モデルのイテレーション5番をエクスポート):

$ curl -s -X POST http://localhost:46921/api/ai/export -H 'Content-Type: application/json' -d '{"model_id": "MNIST_Project_2", "model_iter": 5, "output_path": "/absolute/path/to/directory", "file_name": "MNIST_Model"}' | json_pp

レスポンスの例:

{
    "success":true
}

import

他のNeoPulse®Studioにて学習されたAIモデル(PIMファイル形式)をインポートします。

Method Type Path
POST application/json /api/ai/import

リクエストボディ:

Parameter Data Type 説明
project_name String インポート中のプロジェクト名
file_path String インポートするPIMファイルへの絶対パス

レスポンスボディ:

Parameter Data Type 説明
success Boolean インポートのステータス
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (上記でエクスポートされたMNISTモデルをインポート):

$ curl -s -X POST http://localhost:46921/api/ai/import -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project_Imported", "file_path": "/absolute/path/to/MNIST_Model.pim"}' | json_pp

レスポンスの例:

{
    "success": true
}

list

特定のプロジェクト、すべてのプロジェクト、または特定のモデルに関する情報を取得します。project_nameを指定すると、そのプロジェクトに関連するすべてのモデルの配列が返されます。model_idを指定すると、そのモデルに対して使用可能なすべての情報を含む単一レコードが返されます。model_idまたはproject_nameが指定されない場合、すべてのプロジェクトの配列が返されます。このコマンドは、プロジェクトモデルに関連する特定の情報を取得する場合に用います。

Note: プロジェクト·モデルについて列挙された分野の一つが「Status」であり、次のいずれか返されます:

  • トレーニングのStatus: "WAITING_TO_TRAIN", "TRAINING", "COMPILING", "TRAINING_COMPLETED", "ERROR", "TRIMMED_PROJECT"

  • クエリのStatus: "WAITING_TO_QUERY", "QUERYING", "QUERY_COMPLETED", "ERROR"

Method Type Path
POST application/json /api/ai/list

リクエストボディ:

Parameter Data Type 説明
model_id String モデルのID
project_name String プロジェクト名

レスポンスボディ:

Parameter Data Type 説明
<name of the project> Object プロジェクトのデータベースドキュメント
<model ID> Object モデルのデータベースドキュメント
*error String エラーメッセージ
*code String エラーコード

cURLの例 (すべてのプロジェクトをリスト):

$ curl -s -X POST http://localhost:46921/api/ai/list -H 'Content-Type: application/json' -d '' | json_pp

レスポンスの例 (2つのプロジェクトがある場合):

[
    {
        "_id": "MNIST_Project",
        "model_list": [
            "MNIST_Project_1", "MNIST_Project_2", "MNIST_Project_3, MNIST_Project_4"
        ],
        "name": "MNIST_Project",
        "num_models": 4,
        "num_trained": 4,
        "status": "TRAINING_COMPLETED",
        "uuid": "SyVe6pDEU4",
        "version": "3.0.0"
    },
    {
        "_id": "MNIST_Project_Imported",
        "model_list": [
            "MNIST_Project_Imported_1"
        ],
        "name": "MNIST_Project_Imported",
        "num_models": 1,
        "num_trained": 1,
        "status": "IMPORTED_PROJECT",
        "uuid": "Skygga6v4UV",
        "version": "3.0.0"
    }
]

cURLの例 (インポートされたMNISTプロジェクトのみリスト):

$ curl -s -X POST http://localhost:46921/api/ai/list -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project_Imported"}' | json_pp

レスポンスの例 (インポートされたMNISTプロジェクトに1つのモデルがある場合):

{
   "MNIST_Project_Imported" : [
      {
         "loss" : [
            0.220290005207062
         ],
         "val_loss" : [
            0.216582909226418
         ],
         "auto" : [
            {
               "2_0" : [
                  "64",
                  "64"
               ]
            },
            {
               "0_0" : [
                  "16",
                  "16"
               ]
            },
            {
               "4_0" : [
                  "512",
                  "512"
               ]
            },
            {
               "compile_8__0" : [
                  "'adagrad'",
                  "'adagrad'"
               ]
            },
            {
               "7_0" : [
                  "2",
                  "2"
               ]
            },
            {
               "3_0" : [
                  "256",
                  "256"
               ]
            },
            {
               "5_0" : [
                  "512",
                  "512"
               ]
            },
            {
               "6_0" : [
                  "3",
                  "3"
               ]
            },
            {
               "1_0" : [
                  "64",
                  "64"
               ]
            },
            {
               "compile_9__0" : [
                  "'categorical_crossentropy'",
                  "'categorical_crossentropy'"
               ]
            }
         ],
         "accuracy" : [
            0
         ],
         "status" : "IMPORTED_MODEL",
          "project_name" : "MNIST_Project_Imported",
         "num_iterations" : 1,
         "time_updated" : "2021-07-05T01:06:34.583Z",
         "val_accuracy" : [
            0
         ],
         "_id" : "MNIST_Project_Imported_1",
         "metric_list" : [
            "loss",
            "accuracy",
            "val_loss",
            "val_accuracy"
         ],
         "version" : "3.2.0",
         "metric_order" : {
            "val_accuracy" : 1,
            "val_loss" : -1,
            "loss" : -1,
            "accuracy" : 1
         }
      }
   ]
}

cURLの例 (MNIST_Project_3のモデルだけをリスト):

$ curl -s -X POST http://localhost:46921/api/ai/list -H 'Content-Type: application/json' -d '{"model_id": "MNIST_Project_3"}' | json_pp

レスポンスの例:

{
   "MNIST_Project_3" : {
      "val_accuracy" : [
         0
      ],
      "time_updated" : "2021-07-05T01:06:34.583Z",
      "loss" : [
         0.220290005207062
      ],
      "val_loss" : [
         0.216582909226418
      ],
      "metric_list" : [
         "loss",
         "accuracy",
         "val_loss",
         "val_accuracy"
      ],
      "accuracy" : [
         0
      ],
      "project_name" : "MNIST_Project",
      "auto" : [
         {
            "2_0" : [
               "64",
               "64"
            ]
         },
         {
            "0_0" : [
               "16",
               "16"
            ]
         },
         {
            "4_0" : [
               "512",
               "512"
            ]
         },
         {
            "compile_8__0" : [
               "'adagrad'",
               "'adagrad'"
            ]
         },
         {
            "7_0" : [
               "2",
               "2"
            ]
         },
         {
            "3_0" : [
               "256",
               "256"
            ]
         },
         {
            "5_0" : [
               "512",
               "512"
            ]
         },
         {
            "6_0" : [
               "3",
               "3"
            ]
         },
         {
            "1_0" : [
               "64",
               "64"
            ]
         },
         {
            "compile_9__0" : [
               "'categorical_crossentropy'",
               "'categorical_crossentropy'"
            ]
         }
      ],
      "version" : "3.2.0",
      "num_iterations" : 1,
      "metric_order" : {
         "val_accuracy" : 1,
         "val_loss" : -1,
         "accuracy" : 1,
         "loss" : -1
      },
      "status" : "TRAINED_MODEL",
      "_id" : "MNIST_Project_3"
   }
}

query

CSVファイルとして提供された入力データに対する推論バッチクエリーを送信します。CSVの入力データは、AIモデル学習時のデータ形式と一致している必要があります。このコマンドは、学習されたAIモデルによる推論実施時に用います。クエリー要求が成功すると、APIの他の関数で使用するための一意のクエリーIDが返されます。

Method Type Path
POST application/json /api/ai/query

リクエストボディ:

Parameter Data Type 説明
model_id String クエリするAIモデルのID
model_iter String クエリするAIモデルのIteration番号
csv String 入力CSVファイルへの絶対パス

レスポンスボディ:

Parameter Data Type 説明
success Boolean クエリのステータス
query_id String クエリー要求に対して生成された一意のクエリーID
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (MNISTプロジェクトの最初のモデルに対するクエリーの成功):

$ curl -s -X POST http://localhost:46921/api/ai/query -H 'Content-Type: application/json' -d '{"model_id": "MNIST_Project_1","model_iter": "1", "csv": "/absolute/path/to/query.csv"}' | json_pp

レスポンスの例:

{
    "success": true,
    "query_id": "r1Y9WAe6d"
}

cURLの例 (存在しないMNISTモデルに対するクエリーの失敗):

$ curl -s -X POST http://localhost:46921/api/ai/query -H 'Content-Type: application/json' -d '{"model_id": "MNIST_Project_Imported_3","model_iter": "1", "csv": "/absolute/path/to/query.csv"}' | json_pp

レスポンスの例:

{
    "error": "Model or iteration of the model that is being queried is invalid.",
    "code": 43
}

results

送信されたクエリの結果を返します。また、リクエストボディにshowが指定されている場合は、クエリの出力を含む結果CSVを取得できます。このコマンドは、クエリ結果を取得する際に用います。

Method Type Path
POST application/json /api/ai/results

リクエストボディ:

Parameter Data Type 説明
query_id String クエリ送信時に返されたクエリーID
show Boolean trueの場合、クエリーの結果CSVを直接返します。

レスポンスボディ:

Parameter Data Type 説明
results String 結果ファイルのドキュメント
query_doc Object クエリーの情報を表示するクエリードキュメント
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (成功したMNISTモデルクエリー要求の結果):

$ curl -s -X POST http://localhost:46921/api/ai/results -H 'Content-Type: application/json' -d '{"query_id": "r1Y9WAe6d"}' | json_pp

レスポンスの例:

{
   "_id" : "r1Y9WAe6d",
   "time_updated" : "2021-07-05T18:38:08.535Z",
   "numGPUs" : 0,
   "status" : "QUERY_COMPLETED",
   "version" : "3.2.0",
   "input_file_path" : "/absolute/path/to/query.csv",
   "model_id" : "MNIST_Project_1",
   "model_iter" : "001"
}

cURLの例 (同じMNISTモデルに対する無効なクエリーの結果):

$ curl -s -X POST http://localhost:46921/api/ai/results -H 'Content-Type: application/json' -d '{"query_id": "H15oS91EN"}' | json_pp

レスポンスの例:

{
    "_id" : "H15oS91EN",
    "time_updated" : "2021-07-05T18:38:08.535Z",
    "numGPUs" : 0,
    "status": "ERROR",
    "error": "Error loading query CSV file. Make sure the number of columns are equal to the number of inputs and that they are in the same order used for training.",
    "version": "3.2.0"
    "input_file_path": "/absolute/path/to/invalid_query.csv",
    "model_id": "MNIST_Project_1",
    "model_iter": "001",
}

cURLの例 (成功したMNISTモデルクエリー要求でのshowの使用):

$ curl -s -X POST http://localhost:46921/api/ai/results -H 'Content-Type: application/json' -d '{"query_id": "r1Y9WAe6d", "show": true}' | json_pp

レスポンスの例 (クエリーに2つのイメージが含まれている場合):

{
    "results": "3.4281365e-07,1.3446745e-06,3.0817266e-06,0.00014759589,3.161655e-07,2.5955765e-06,1.1973499e-10,0.9998103,1.065643e-06,3.35143e-05\n0.0034306135,0.002199412,0.98243237,0.007670383,6.4863934e-07,0.0005358637,0.0003164454,3.653546e-06,0.0033768713,3.374851e-05\n","
    "_id" : "r1Y9WAe6d"
}

cURLの例 (MNISTモデルに対する無効なクエリー要求に対するshowの使用):

$ curl -s -X POST http://localhost:46921/api/ai/results -H 'Content-Type: application/json' -d '{"query_id": "H15oS91EN", "show": true}' | json_pp

レスポンスの例:

{
    "code" : 142,
    "error" : "Unable to show the results for queries that are either not complete or contains error."
}

status

NeoPulse® Studioアプリケーションの動作ステータスを確認します。アプリケーションが正常に動作していない場合、infoメッセージとともに報告されます。

Method Type Path
POST application/json /api/ai/status

注意: このコマンドにはリクエストボディがありません。

レスポンスボディ:

Parameter Data Type 説明
status Boolean NeoPulse® Studioアプリケーションのステータス
info String ユーザに通知する必要がある情報
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (正常に動作している場合):

$ curl -s -X POST http://localhost:46921/api/ai/status -H 'Content-Type:application/json' -d ''

レスポンスの例:

{
    "status": true,
    "info": ""
}

cURLの例 (障害ステータス):

$ curl -s -X POST http://localhost:46921/api/ai/status -H 'Content-Type:application/json' -d ''

レスポンスの例:

{
    "status": false,
    "info": "Some entities of NeoPulse® application is running. Please shutdown the NeoPulse® application with force flag and start it again."
}

cURLの例 (エラー):

$ curl -s -X POST http://localhost:46921/api/ai/status -H 'Content-Type:application/json' -d ''

レスポンスの例:

{
    "code": 380,
    "error": "Unknown error checking the status of NeoPulse® entities."
}

stop

AIモデルの学習中プロセスをすべて中止し、待機プロセスすべてを待機解除することで、プロジェクトの学習プロセスを中止します。 このコマンドは、特定のプロジェクトの学習を停止する場合に用います。

Method Type Path
POST application/json /api/ai/stop

リクエストボディ:

Parameter Data Type 説明
project_name String 学習を中止するプロジェクト名

レスポンスボディ:

Parameter Data Type 説明
success Boolean 結果
stopped_models Array<String> 停止されたモデルIDのリスト
*code String エラーコード
*error String エラーメッセージ

cURLの例 (MNISTプロジェクトのトレーニングの停止):

$ curl -s -X POST http://localhost:46921/api/ai/stop -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project"}'

レスポンスの例 (トレーニングプロセスが正常に停止した場合):

{
    "success": true,
    "stopped_models": ["MNIST_Project_1", "MNIST_Project_2", "MNIST_Project_3", "MNIST_Project_4"]
}

レスポンスの例 (MNISTプロジェクトがもはやトレーニング状態ではなかった場合):

{
    "code": 151,
    "error": "Cannot stop project that is neither training nor waiting to be trained."
}

top

指定された性能メトリックにおいて最高点数を持つプロジェクト内のAIモデルのiterationを返します。本コマンドは、学習されたモデルをプロジェクト内から最適なモデルを選定する場合に有用です。

Method Type Path
POST application/json /api/ai/top

リクエストボディ:

Parameter Data Type 説明
project_name String 上位モデルがフィルタリングされるプロジェクト名
metric String 指定性能メトリック
top_num Number 上位モデル数

レスポンスボディ:

Parameter Data Type 説明
top_models Array<Object> 上位モデルの詳細情報を含むオブジェクトの配列
success Boolean 上位モデルの取得要求成功可否
*error String エラーメッセージ
*code String エラーコード

cURLの例 (検証損失が最も大きいMNISTモデルの検索):

$ curl -s -X POST http://localhost:46921/api/ai/top -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project", "metric": "val_loss", "top_num": 1}'

レスポンスの例:

{
   "top_models" : {
      "is_training" : false,
      "model_list" : [
         {
            "print_format" : "model: MNIST_Project_4 iter: 2",
            "metric_value" : 0.216582909226418,
            "iteration_num" : 2,
            "model_id" : "MNIST_Project_4"
         }
      ]
   },
   "success" : true
}

レスポンスの例 (MNISTプロジェクトのトレーニング要求にエラーがあった場合):

{
    "code": 164,
    "error": "The project document is corrupt try training the project again."
}

train

モデルのトレーニングジョブを送信してプロジェクトを作成します。プロジェクトのトレーニングが正常に送信されると、project_idが生成され、返されます。 このコマンドは、[NML](NML-overview.md)ファイルの仕様に従って設計されたモデルを作成するときに用います。

Method Type Path
POST application/json /api/ai/train

リクエストボディ:

Parameter Data Type 説明
project_name String 作成するプロジェクト名
file_path String トレーニングプロセスの指定に使用されるNMLファイルへの絶対パス
is_overwrite Boolean trueに設定すると、同じ名前の既存プロジェクトが削除されます。

注意: プロジェクトをトレーニングする場合、関連するトレーニングデータは、すべてNMLスクリプトと同じディレクトリまたはサブディレクトリに編成する必要があります。NMLおよびCSVファイルのパス名は、NMLスクリプトが存在するディレクトリに対する相対的なものである必要があります。project_nameを指定しない場合は、NMLファイルの名前が代わりに使用されます。

注意: is_overwriteパラメータを設定しない限り、同じ名前のプロジェクトがすでに存在する場合、トレーニングは失敗します。

レスポンスボディ:

Parameter Data Type 説明
project_id Integer プロジェクトのID
project_name String ユーザーが指定したプロジェクト名
*error String エラーメッセージ
*code String エラーコード

cURLの例 (トレーニング要求を送信):

$ curl -s -X POST http://localhost:46921/api/ai/train -H 'Content-Type:application/json' -d '{"project_name": "test", "file_path": "/absolute/path/to/file.nml"}'

レスポンスの例 (project_nameが正常に学習された場合)

{
     "project_id":S1zg8XhQf,
     "project_name":"project_name"
}

レスポンスの例 (is_overwriteが必要な場合の失敗例):

{
    "code": 406,
    "error": "Can not use a project_name that already exists"
}

trim

指定されたiteration以外のプロジェクト内のすべてのAIモデルを削除します。トリミングを可能にするには、プロジェクトがトレーニングを完了しているか、ユーザによって停止されている必要があります。

Method Type Path
POST application/json /api/ai/trim

リクエストボディ:

Parameter Data Type 説明
project_name String トリミングするプロジェクト名
model_id String 保存するモデルのID
model_iter Number 保存するモデルiteration

レスポンスボディ:

Parameter Data Type 説明
success Boolean トリムが成功したかどうかのステータス
*error String エラーメッセージ
*code Number エラーコード

cURLの例:

$ curl -s -X POST http://localhost:46921/api/ai/trim -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project", "model_id": "MNIST_Project_4",  "model_iter": 2}'

レスポンスの例:

{
    "success": true
}

visualize

Tensorboardをブラウザで表示します。本コマンドが正しく動作するためには、指定されたプロジェクトが、少なくともトレーニングが開始済みの既存プロジェクトである必要があります。デフォルトでは、視覚化ツールはLocalHostのポート46925に表示されます。 本コマンドにproject_nameを指定すると、そのプロジェクトのモデル可視化が開始され、shutdownパラメータをTrueに設定すると、既存の可視化セッションがすべて終了します。

Method Type Path
POST application/json /api/ai/visualize

リクエストボディ:

Parameter Data Type 説明
project_name String 視覚化するプロジェクト名
shutdown Boolean Trueに設定すると、アクティブなプロジェクト可視化セッションがすべて終了します。

注意:: Project_nameを指定する場合は、shutdownをFalseに設定します。可視化セッションを終了する場合、Project_nameを指定せず、shutdownをTrueに設定します。

レスポンスボディ:

Parameter Data Type 説明
success String プロジェクトの可視化状況
info String 可視化タスクに関する情報メッセージ
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (MNISTプロジェクトのトレーニングの可視化):

$ curl -s -X POST http://localhost:46921/api/ai/visualize -H 'Content-Type: application/json' -d '{"project_name": "MNIST_Project"}'

レスポンスの例:

{
    "success": true,
    "info" : "Successfully started to visualize of the project on the port: 46925""
}

cURLの例 (進行中のすべての可視化セッションを停止する場合):

$ curl -s -X POST http://localhost:46921/api/ai/visualize -H 'Content-Type: application/json' -d '{"shutdown": true}'

レスポンスの例:

{
    "success": true,
    "info": "Successfully shutdown running visualization."
}

v4の新機能: Real-Time Query (RTQ)

今回のNeoPulse®リリースにより、バッチクエリーAPIに加え、リアルタイム推論モデルを展開(デプロイ)できるようになりました。この機能をサポートするために、5つの新しいAPIが追加され、ユーザは、リアルタイムクエリー(RTQ)モデルを展開、リストアップ、再展開、削除できるようになりました。

柔軟な展開を可能にするため、NeoPulse®は、ユーザーが与えられたモデルを配布するポートを指定することができます。 デフォルトでは、このポートは46926です。

realtime_query

展開されたモデルにリアルタイムで推論をクエリします。このAPIは、RTQ用にモデルを配置するときに設定される他のAPIとは別のポートにあることに注意してください。現在、RTQではtext/csvとapplication/zipの2つのデータ形式がサポートされています。

Method Type Path
POST text/csv OR application/zip /realtime_query

追加のリクエストヘッダー:

Parameter Data Type 説明
Rtq-Id String クエリー対象の展開モデルの一意のRTQID

レスポンスボディのフォーマット:

モデル出力に応じて、クエリー結果を含むCSVファイルまたはモデル出力ファイルを含むzipファイルの形式で応答します。応答ヘッダーのコンテンツタイプによって、応答ヘッダーのコンテンツタイプが指定されます。

cURLの例 (MNIST_ModelIDに配置されたMNISTモデルのRTQ ):

curl -s -X POST http://localhost:46926/realtime_query -H "Content-Type:application/zip" -H "Rtq-Id: MNIST_Model" --data-binary @/absolute/path/to/query.zip  > results.csv

注意: 本文で参照されるzipファイルには、"query.csv"という名前のCSVファイルが含まれている必要があります。このファイルがアーカイブに含まれる追加ファイルを参照する場合は、アーカイブ内の相対パスを使用して参照する必要があります。このCSVには、トレーニングに使用される入力ヘッダーと同じ正しい入力ヘッダーが必要です。MNISTモデルのクエリーに関するquery.csvファイル内のイメージカラムの例は、次のとおりです:

imagepath
images/image1.png
images/image2.png
...

次に、zipファイル"query.zip"には次の内容が必要です。

query.csv
images/image1.png
images/image2.png
...

注意: RTQの出力は、モデル自体の構造に依存します。ここで、MNISTモデルは常にCSV形式でRTQ結果を出力します。各列には、対応する行のイメージがその桁に属する確率が含まれます(つまり、列0にはイメージが0である確率が含まれます)。したがって、コマンドの最後に「>results.csv」を含めると、出力されたCSV結果がResponse本文に単純に保存されるのではなく、新しい文書に保存されます。

レスポンスの例 (results.csvのファイルの内容 ):

3.4281365e-07,1.3446745e-06,3.0817266e-06,0.00014759589,3.161655e-07,2.5955765e-06,1.1973499e-10,0.9998103,1.065643e-06,3.35143e-05
0.0034306135,0.002199412,0.98243237,0.007670383,6.4863934e-07,0.0005358637,0.0003164454,3.653546e-06,0.0033768713,3.374851e-05
...

rtq/deploy

ユーザが指定したポートにリアルタイムクエリーのモデルを展開します。ユーザがモデルを配置する特定のポートを指定することで、AIモデルを専用ポートに配置したり、複数のAIモデルを同じポートに配置したりできます。このコマンドは、リアルタイムクエリー用にモデルを設定する場合に用います。

Method Type Path
POST application/json /api/ai/rtq/deploy

リクエストボディ:

Parameter Data Type 説明
model_id String モデルID
model_iter Number モデルのIteration番号
rtq_id String モデルの一意のRTQID。 提供されない場合、自動的に生成されます。
port_number Number モデルのRTQに公開する有効なポート(デフォルト:46926)
description String モデルを説明するテキスト

レスポンスボディ:

Parameter Data Type 説明
info {usage: String, rtq_id: String} 一意のRTQIDおよびリアルタイムクエリーの作成方法を説明する手順。
success Boolean 展開が成功したかどうかを示します。
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (MNIST_Project_4モデルのIteration6を配布):

curl -s -X POST http://localhost:46921/api/ai/rtq/deploy -H 'Content-Type: application/json' -d '{"model_id": "MNIST_Project_4", "model_iter": 6, "rtq_id":"MNIST_Model", "description": "Current top MNIST Model"}' | json_pp

レスポンスの例:

{
   "info" : {
      "usage" : "This real time query can be accessed at localhost:46926/realtime_query via an HTTP POST request. The headers should contain the key \"Rtq-id\" with the value of the rtq_id you wish to query. The Content-Type can be one of either text/csv or application/zip. If the Content-Type is text/csv, the body should be the text of the CSV file. If the Content-Type is application/zip, the body should contain a zip file containing a file entitled query.csv that references the additional files contained within the zip file.",
      "rtq_id" : "MNIST_Model"
   },
   "success" : true
}

rtq/list

リアルタイムクエリー用に展開されたAIモデルに関する情報を取得します。リストAPIが特定のrtq_idを渡さない場合、代わりにRTQ用に配置された全AIモデルのリストが返されます。このコマンドは、RTQID、説明、ポート番号など、RTQモデルに関する情報を取得する場合に用います。

Method Type Path
POST application/json /api/ai/rtq/list

リクエストボディ:

Parameter Data Type 説明
rtq_id String 展開されたモデルに属する一意のRTQID

レスポンスボディ:

Parameter Data Type 説明
success Boolean リスト要求の成功を示します。
info List of RTQ documents RTQモデルに関する情報を表示します。
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (すべての展開済みモデルに関する情報をリスト):

curl -s -X POST http://localhost:46921/api/ai/rtq/list -H 'Content-Type: application/json' -d '' | json_pp

レスポンスの例 (RTQ用に2つのMNISTモデルが配置されている場合):

{
    "success": true,
    "info": [
         {
             "status" : 2,
             "model_id" : "MNIST_Project_4",
             "description" : "Current top MNIST Model",
             "model_iter" : 6,
             "lastModified" : "2021-07-06T16:15:53.517Z",
             "rtq_id" : "MNIST_Model",
             "version" : "1",
             "port_num" : "46926",
             "_id" : "60e481a3157448088d2f8712"
          },
          {
             "status" : 2,
             "model_id" : "MNIST_Project_Imported_1",
             "description" : "Imported MNIST Model",
             "model_iter" : 1,
             "lastModified" : "2021-07-06T16:15:53.517Z",
             "rtq_id" : "Imported_MNIST_Model",
             "version" : "1",
             "port_num" : "46926",
             "_id" : "60e481a3157448088d2f8713"
          }
     ]
}

rtq/redeploy

すでに展開されているRTQモデルを再展開します。本APIを使用することで、ユーザは特定のrtq_idに配置されたモデルを別のモデルに置き換えることができます。本コマンドは、新しいAIモデルを活用するために既存のアプリケーションを変更することなくAIモデルをアップデートできるため、実稼動中に配置されたリアルタイムクエリーモデルに有用です。

Parameters:

Method Type Path
POST application/json /api/ai/rtq/redeploy

リクエストボディ:

Parameter Data Type 説明
rtq_id String 新しいモデルが古いモデルを置き換える一意のRTQID
model_id String 展開する新しいモデルのID
model_iter Number 展開する新しいモデルのイテレーション
description String 参考のための新しいモデルを説明するテキスト

レスポンスボディ:

Parameter Data Type 説明
success Boolean 再展開要求が成功したことを示します。
info {usage: String} リアルタイムクエリーの作成方法について説明します。
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (RTQID"MNIST_Model"のプロジェクトとは異なるMNISTモデルを再配置する場合):

curl -s -X POST http://localhost:46921/api/ai/rtq/redeploy -H 'Content-Type: application/json' -d '{"rtq_id":"MNIST_Model", "model_id":"MNIST_Project_2", "model_iter": 5}' | json_pp

レスポンスの例:

{
   "success" : true,
   "info" : {
      "usage" : "This real time query can be accessed at localhost:46926/realtime_query via an HTTP POST request. The headers should contain the key \"Rtq-id\" with the value of the rtq_id you wish to query. The Content-Type can be one of either text/csv or application/zip. If the Content-Type is text/csv, the body should be the text of the CSV file. If the Content-Type is application/zip, the body should contain a zip file containing a file entitled query.csv that references the additional files contained within the zip file."
   }
}

rtq/remove

リアルタイムクエリー用AIモデルの展開先での動作を停止します。

Parameters:

Method Type Path
POST application/json /api/ai/rtq/remove

リクエストボディ:

Parameter Data Type 説明
rtq_id String 削除する展開モデルの一意のRTQID

レスポンスボディ:

Parameter Data Type 説明
success Boolean Indicates success of the remove request
info String Confirmation that the model has been removed
*error String エラーメッセージ
*code Number エラーコード

cURLの例 (RTQID"MNIST_Model"の削除):

curl -s -X POST http://localhost:46921/api/ai/rtq/remove -H 'Content-Type: application/json' -d '{"rtq_id":"MNIST_Model"}' | json_pp

レスポンスの例:

{
    "success": true,
    "info": "Successfully removed the RTQ with id: MNIST_Model"
}