获取已训练模型统计 API

编辑

检索已训练模型的使用信息。

请求

编辑

GET _ml/trained_models/_stats

GET _ml/trained_models/_all/_stats

GET _ml/trained_models/<model_id_or_deployment_id>/_stats

GET _ml/trained_models/<model_id_or_deployment_id>,<model_id_2_or_deployment_id_2>/_stats

GET _ml/trained_models/<model_id_pattern*_or_deployment_id_pattern*>,<model_id_2_or_deployment_id_2>/_stats

先决条件

编辑

需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。

描述

编辑

您可以通过使用逗号分隔的模型 ID、部署 ID 或通配符表达式列表,在单个 API 请求中获取多个已训练模型或已训练模型部署的使用信息。

路径参数

编辑
<model_id_or_deployment_id>
(可选,字符串) 模型或部署的唯一标识符。如果一个模型有多个部署,并且其中一个部署的 ID 与模型 ID 匹配,则模型 ID 优先;结果将返回该模型的所有部署。

查询参数

编辑
allow_no_match

(可选,布尔值) 指定当请求发生以下情况时该怎么做

  • 包含通配符表达式,并且没有匹配的模型。
  • 包含 _all 字符串或没有标识符,并且没有匹配项。
  • 包含通配符表达式,并且只有部分匹配项。

默认值为 true,表示当没有匹配项时返回一个空数组,当有部分匹配项时返回结果的子集。如果此参数为 false,则当没有匹配项或只有部分匹配项时,请求会返回 404 状态码。

from
(可选,整数) 跳过指定数量的模型。默认值为 0
size
(可选,整数) 指定要获取的最大模型数量。默认值为 100

响应体

编辑
count
(整数) 与请求的 ID 模式匹配的已训练模型统计总数。可能高于 trained_model_stats 数组中的项数,因为数组的大小受提供的 size 参数限制。
trained_model_stats

(数组) 已训练模型统计的数组,按 model_id 值升序排序。

已训练模型统计的属性
deployment_stats

(列表) 如果提供的 model_id 值之一已部署,则为部署统计的集合

部署统计的属性
allocation_status

(对象) 给定部署配置的详细分配状态。

分配统计的属性
allocation_count
(整数) 当前模型分配到的节点数。
cache_size
(字节值) 模型每个节点(在 JVM 堆之外的内存中)的推断缓存大小。
state

(字符串) 与节点相关的详细分配状态。

  • starting: 正在尝试分配,但当前没有节点分配了该模型。
  • started: 至少有一个节点分配了该模型。
  • fully_allocated: 部署已完全分配并满足 target_allocation_count
target_allocation_count
(整数) 模型分配所需的节点数。
deployment_id
模型部署的唯一标识符。
error_count
(整数) 部署中所有节点的 error_count 之和。
inference_count
(整数) 部署中所有节点的 inference_count 之和。
model_id
(字符串) 已训练模型的唯一标识符。
nodes

(对象数组) 当前已分配模型的每个节点的部署统计信息。

节点统计的属性
average_inference_time_ms
(双精度) 在此节点上完成每次推断调用所用的平均时间。平均值是在部署的生命周期内计算的。
average_inference_time_ms_excluding_cache_hits
(双精度) 在已训练模型上执行推断的平均时间,不包括响应来自缓存的情况。缓存的推断调用返回速度非常快,因为未评估模型,通过排除缓存命中,该值可以准确衡量评估模型的平均时间。
average_inference_time_ms_last_minute
(双精度) 在过去一分钟内,在此节点上完成每次推断调用所用的平均时间。
error_count
(整数) 评估已训练模型时发生的错误数。
inference_cache_hit_count
(整数) 针对此模型在此节点上进行的且从推断缓存提供服务的推断调用总数。
inference_cache_hit_count_last_minute
(整数) 在过去一分钟内,针对此模型在此节点上进行的且从推断缓存提供服务的推断调用次数。
inference_count
(整数) 针对此模型在此节点上进行的推断调用总数。
last_access
(长整型) 此节点上模型最后一次推断调用的时间戳(以纪元为单位)。
node

(对象) 与节点相关的信息。

节点的属性
attributes
(对象) 列出节点属性,例如 ml.machine_memoryml.max_open_jobs 设置。
ephemeral_id
(字符串) 节点的临时 ID。
id
(字符串) 节点的唯一标识符。
name
(字符串) 节点名称。
transport_address
(字符串) 接受传输 HTTP 连接的主机和端口。
number_of_allocations
(整数) 分配给此节点的分配数。
number_of_pending_requests
(整数) 排队等待处理的推断请求数。
peak_throughput_per_minute
(整数) 在 1 分钟内处理的请求峰值数。
routing_state

(对象) 此分配的当前路由状态和当前路由状态的原因。

routing_state 的属性
reason
(字符串) 当前状态的原因。通常仅在 routing_statefailed 时填充。
routing_state
(字符串) 当前路由状态。
  • starting: 该模型正在尝试在此节点上分配,尚未接受推断调用。
  • started: 该模型已分配并准备好接受推断请求。
  • stopping: 该模型正在从此节点取消分配。
  • stopped: 该模型已从此节点完全取消分配。
  • failed: 分配尝试失败,有关潜在原因,请参阅 reason 字段。
rejected_execution_count
(整数) 由于队列已满而未处理的推断请求数。
start_time
(长整型) 分配开始时的时间戳(以纪元为单位)。
threads_per_allocation
(整数) 推断期间每个分配的线程数。此值受节点上硬件线程数的限制;因此,它可能与启动已训练模型部署 API 中的 threads_per_allocation 值不同。
timeout_count
(整数) 在处理之前超时的推断请求数。
throughput_last_minute
(整数) 在过去 1 分钟内处理的请求数。
number_of_allocations
(整数) 已训练模型部署的请求分配数。
peak_throughput_per_minute
(整数) 部署中所有节点在 1 分钟内处理的请求峰值数。它是作为每个节点的 peak_throughput_per_minute 值之和计算的。
priority
(字符串) 部署优先级。
rejected_execution_count
(整数) 部署中所有节点的 rejected_execution_count 之和。如果推断队列已满,则各个节点将拒绝推断请求。队列大小由启动已训练模型部署 API 中的 queue_capacity 设置控制。
reason
(字符串) 当前部署状态的原因。通常仅在模型未部署到节点时填充。
start_time
(长整型) 部署开始时的时间戳(以纪元为单位)。
state

(字符串) 部署的总体状态。值可能是

  • starting: 部署最近启动,但由于模型未分配到任何节点,因此尚不可用。
  • started: 部署可用,因为至少有一个节点分配了该模型。
  • stopping: 部署正在准备停止并从相关节点取消分配该模型。
threads_per_allocation
(整数) 推断过程使用的每个分配的线程数。
timeout_count
(整数) 部署中所有节点的 timeout_count 之和。
queue_capacity
(整数) 在拒绝新请求之前可以排队的推断请求数。
inference_stats

(对象) 推断统计字段的集合。

推断统计的属性
missing_all_fields_count
(整数) 模型的所有训练特征都缺失的推断调用次数。
inference_count
(整数) 模型被调用用于推断的总次数。这适用于所有推断上下文,包括所有管道。
cache_miss_count
(整数) 加载模型进行推断且未从缓存中检索模型的次数。如果此数字接近 inference_count,则说明未正确使用缓存。这可以通过增加缓存大小或其生存时间 (TTL) 来解决。有关相应的设置,请参阅通用机器学习设置
failure_count
(整数) 使用模型进行推断时发生的故障次数。
timestamp
(时间单位) 最近一次更新统计信息的时间。
ingest
(对象) 跨所有节点的模型摄取统计信息集合。这些值是各个节点统计信息的总和。格式与节点统计中的 ingest 部分匹配。
model_id
(字符串) 已训练模型的唯一标识符。
model_size_stats

(对象) 模型大小统计信息字段的集合。

模型大小统计信息的属性
model_size_bytes
(整数) 模型的大小,以字节为单位。
required_native_memory_bytes
(整数) 加载模型所需的内存量,以字节为单位。
pipeline_count
(整数) 当前引用该模型的摄取管道的数量。

响应代码

编辑
404 (缺少资源)
如果 allow_no_matchfalse,则此代码表示没有与请求匹配的资源,或者只有部分资源与请求匹配。

示例

编辑

以下示例获取所有已训练模型的使用信息

resp = client.ml.get_trained_models_stats()
print(resp)
response = client.ml.get_trained_models_stats
puts response
const response = await client.ml.getTrainedModelsStats();
console.log(response);
GET _ml/trained_models/_stats

API 返回以下结果

{
  "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
                  }
                }
              }
            ]
          }
        }
      }
    }
  ]
}