Elasticsearch 中的机器学习设置
编辑Elasticsearch 中的机器学习设置编辑
机器学习在 x86_64 机器上使用 SSE4.2 指令,因此它仅适用于 CPU 支持 SSE4.2 的 x86_64 机器。(此限制不适用于 aarch64 机器。)如果您在较旧的 x86_64 硬件上运行 Elasticsearch,则必须禁用机器学习(通过将 xpack.ml.enabled
设置为 false
)。在这种情况下,您根本不应该尝试在集群中使用机器学习功能。
常规机器学习设置编辑
-
node.roles: [ ml ]
-
(静态) 将
node.roles
设置为包含ml
以将该节点标识为*机器学习节点*。如果您想运行机器学习作业,则集群中必须至少有一个机器学习节点。如果您设置了
node.roles
,则必须为该节点显式指定所有必需的角色。要了解更多信息,请参阅节点。- 在专用协调节点或专用主节点上,请勿设置
ml
角色。 - 强烈建议专用机器学习节点也具有
remote_cluster_client
角色;否则,当在机器学习作业或数据馈送中使用跨集群搜索时,跨集群搜索将失败。请参阅远程合格节点。
- 在专用协调节点或专用主节点上,请勿设置
-
xpack.ml.enabled
-
(静态) 默认值 (
true
) 启用节点上的机器学习 API。如果您想在集群中使用机器学习功能,建议您在所有节点上使用此设置的默认值。
如果设置为
false
,则节点上的机器学习 API 将被禁用。例如,节点无法打开作业、启动数据馈送、接收与机器学习 API 相关的传输(内部)通信请求或来自客户端(包括 Kibana)的请求。如果您的集群中所有节点上的xpack.ml.enabled
设置不一致,则您可能会遇到机器学习功能无法完全正常工作的问题。如果任何节点上的
xpack.ml.enabled
为false
,则不得使用摄取管道中的任何机器学习功能。在将节点上的xpack.ml.enabled
设置为false
之前,请考虑您是否真的只想从node.roles
中排除ml
。从node.roles
中排除ml
将阻止该节点运行机器学习作业和 NLP 模型,但它仍然知道机器学习功能的存在。将xpack.ml.enabled
设置为false
应该保留用于由于上述硬件限制而导致您根本无法在集群中使用机器学习功能的情况。 -
xpack.ml.inference_model.cache_size
- (静态) 允许的最大推理缓存大小。推理缓存存在于每个摄取节点的 JVM 堆中。该缓存为
inference
处理器提供了更快的处理时间。该值可以是静态字节大小值(例如2gb
)或总分配堆的百分比。默认为40%
。另请参阅机器学习断路器设置。
-
xpack.ml.inference_model.time_to_live
- (静态) 推理模型缓存中训练模型的生存时间 (TTL)。TTL 是从上次访问时间开始计算的。缓存的用户(例如推理处理器或推理聚合器)在首次使用时缓存模型,并在每次使用时重置 TTL。如果在 TTL 期间未访问缓存的模型,则会将其标记为从缓存中逐出。如果稍后处理文档,则模型将再次加载到缓存中。要在 Elasticsearch Service 中更新此设置,请参阅添加 Elasticsearch 用户设置。默认为
5m
。 -
xpack.ml.max_inference_processors
- (动态) 所有摄取管道中允许的
inference
类型处理器总数。一旦达到限制,就不允许将inference
处理器添加到管道中。默认为50
。 -
xpack.ml.max_machine_memory_percent
-
(动态) 机器学习可用于运行分析进程的机器内存的最大百分比。这些进程独立于 Elasticsearch JVM。限制基于机器的总内存,而不是当前的可用内存。如果分配作业会导致机器学习作业的估计内存使用量超过限制,则不会将作业分配给节点。启用操作员权限功能后,此设置只能由操作员用户更新。最小值为
5
;最大值为200
。默认为30
。除非您有足够的交换空间来容纳它,并且已确定这是适合专业用例的配置,否则请勿将此设置配置为高于运行 Elasticsearch JVM 后剩余内存量的值。最大设置值适用于已确定对机器学习作业使用交换空间是可以接受的特殊情况。一般的最佳实践是不在 Elasticsearch 节点上使用交换。
-
xpack.ml.max_model_memory_limit
- (动态) 可以为此集群中的任何机器学习作业设置的最大
model_memory_limit
属性值。如果您尝试创建一个model_memory_limit
属性值大于此设置值的作业,则会发生错误。更新此设置时,现有作业不受影响。如果此设置为0
或未设置,则表示没有最大model_memory_limit
值。如果没有节点满足作业的内存要求,则缺少最大内存限制意味着可以创建无法分配给任何可用节点的作业。有关model_memory_limit
属性的更多信息,请参阅创建异常检测作业或创建数据帧分析作业。如果xpack.ml.use_auto_machine_memory_percent
为false
,则默认为0
。如果xpack.ml.use_auto_machine_memory_percent
为true
并且未显式设置xpack.ml.max_model_memory_limit
,则它将默认为可以在集群中分配的最大model_memory_limit
。
-
xpack.ml.max_open_jobs
- (动态) 可以在节点上同时运行的最大作业数。在这种情况下,作业包括异常检测作业和数据帧分析作业。最大作业数还受内存使用量的限制。因此,如果作业的估计内存使用量高于允许值,则节点上将运行更少的作业。在 7.1 版之前,此设置是每个节点的非动态设置。在 7.1 版中,它成为集群范围的动态设置。因此,仅当集群中的每个节点都运行 7.1 或更高版本后,才会使用节点启动后对其值的更改。最小值为
1
;最大值为512
。默认为512
。 -
xpack.ml.nightly_maintenance_requests_per_second
- (动态) 夜间维护任务删除过期模型快照和结果的速率。该设置是用于按查询请求删除的
requests_per_second
参数的代理,并控制限制。启用操作员权限功能后,此设置只能由操作员用户更新。有效值必须大于0.0
或等于-1.0
,其中-1.0
表示使用默认值。默认为-1.0
-
xpack.ml.node_concurrent_job_allocations
- (动态) 每个节点上可以同时处于
opening
状态的最大作业数。通常,作业在进入open
状态之前会在该状态下花费少量时间。必须在打开时恢复大型模型的作业在opening
状态下花费的时间更多。启用操作员权限功能后,此设置只能由操作员用户更新。默认为2
。
高级机器学习设置编辑
这些设置适用于高级用例;默认值通常就足够了
-
xpack.ml.enable_config_migration
- (动态) 保留。启用操作员权限功能后,此设置只能由操作员用户更新。
-
xpack.ml.max_anomaly_records
- (动态) 每个桶输出的最大记录数。默认为
500
。 -
xpack.ml.max_lazy_ml_nodes
-
(动态) 延迟启动的机器学习节点数。在第一个机器学习作业打开之前不需要机器学习节点的情况下很有用。如果当前机器学习节点数大于或等于此设置,则假定没有更多延迟节点可用,因为已配置了所需数量的节点。如果打开了作业,并且此设置的值大于零,并且没有节点可以接受该作业,则该作业将保持
OPENING
状态,直到将新的机器学习节点添加到集群并将该作业分配给该节点运行。启用操作员权限功能后,此设置只能由操作员用户更新。默认为0
。此设置假定某些外部进程能够将机器学习节点添加到集群。此设置仅在与此类外部进程结合使用时才有用。
-
xpack.ml.max_ml_node_size
- (动态) 支持自动集群扩展的部署中机器学习节点的最大节点大小。如果将其设置为未来机器学习节点的最大可能大小,则当机器学习作业分配给延迟节点时,它可以在扩展无法支持作业大小时进行检查(并快速失败)。启用操作员权限功能后,此设置只能由操作员用户更新。默认为
0b
,这意味着将假定自动集群扩展可以将任意大的节点添加到集群中。
-
xpack.ml.model_repository
-
(动态) 机器学习模型存储库的位置,在受限或封闭网络中安装模型的情况下,模型工件文件在此处可用。
xpack.ml.model_repository
可以是文件位置或 HTTP/HTTPS 服务器的字符串。示例值为xpack.ml.model_repository: file://${path.home}/config/models/
或
xpack.ml.model_repository: https://my-custom-backend
如果
xpack.ml.model_repository
是文件位置,则它必须指向 Elasticsearch 的config
目录的子目录。 -
xpack.ml.persist_results_max_retries
- (动态) 处理机器学习结果时失败的批量索引请求的最大重试次数。如果达到限制,则机器学习作业将停止处理数据,其状态为
failed
。启用操作员权限功能后,此设置只能由操作员用户更新。最小值为0
;最大值为50
。默认为20
。 -
xpack.ml.process_connect_timeout
- (动态) 与 Elasticsearch JVM 分开运行的机器学习进程的连接超时。启动此类进程时,它们必须连接到 Elasticsearch JVM。如果进程未在此设置指定的时间段内连接,则假定该进程已失败。启用操作员权限功能后,此设置只能由操作员用户更新。最小值为
5s
。默认为10s
。 -
xpack.ml.use_auto_machine_memory_percent
-
(动态) 如果此设置为
true
,则忽略xpack.ml.max_machine_memory_percent
设置。相反,将自动计算可用于运行机器学习分析进程的机器内存的最大百分比,并考虑节点总大小和节点上 JVM 的大小。启用操作员权限功能后,此设置只能由操作员用户更新。默认值为false
。- 如果没有专用的机器学习节点(也就是说,该节点具有多个角色),请勿启用此设置。其计算假设机器学习分析是节点的主要目的。
- 该计算假设专用机器学习节点在 JVM 之外至少保留了
256MB
内存。如果集群中有微型机器学习节点,则不应使用此设置。
如果此设置为
true
,它还会影响xpack.ml.max_model_memory_limit
的默认值。在这种情况下,xpack.ml.max_model_memory_limit
默认为可以在当前集群中分配的最大大小。
机器学习断路器设置编辑
相关的断路器设置可以在断路器页面中找到。