机器学习API
edit机器学习API
edit您可以使用以下API来检索与Elastic Stack机器学习功能相关的信息:
以下API在您升级时非常有用:
另请参阅 机器学习异常检测API, 机器学习数据框分析API, 和 机器学习训练模型API.
获取机器学习信息 API
edit返回机器学习使用的默认值和限制。
请求
editGET _ml/info
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit此端点旨在供需要完全理解机器学习配置的用户界面使用,其中某些选项未指定,这意味着应使用默认值。此端点可用于查找这些默认值。它还提供了有关当前集群配置中可以运行的机器学习作业最大大小的信息。
示例
edit该端点不接受任何参数:
GET _ml/info
这是一个可能的响应:
{
"defaults" : {
"anomaly_detectors" : {
"categorization_analyzer" : {
"char_filter" : [
"first_line_with_letters"
],
"tokenizer" : "ml_standard",
"filter" : [
{
"type" : "stop",
"stopwords" : [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun",
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
"GMT",
"UTC"
]
},
{
"type": "limit",
"max_token_count": "100"
}
]
},
"model_memory_limit" : "1gb",
"categorization_examples_limit" : 4,
"model_snapshot_retention_days" : 10,
"daily_model_snapshot_retention_after_days" : 1
},
"datafeeds" : {
"scroll_size" : 1000
}
},
"upgrade_mode": false,
"native_code" : {
"version": "7.0.0",
"build_hash": "99a07c016d5a73"
},
"limits" : {
"effective_max_model_memory_limit": "28961mb",
"total_ml_memory": "86883mb",
"total_ml_processors": 16,
"max_single_ml_node_processors": 16
}
}
获取机器学习内存统计信息API
edit返回有关机器学习如何使用内存的信息。
请求
editGET _ml/memory/_stats
GET _ml/memory/
先决条件
edit需要 monitor_ml 集群权限。此权限包含在 machine_learning_user 内置角色中。
描述
edit获取有关机器学习作业和训练模型如何在每个节点上使用内存的信息,包括在JVM堆内和JVM外的原生使用情况。
查询参数
edit响应体
edit-
_nodes -
(对象) 包含关于请求选择的节点数量的统计信息。
Properties of
_nodes-
failed -
(整数)
拒绝请求或未能响应的节点数量。如果此值不为
0,响应中会包含拒绝或失败的原因。 -
successful - (整数) 成功响应请求的节点数量。
-
total - (整数) 请求选择的节点总数。
-
-
cluster_name - (字符串) 集群的名称。基于cluster.name设置。
-
nodes -
(对象) 包含请求选择的节点的统计信息。
Properties of
nodes-
-
(对象) 包含节点的统计信息。
Properties of
-
attributes -
(对象)
列出节点的属性,如
ml.machine_memory或ml.max_open_jobs设置。 -
ephemeral_id - (字符串) 节点的临时ID。
-
jvm -
(对象) 包含节点的Java虚拟机(JVM)统计信息。
-
mem -
(对象) 包含关于节点内存使用情况的统计信息。
Properties of
mem-
adjusted_total -
(字节值)
如果使用
es.total_memory_bytes系统属性覆盖了物理内存量,则报告覆盖的值。否则,它报告与total相同的值。 -
adjusted_total_in_bytes -
(整数)
如果使用
es.total_memory_bytes系统属性覆盖了物理内存量,则以字节为单位报告覆盖的值。否则,它报告与total_in_bytes相同的值。 -
ml -
(对象) 包含关于节点上机器学习使用本机内存的统计信息。
Properties of
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连接的主机和端口。
-
-
示例
editGET _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
}
}
}
}
设置升级模式 API
edit设置一个集群范围的 upgrade_mode 设置,为机器学习索引准备升级。
请求
editPOST _ml/set_upgrade_mode
先决条件
edit需要 manage_ml 集群权限。此权限包含在 machine_learning_admin 内置角色中。
描述
edit在升级集群时,在某些情况下,您必须重启节点并重新索引机器学习索引。在这些情况下,不能有机器学习作业在运行。您可以关闭机器学习作业,进行升级,然后再次打开所有作业。或者,您可以使用此API临时停止与作业和数据馈送相关的任务,并防止新作业打开。在不需要重新索引机器学习索引的升级过程中,您也可以使用此API,尽管在这种情况下停止作业并不是必需的。
更多信息,请参阅升级Elastic Stack。
当enabled=true时,此API会暂时停止所有作业和数据馈送任务,并禁止新的作业和数据馈送任务启动。
随后,您可以调用API并将enabled参数设置为false,这将使机器学习作业和数据馈送返回到其期望状态。
您可以通过使用获取机器学习信息API来查看当前的upgrade_mode设置值。
当 upgrade_mode 设置为 true 时,无法开启新的机器学习任务。
查询参数
edit-
enabled -
(可选,布尔值) 当
true时,启用upgrade_mode。默认为false。 -
timeout - (可选,时间) 等待请求完成的时间。默认值为30秒。
示例
edit以下示例为集群启用了upgrade_mode:
POST _ml/set_upgrade_mode?enabled=true&timeout=10m
当调用成功时,会返回一个确认的响应。例如:
{
"acknowledged": true
}
确认的响应只有在所有机器学习作业和数据馈送完成向机器学习内部索引写入后才会返回。这意味着在重新索引这些内部索引时不会导致失败。在重新索引之前,您必须等待确认的响应,以确保所有写入操作都已完成。
当升级完成后,您必须将 upgrade_mode 设置为 false,以便机器学习作业能够重新开始运行。例如:
POST _ml/set_upgrade_mode?enabled=false&timeout=10m