| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | [role="xpack"][testenv="basic"][[get-inference-stats]]= Get trained model statistics API[subs="attributes"]++++<titleabbrev>Get trained model stats</titleabbrev>++++Retrieves usage information for trained models.experimental[][[ml-get-inference-stats-request]]== {api-request-title}`GET _ml/inference/_stats` +`GET _ml/inference/_all/_stats` +`GET _ml/inference/<model_id>/_stats` +`GET _ml/inference/<model_id>,<model_id_2>/_stats` +`GET _ml/inference/<model_id_pattern*>,<model_id_2>/_stats`[[ml-get-inference-stats-prereq]]== {api-prereq-title}If the {es} {security-features} are enabled, you must have the following privileges:* cluster: `monitor_ml`For more information, see <<security-privileges>> and {ml-docs-setup-privileges}.[[ml-get-inference-stats-desc]]== {api-description-title}You can get usage information for multiple trained models in a single API request by using a comma-separated list of model IDs or a wildcard expression.[[ml-get-inference-stats-path-params]]== {api-path-parms-title}`<model_id>`::(Optional, string) include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id][[ml-get-inference-stats-query-params]]== {api-query-parms-title}`allow_no_match`::(Optional, boolean) include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=allow-no-match-models]`from`::(Optional, integer) include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=from-models]`size`::(Optional, integer) include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=size-models][role="child_attributes"][[ml-get-inference-stats-results]]== {api-response-body-title}`count`::(integer)The total number of trained model statistics that matched the requested ID patterns. Could be higher than the number of items in the `trained_model_stats` array as the size of the array is restricted by the supplied `size` parameter.`trained_model_stats`::(array)An array of trained model statistics, which are sorted by the `model_id` value in ascending order.+.Properties of trained model stats[%collapsible%open]====`model_id`:::(string)include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id]`pipeline_count`:::(integer)The number of ingest pipelines that currently refer to the model.`inference_stats`:::(object)A collection of inference stats fields.+.Properties of inference stats[%collapsible%open]=====`missing_all_fields_count`:::(integer)The number of inference calls where all the training features for the modelwere missing.`inference_count`:::(integer)The total number of times the model has been called for inference.This is across all inference contexts, including all pipelines.`cache_miss_count`:::(integer)The number of times the model was loaded for inference and was not retrieved from the cache. If this number is close to the `inference_count`, then the cache is not being appropriately used. This can be solved by increasing the cache size or its time-to-live (TTL). See <<general-ml-settings>> for the appropriate settings.`failure_count`:::(integer)The number of failures when using the model for inference.`timestamp`:::(<<time-units,time units>>)The time when the statistics were last updated.=====`ingest`:::(object)A collection of ingest stats for the model across all nodes. The values aresummations of the individual node statistics. The format matches the `ingest`section in <<cluster-nodes-stats>>.====[[ml-get-inference-stats-response-codes]]== {api-response-codes-title}`404` (Missing resources)::  If `allow_no_match` is `false`, this code indicates that there are no  resources that match the request or only partial matches for the request.[[ml-get-inference-stats-example]]== {api-examples-title}The following example gets usage information for all the trained models:[source,console]--------------------------------------------------GET _ml/inference/_stats--------------------------------------------------// TEST[skip:TBD]The API returns the following results:[source,console-result]----{  "count": 2,  "trained_model_stats": [    {      "model_id": "flight-delay-prediction-1574775339910",      "pipeline_count": 0,      "inference_stats": {        "failure_count": 0,        "inference_count": 4,        "cache_miss_count": 3,        "missing_all_fields_count": 0,        "timestamp": 1592399986979      }    },    {      "model_id": "regression-job-one-1574775307356",      "pipeline_count": 1,      "inference_stats": {        "failure_count": 0,        "inference_count": 178,        "cache_miss_count": 3,        "missing_all_fields_count": 0,        "timestamp": 1592399986979      },      "ingest": {        "total": {          "count": 178,          "time_in_millis": 8,          "current": 0,          "failed": 0        },        "pipelines": {          "flight-delay": {            "count": 178,            "time_in_millis": 8,            "current": 0,            "failed": 0,            "processors": [              {                "inference": {                  "type": "inference",                  "stats": {                    "count": 178,                    "time_in_millis": 7,                    "current": 0,                    "failed": 0                  }                }              }            ]          }        }      }    }  ]}----// NOTCONSOLE
 |