Add all ML commons API endpoints and responses

Signed-off-by: Naarcha-AWS <naarcha@amazon.com>
This commit is contained in:
Naarcha-AWS 2022-03-18 11:25:19 -05:00
parent 3b79db7383
commit 7dd37280ae
1 changed files with 493 additions and 10 deletions

View File

@ -91,8 +91,6 @@ For asynchronous responses, the API returns the task_id, which can be used to ge
You can retrieve information on your model using the model_id.
### Request
```json
GET /_plugins/_ml/models/<model-id>
```
@ -114,8 +112,6 @@ The API returns information on the model, the algorithm used, and the content fo
You can retrieve information about a task using the task_id.
### Request
```json
GET /_plugins/_ml/tasks/<task_id>
```
@ -140,7 +136,7 @@ The response includes information about the task.
## Predict
Should you trained a synchronous, ML commons can predict new data with your trained model either from indexed data or a data frame.
ML commons can predict new data with your trained model either from indexed data or a data frame.
```json
POST /_plugins/_ml/_predict/<algorithm_name>/<model_id>
@ -149,7 +145,7 @@ POST /_plugins/_ml/_predict/<algorithm_name>/<model_id>
### Request
```json
POST /_plugins/_ml/_predict/kmeans/eQlomX8Br-2Nu7fWjUu3
POST /_plugins/_ml/_predict/kmeans/<model-id>
{
"input_query": {
"_source": ["petal_length_in_cm", "petal_width_in_cm"],
@ -227,9 +223,473 @@ POST /_plugins/_ml/_predict/kmeans/eQlomX8Br-2Nu7fWjUu3
```
## Train and Predict
Use to train and then immediately predict against the same training data set. Can only be used with synchronous models and the kmeans algorithm.
### Example: Train and predict with Indexed data
```json
POST /_plugins/_ml/_train_predict/kmeans
{
"parameters": {
"centroids": 2,
"iterations": 10,
"distance_type": "COSINE"
},
"input_query": {
"query": {
"bool": {
"filter": [
{
"range": {
"k1": {
"gte": 0
}
}
}
]
}
},
"size": 10
},
"input_index": [
"test_data"
]
}
```
### Example: Train and predict with data directly
```json
POST /_plugins/_ml/_train_predict/kmeans
{
"parameters": {
"centroids": 2,
"iterations": 1,
"distance_type": "EUCLIDEAN"
},
"input_data": {
"column_metas": [
{
"name": "k1",
"column_type": "DOUBLE"
},
{
"name": "k2",
"column_type": "DOUBLE"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 1.00
},
{
"column_type": "DOUBLE",
"value": 2.00
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 1.00
},
{
"column_type": "DOUBLE",
"value": 4.00
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 1.00
},
{
"column_type": "DOUBLE",
"value": 0.00
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 10.00
},
{
"column_type": "DOUBLE",
"value": 2.00
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 10.00
},
{
"column_type": "DOUBLE",
"value": 4.00
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 10.00
},
{
"column_type": "DOUBLE",
"value": 0.00
}
]
}
]
}
}
```
### Response
**Response for index data**
```json
{
"status" : "COMPLETED",
"prediction_result" : {
"column_metas" : [
{
"name" : "ClusterID",
"column_type" : "INTEGER"
}
],
"rows" : [
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
},
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
},
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
},
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
},
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
},
{
"values" : [
{
"column_type" : "INTEGER",
"value" : 0
}
]
}
]
}
}
```
**Response for data input directly**
```json
{
"status" : "COMPLETED",
"prediction_result" : {
"column_metas" : [
{
"name" : "score",
"column_type" : "DOUBLE"
},
{
"name" : "anomaly_grade",
"column_type" : "DOUBLE"
},
{
"name" : "timestamp",
"column_type" : "LONG"
}
],
"rows" : [
{
"values" : [
{
"column_type" : "DOUBLE",
"value" : 0.0
},
{
"column_type" : "DOUBLE",
"value" : 0.0
},
{
"column_type" : "LONG",
"value" : 1404187200000
}
]
},
...
]
}
}
```
## Execute
Use the Execute API to run no-model-based algorithms. You do not need to train a model in order to receive results from your chosen algorithm.
```json
POST _plugins/_ml/_execute/<algorithm_name>
```
### Example: Execute sample calculator, supported "operation": max/min/sum
```json
POST _plugins/_ml/_execute/local_sample_calculator
{
"operation": "max",
"input_data": [1.0, 2.0, 3.0]
}
```
### Example: Execute anomaly localization
```json
POST /_plugins/_ml/_execute/anomaly_localization
{
"index_name": "rca-index",
"attribute_field_names": [
"attribute"
],
"aggregations": [
{
"sum": {
"sum": {
"field": "value"
}
}
}
],
"time_field_name": "timestamp",
"start_time": 1620630000000,
"end_time": 1621234800000,
"min_time_interval": 86400000,
"num_outputs": 2
}
```
### Response
**Sample calculator response**
```json
{
"sample_result" : 3.0
}
```
**Sample anomaly response**
```json
{
"results" : [
{
"name" : "sum",
"result" : {
"buckets" : [
{
"start_time" : 1620630000000,
"end_time" : 1620716400000,
"overall_aggregate_value" : 65.0
},
{
"start_time" : 1620716400000,
"end_time" : 1620802800000,
"overall_aggregate_value" : 75.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 1.0,
"base_value" : 2.0,
"new_value" : 3.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 1.0,
"base_value" : 3.0,
"new_value" : 4.0
}
]
},
{
"start_time" : 1620802800000,
"end_time" : 1620889200000,
"overall_aggregate_value" : 85.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 2.0,
"base_value" : 2.0,
"new_value" : 4.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 2.0,
"base_value" : 3.0,
"new_value" : 5.0
}
]
},
{
"start_time" : 1620889200000,
"end_time" : 1620975600000,
"overall_aggregate_value" : 95.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 3.0,
"base_value" : 2.0,
"new_value" : 5.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 3.0,
"base_value" : 3.0,
"new_value" : 6.0
}
]
},
{
"start_time" : 1620975600000,
"end_time" : 1621062000000,
"overall_aggregate_value" : 105.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 4.0,
"base_value" : 2.0,
"new_value" : 6.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 4.0,
"base_value" : 3.0,
"new_value" : 7.0
}
]
},
{
"start_time" : 1621062000000,
"end_time" : 1621148400000,
"overall_aggregate_value" : 115.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 5.0,
"base_value" : 2.0,
"new_value" : 7.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 5.0,
"base_value" : 3.0,
"new_value" : 8.0
}
]
},
{
"start_time" : 1621148400000,
"end_time" : 1621234800000,
"overall_aggregate_value" : 125.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 6.0,
"base_value" : 2.0,
"new_value" : 8.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 6.0,
"base_value" : 3.0,
"new_value" : 9.0
}
]
}
]
}
}
]
}
```
## Search model
Use this command to search models you're already created.
```json
POST /_plugins/_ml/models/_search
{query}
@ -248,7 +708,7 @@ POST /_plugins/_ml/models/_search
}
```
### Example 2: query models with algorithm "BATCh_RCF"
### Example 2: Query models with algorithm "BATCh_RCF"
```json
POST /_plugins/_ml/models/_search
@ -319,6 +779,8 @@ POST /_plugins/_ml/models/_search
## Delete task
Delete a task based on the task_id.
```json
DELETE /_plugins/_ml/tasks/{task_id}
```
@ -344,13 +806,15 @@ DELETE /_plugins/_ml/tasks/{task_id}
## Search task
Search tasks based on parameters indicated in the request body.
```json
GET /_plugins/_ml/tasks/_search
{query body}
```
### Example: search task which "function_name" is "KMEANS"
### Example: Search task which "function_name" is "KMEANS"
```json
GET /_plugins/_ml/tasks/_search
@ -431,17 +895,36 @@ GET /_plugins/_ml/tasks/_search
}
```
Stats
## Stats
Get statistics related to the number of tasks.
To receive all stats, use:
```json
GET /_plugins/_ml/stats
```
To receive stats for a specific node, use:
```json
GET /_plugins/_ml/<nodeId>/stats/
```
To receive starts for a specific node and return a specified stat, use:
```json
GET /_plugins/_ml/<nodeId>/stats/<stat>
```
To receive information on a specific stat from all nodes, use:
```json
GET /_plugins/_ml/stats/<stat>
```
### Example1: get all stats
### Example: Get all stats
```json
GET /_plugins/_ml/stats