获取机器学习内存统计信息 API

编辑

获取机器学习内存统计信息 API编辑

返回有关机器学习如何使用内存的信息。

请求编辑

GET _ml/memory/_stats
GET _ml/memory/<node_id>/_stats

先决条件编辑

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

描述编辑

获取有关机器学习作业和训练模型如何在每个节点上使用内存的信息,包括 JVM 堆内和 JVM 外的本机内存。

路径参数编辑

<node_id>
(可选,字符串)要定位的集群中特定节点的名称。例如,nodeId1,nodeId2ml:true。有关节点选择选项,请参阅 节点规范

查询参数编辑

human
指定此查询参数以在响应中包含带单位的字段。否则,响应中仅返回 _in_bytes 大小。
master_timeout
(可选,时间单位)等待主节点的时间。如果在超时到期之前主节点不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永不超时。
timeout
(可选,时间单位)等待响应的时间。如果在超时到期之前未收到响应,则请求失败并返回错误。默认为 30s

响应正文编辑

_nodes

(对象)包含有关请求选择的节点数量的统计信息。

_nodes 的属性
failed
(整数)拒绝请求或未能响应的节点数。如果此值不是 0,则响应中包含拒绝或失败的原因。
successful
(整数)成功响应请求的节点数。
total
(整数)请求选择的节点总数。
cluster_name
(字符串)集群的名称。基于 cluster.name 设置。
nodes

(对象)包含请求选择的节点的统计信息。

nodes 的属性
<node_id>

(对象)包含节点的统计信息。

<node_id> 的属性
attributes
(对象)列出节点属性,例如 ml.machine_memoryml.max_open_jobs 设置。
ephemeral_id
(字符串)节点的临时 ID。
jvm

(对象)包含节点的 Java 虚拟机 (JVM) 统计信息。

jvm 的属性
heap_max
字节值)堆可使用的最大内存量。
heap_max_in_bytes
(整数)堆可使用的最大内存量(以字节为单位)。
java_inference
字节值)当前用于缓存推理模型的 Java 堆内存量。
java_inference_in_bytes
(整数)当前用于缓存推理模型的 Java 堆内存量(以字节为单位)。
java_inference_max
字节值)用于缓存推理模型的最大 Java 堆内存量。
java_inference_max_in_bytes
(整数)用于缓存推理模型的最大 Java 堆内存量(以字节为单位)。
mem

(对象)包含有关节点内存使用情况的统计信息。

mem 的属性
adjusted_total
字节值)如果已使用 es.total_memory_bytes 系统属性覆盖物理内存量,则此属性报告覆盖的值。否则,它报告与 total 相同的值。
adjusted_total_in_bytes
(整数)如果已使用 es.total_memory_bytes 系统属性覆盖物理内存量,则此属性报告以字节为单位的覆盖值。否则,它报告与 total_in_bytes 相同的值。
ml

(对象)包含有关节点上机器学习使用本机内存的统计信息。

ml 的属性
anomaly_detectors
字节值)为异常检测作业预留的本机内存量。
anomaly_detectors_in_bytes
(整数)为异常检测作业预留的本机内存量(以字节为单位)。
data_frame_analytics
字节值)为数据帧分析作业预留的本机内存量。
data_frame_analytics_in_bytes
(整数)为数据帧分析作业预留的本机内存量(以字节为单位)。
max
字节值)机器学习本机进程可以使用的最大本机内存量(与 JVM 堆分开)。
max_in_bytes
(整数)机器学习本机进程可以使用的最大本机内存量(与 JVM 堆分开)(以字节为单位)。
native_code_overhead
字节值)为加载机器学习本机代码共享库预留的本机内存量。
native_code_overhead_in_bytes
(整数)为加载机器学习本机代码共享库预留的本机内存量(以字节为单位)。
native_inference
字节值)为具有 PyTorch model_type 的训练模型预留的本机内存量。
native_inference_in_bytes
(整数)为具有 PyTorch model_type 的训练模型预留的本机内存量(以字节为单位)。
total
字节值)物理内存总量。
total_in_bytes
(整数)物理内存总量(以字节为单位)。
name
(字符串)节点的人类可读标识符。基于 节点名称设置
roles
(字符串数组)分配给节点的角色。请参阅 节点
transport_address
(字符串)接受传输 HTTP 连接的主机和端口。

示例编辑

response = client.ml.get_memory_stats(
  human: true
)
puts response
GET _ml/memory/_stats?human

这是一个可能的响应

{
  "_nodes": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "cluster_name": "my_cluster",
  "nodes": {
    "pQHNt5rXTTWNvUgOrdynKg": {
      "name": "node-0",
      "ephemeral_id": "ITZ6WGZnSqqeT_unfit2SQ",
      "transport_address": "127.0.0.1:9300",
      "attributes": {
        "ml.machine_memory": "68719476736",
        "ml.max_jvm_size": "536870912"
      },
      "roles": [
        "data",
        "data_cold",
        "data_content",
        "data_frozen",
        "data_hot",
        "data_warm",
        "ingest",
        "master",
        "ml",
        "remote_cluster_client",
        "transform"
      ],
      "mem": {
        "total": "64gb",
        "total_in_bytes": 68719476736,
        "adjusted_total": "64gb",
        "adjusted_total_in_bytes": 68719476736,
        "ml": {
          "max": "19.1gb",
          "max_in_bytes": 20615843020,
          "native_code_overhead": "0b",
          "native_code_overhead_in_bytes": 0,
          "anomaly_detectors": "0b",
          "anomaly_detectors_in_bytes": 0,
          "data_frame_analytics": "0b",
          "data_frame_analytics_in_bytes": 0,
          "native_inference": "0b",
          "native_inference_in_bytes": 0
        }
      },
      "jvm": {
        "heap_max": "512mb",
        "heap_max_in_bytes": 536870912,
        "java_inference_max": "204.7mb",
        "java_inference_max_in_bytes": 214748364,
        "java_inference": "0b",
        "java_inference_in_bytes": 0
      }
    }
  }
}