REST APIs

NeoPulse™ クエリ ランタイムは、モデルのトレーニングとクエリを管理するために、マシンのポート 46921 で下記の REST API を公開します。

delete

Delete を使用すると、プロジェクト全体の削除、すべてのクエリのクリア、特定のクエリ ID の削除することができます。project_nameを提供すると、PIM はインスタンスから完全に削除されます。クエリを削除すると、データベースからクエリが削除され、結果を含む .csv ファイルがインスタンスから削除されます。

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

リクエスト本文パラメーター

Parameter Data Type Description
*project_name String 削除するプロジェクトの名前
*query_id String 削除されるクエリ ID
注: "all" - すべてのクエリを削除します

注: 少なくとも 1 つのパラメータが必要です。

レスポンス本文パラメーター

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

cURL 全てのプロジェクトを削除する例:

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

レスポンス例

{
    "success":true
}

cURL 例 ( query_idをクリアする):

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

レスポンス例

{
    "success":true
}

cURL 例 (クエリを全てクリアする):

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

レスポンス例

{
    "success": true
}

import

トレーニング済みで他の場所にエクスポートされたモデルを NeoPulse™ AI スタジオにインポートします。

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

リクエスト本文パラメーター:

Parameter Data Type Description
project_name String インポートされたプロジェクトの名前
file_path String インポートされる PIM ファイルへの絶対パス

レスポンス本文パラメーター:

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

cURL 例:

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

レスポンス例

{
    "success": true
}

list

Listは、送信されたトレーニング ジョブに関する AI コレクション データベースのクエリに使用されます。model_idを指定すると、そのモデルのドキュメントが "Models" コレクションから返されます。project_nameが指定されている場合は、そのプロジェクトに関連付けられているすべてのモデルのドキュメントの配列が返されます。要求にmodel_idが含まれていない場合、または "Train" コレクション内のすべてのプロジェクトの配列project_name返されます。

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

リクエスト本文パラメーター:

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

レスポンス本文パラメーター:

Parameter Data Type Description
*<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 ''

3つのプロジェクトがあることを仮定して

[
    {
        "_id": "test_error",
        "error": "Unable to compile",
        "model_list": [],
        "name": "test_error10",
        "num_models": 0,
        "num_trained": 0,
        "status": "ERROR",
        "uuid": "BJwe6pPVLN",
        "version": "3.0.0"
    },
    {
        "_id": "test",
        "model_list": [
            "test_1"
        ],
        "name": "test",
        "num_models": 1,
        "num_trained": 1,
        "status": "TRAINING_COMPLETED",
        "uuid": "SyVe6pDEU4",
        "version": "3.0.0"
    },
    {
        "_id": "test_import",
        "model_list": [
            "test_import_0"
        ],
        "name": "test_import",
        "num_models": 1,
        "num_trained": 1,
        "status": "IMPORTED_PROJECT",
        "uuid": "Skygga6v4UV",
        "version": "3.0.0"
    }
]

cURL 例 (project_nameをリスト):

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

テストプロジェクトが1つのモデルを有することを仮定して

{
    "test": [
        {
            "_id": "test_1",
            "acc": [
                0.4500000023841858,
                0.5599999964237213
            ],
            "auto": [
                {
                    "compile_9__0": "'categorical_crossentropy'"
                },
                {
                    "inp_size_e": 21862
                },
                {
                    "compile_8__0": "'adadelta'"
                },
                {
                    "2_0": [
                        {
                            "filter_length": 5
                        },
                        {
                            "pool_length": 7
                        },
                        {
                            "nb_filters_cn": 112
                        },
                        {
                            "bi_lstm_size": 105
                        },
                        {
                            "lstm_size": 86
                        }
                    ]
                },
                {
                    "embed_dimension": 54
                }
            ],
            "loss": [
                0.6946831297874451,
                0.6927492642402648
            ],
            "metric_list": [
                "val_loss",
                "val_acc",
                "loss",
                "acc"
            ],
            "num_iterations": 2,
            "project_name": "test",
            "status": "TRAINING_COMPLETED",
            "time_updated": "2019-02-27 20:06:15",
            "val_acc": [
                0.4848484857515855,
                0.5353535455886764
            ],
            "val_loss": [
                0.693558607438598,
                0.692483000683062
            ],
            "version": "3.0.0"
        }
    ]
}

cURL 例 (model_idをリスト):

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

レスポンス例

{
    "test_1": {
        "_id": "test_1",
        "acc": [
            0.4500000023841858,
            0.5599999964237213
        ],
        "auto": [
            {
                "compile_9__0": "'categorical_crossentropy'"
            },
            {
                "inp_size_e": 21862
            },
            {
                "compile_8__0": "'adadelta'"
            },
            {
                "2_0": [
                    {
                        "filter_length": 5
                    },
                    {
                        "pool_length": 7
                    },
                    {
                        "nb_filters_cn": 112
                    },
                    {
                        "bi_lstm_size": 105
                    },
                    {
                        "lstm_size": 86
                    }
                ]
            },
            {
                "embed_dimension": 54
            }
        ],
        "loss": [
            0.6946831297874451,
            0.6927492642402648
        ],
        "metric_list": [
            "val_loss",
            "val_acc",
            "loss",
            "acc"
        ],
        "num_iterations": 2,
        "project_name": "test",
        "status": "TRAINING_COMPLETED",
        "time_updated": "2019-02-27 20:06:15",
        "val_acc": [
            0.4848484857515855,
            0.5353535455886764
        ],
        "val_loss": [
            0.693558607438598,
            0.692483000683062
        ],
        "version": "3.0.0"
    }
}

query

トレーニングが完了したモデルのクエリ ジョブを送信するために使用します。

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

リクエスト本文パラメーター:

Parameter Data Type Description
model_id String トレーニング済みプロジェクトの特定のモデルのmodel_id
model_iter String model_idに関連付けられている特定のイテレーション番号のmodel_iter
csv String クエリへの入力を含むローカル CSV ファイルの絶対パス

レスポンス本文パラメーター:

Parameter Data Type Description
success Boolean クエリ ジョブの送信状態
query_id String このクエリ ジョブに対して生成された uuid
*error String エラーメッセージ
*code Number エラー コード

cURL 例:

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

レスポンス例

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

cURL 例:

$ curl -s -X POST http://localhost:46921/api/ai/query -H 'Content-Type: application/json' -d '{"model_id": "test_error","model_iter": "1", "csv": "/query.csv"}' | python -m json.tool

レスポンス例

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

results

LIST API に似ているが、resultsはトレーニング用ではなくクエリの送信を管理するためです。API にキーが指定されていない場合は、クエリ コレクション内のすべてのドキュメントの配列が返されます。特定のquery_idを指定した場合は、その id に関連付けられたドキュメントのみを返します。さらに、リクエストでquery_idと show キーの両方が指定されている場合は、resultsの CSV をこの API で取得できます (リクエストされたドキュメントのステータスがQUERY_COMPLETED場合)。

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

リクエスト本文パラメーター:

Parameter Data Type Description
*query_id String クエリ コレクション内のquery_id、ドキュメントを返します。
*show Boolean クエリの結果を返す

レスポンス本文パラメーター:

Parameter Data Type Description
*results String Rseultsファイルのドキュメント
* * クエリのデータベース ドキュメント
*error String エラーメッセージ
*code Number エラー コード

cURL 例 Resultの query_id:

$ curl -s -X POST http://localhost:46921/api/ai/results -H 'Content-Type: application/json' -d '{"query_id": "SkH1L9J4V"}' | python -m json.tool

レスポンス例

{
    "_id": "SkH1L9J4V",
    "input_file_path": "/absolute/path/to/query1.csv",
    "model_id": "test_1",
    "model_iter": "001",
    "status": "QUERY_COMPLETED",
    "time_updated": "2019-01-30 21:23:41",
    "version": "3.0.0"
}

クエリがエラーの結果の場合

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

レスポンス例

{
    "_id": "H15oS91EN",
    "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.",
    "input_file_path": "/absolute/path/to/query.csv",
    "model_id": "test_1",
    "model_iter": "001",
    "status": "ERROR",
    "time_updated": "2019-01-30 21:22:42",
    "version": "3.0.0"
}

showを使用してquery_idの結果を取得する cURL の例:

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

レスポンス例

{
    "_id": "SkH1L9J4V",
    "results": "0.4961142,0.50388587\n0.4962748,0.5037252\n0.49729934,0.50270057\n0.49726972,0.5027303\n0.49468577,0.5053143\n0.49725237,0.5027476\n0.49193063,0.50806934\n0.5004346,0.49956545\n0.5116662,0.4883339\n0.49684286,0.5031571\n0.50167054,0.49832943\n0.5005348,0.49946523\n0.4910176,0.5089825\n0.5018504,0.4981495\n0.49455598,0.505444\n0.50737834,0.49262166\n0.49599665,0.5040034\n0.4986556,0.5013443\n0.49964067,0.5003593\n0.4968565,0.50314355\n0.50329053,0.49670947\n0.50993,0.49006996\n0.5066415,0.49335846\n0.49716932,0.5028307\n0.4974647,0.5025354\n0.50237805,0.49762192\n0.50951856,0.4904814\n0.51113683,0.48886314\n0.4960988,0.50390124\n0.49836245,0.5016375\n0.49418578,0.5058142\n0.5093612,0.49063873\n0.49954656,0.5004534\n0.508187,0.491813\n0.49370107,0.5062989\n0.50705296,0.49294704\n0.50126415,0.49873585\n0.49884957,0.5011504\n0.5064257,0.49357435\n"
}

失敗した show が渡されたときのクエリの cURL 応答:

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

レスポンス例

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

status

この API は、NeoPulse ® アプリケーションのステータスを確認するために使用できます。アプリケーションが正常に機能するために必要なコンポーネントのいずれかがダウンしている場合は、情報メッセージを報告します。

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

リクエスト本文パラメーター:

Parameter Data Type Description

レスポンス本文パラメーター:

Parameter Data Type Description
status Boolean eoPulse®アプリケーションのステータス
*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."
}

visualize

この API を使用して、実行されたトレーニングのアーキテクチャを確認できます。この操作は、特定のプロジェクトのアーキテクチャのビジュアル化を開始するか、既存のビジュアル化をシャットダウンします。"project_name" を指定すると、プロジェクトのアーキテクチャのビジュアル化が開始され、有効なブール値 [true,false] を指定した "shutdown" パラメーターが指定されると、既存のビジュアル化セッションがシャットダウンされます。

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

リクエスト本文パラメーター:

Parameter Data Type Description
*project_name String 削除するプロジェクトの名前
*shutdown Boolean true - いずれかのビジュアライゼーション セッションをシャットダウンする必要がある場合
false - それ以外の場合

注: 少なくとも 1 つのパラメータが必要です。また、両方のパラメーターセットが 「shutdown」と共に設定されると、あいまいな要求であるため、エラーが発生します。

レスポンス本文パラメーター:

Parameter Data Type Description
success String ビジュアル化するプロジェクトのステータス
*info String タスクが完了したサクセスメッセージの情報
*error String エラーメッセージ
*code Number エラーコード

cURL 例(プロジェクトのビジュアル化):

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

レスポンス例

{
    "success": true,
    "info": "Successfully started to visualize on the port 6006 for the project: test"
}

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."
}