REST APIs

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

delete

[Delete] でプロジェクト全体を削除したり、すべてのクエリをクリアしたり、特定の queryID を削除したりできます。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
}

export

ポータブル推論モデル (PIM) ファイルをエクスポートし、別のインスタンスで実行されている NeoPulse™ AI Studio または NeoPulse™ クエリ ランタイムにインポートできます。

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

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

Parameter Data Type Description
model_id String トレーニング済みプロジェクトのモデルの ID
model_iter Number エクスポートする必要があるモデルのイテレーション番号
output_path String エクスポートされたモデルを保存するディレクトリへのパス
*file_name String エキスポートされるモデル ファイルの名前(拡張子<.pim>を付けずに)
注: この値が指定されていない場合、デフォルトでモデル ID に設定されます

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

Parameter Data Type Description
success Boolean モデル エクスポート ジョブの状態
*error String エラー メッセージ
*code Number エラーがある場合のエラー コード

cURL の例:

$ curl -s -X POST http://localhost:46921/api/ai/export -H 'Content-Type: application/json' -d '{"model_id": "test_1", "model_iter": 1, "output_path": "/path/to/desired/directory", "file_name": "<Name_of_output_file>"}'

応答の例:

{
    "success":true
}

import

エキスポートされたトレーニング済モデルを NeoPulse™ AI Studio にインポートします。

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

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

Parameter Data Type Description
project_name このインポートされたプロジェクトの名前
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または project_name が含まれていない場合は、"Train" コレクション内のすべてのプロジェクトの配列が返されます。

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

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

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 キーの両方が指定されている場合 (要求されたドキュメントの状態がQUERY_COMPLETED場合)、この API を使用してResults用CSV を取得できます。

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 結果ファイルのドキュメント
* * クエリのデータベース ドキュメント
*error String エラーメッセージ
*code Number エラーコード

cURL の例 results for a 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 NeoPulse ®アプリケーションのステータス
*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

モデルのトレーニングを停止します。トレーニング中にアクティブにトレーニングされているモデルはトレーニング中に停止され、これ以上のイテレーションは行われません。キューでトレーニングを待機しているモデルは、トレーニングを開始されません。

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

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

Parameter Data Type Description
project_name String トレーニングを停止する必要があるプロジェクト名

リスポンス本文のパラメター

Parameter Data Type Description
success Boolean 停止結果
stopped_models Array<String> 正常に停止したモデル ID のリスト
*code String エラーコード
*error String エラーメッセージ

cURL の例

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

レスポンス例(成功)

{
    "success":true,
    "stopped_models": ["test_1", "test_2"]
}

レスポンス例(失敗)

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

top

指定されたプロジェクト内のモデルを指定されたメトリックで並べ替え、上位モデルのイテレーションを返します。

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

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

Parameter Data Type Description
project_name String 一覧表示するプロジェクト名
metric String 並べ替えメトリック
top_num Number 上位モデルの数

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

Parameter Data Type Description
top_models Array<Object> モデルの詳細を含むオブジェクトの配列(並べ替えられた順序で)
*error String エラーメッセージ
*code String エラーコード

cURL の例

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

レスポンスの例

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

cURL の例

curl -s -X POST http://localhost:46921/api/ai/top -H 'Content-Type: application/json' -d '{"project_name": "test_error", "metric": "acc", "top_num": 2}'

レスポンスの例

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

train

トレーニング ジョブを送信するために使用します。

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

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

Parameter Data Type Description
'project_name' String プロジェクト名
'file_path' String トレーニング ジョブの nml スクリプトへの絶対パス

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

Parameter Data Type Description
'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": "/path/to/nml/file"}'

レスポンス例(成功)

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

レスポンス例(失敗)

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

trim

指定したプロジェクトのmodel_idとmodel_iterが指定されたモデルを除く、全てのモデルのイテレーションを完全に削除します。そのイテレーションのモデル ファイルの名前をweights-000.model に変更します。model_iterを指定する場合は、完全なファイル名(例えばweights-097.model)またはイタレーション番号(例えば97)のいずれかを使用することができる。 Trim は、ルート ドライブのディスク領域が不足しないように、トレーニングの完了後に使用する必要があります。 トレーニング済みモデルのメトリックを見た後、パフォーマンス上位のモデルを除くすべてのモデルを削除しましょう。

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

Request Body Parameters:

Parameter Data Type Description
project_name String トリムするプロジェクト名
model_id String 選択されているモデルの ID
model_iter Number 保存するモデルのイテレーション番号

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

Parameter Data Type Description
success Boolean プロジェクトのトリミングが成功した場合は True それ以外の場合は False
*error String エラーメッセージ
*code Number エラーコード

cURL example:

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

レスポンス例

{
    "success": true
}

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