获取训练模型统计信息 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
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
                  }
                }
              }
            ]
          }
        }
      }
    }
  ]
}