原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/ml-settings.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/ml-settings.html

Elasticsearch中的机器学习设置

你不需要为使用机器学习做任何设置。它默认就是启用的。

机器学习使用 SSE4.2 指令,因此只能在CPU 支持 SSE4.2 的机器上工作。 如果你这在老的硬件上运行 Elasticsearch,你必须禁用机器学习(通过设置xpack.ml.enabledfalse)。

所有这些设置都可以添加到elasticsearch.yml配置文件中。动态设置还可以通过 集群更新设置 API来对整个集群进行更新。

动态设置优先于elasticsearch.yml文件中的设置。

常规机器学习设置

node.ml

设置为 true (默认) 以指定节点为一个机器学习节点

如果在elasticsearch.yml中设置为false,则该节点不能运行 作业(job)。 如果设置为true,但是xpack.ml.enabled设置为false,则node.ml设置会被忽略且节点不能运行 作业(job)。 如果你想运行 作业,集群中必须至少有一个机器学习节点。

在专用协调节点或专用主节点上,禁用node.ml角色。

xpack.ml.enabled

设置为true (默认) 以启用节点的机器学习。

如果设置为false,该节点的机器学习 API 会被禁用。 因此,该节点不能打开作业、启动数据源(datafeeds)或接收与机器学习 API 相关的传输(内部)通信请求。 如果节点是协调节点,来自客户端(包括 Kibana)的机器学习请求也会失败。 有关在特定的 Kibana 实例中禁用机器学习的更多信息,请参考 Kibana machine learning settings.

如果要在集群中使用机器学习功能,建议在所有节点上将xpack.ml.enabled 设置为true。 这是默认行为。至少,它必须在所有符合主节点条件的节点上启用 如果您想在客户端或 Kibana 中使用机器学习功能,还必须在所有协调节点上启用它。

xpack.ml.inference_model.cache_size
允许的最大推理(inference)缓存大小。推理缓存存在于每个 预处理节点(ingest node) 上的JVM堆中。高速缓存为推理(inference)处理器提供了更快的处理时间。 该值可以是静态字节大小的值(比如,“2gb”)或分配的堆的总大小的百分比。默认为“40%”。
xpack.ml.inference_model.time_to_live
推理模型缓存中模型的生存时间(TTL)。TTL 从上次访问开始计算。 推理(inference)处理器试图从缓存中加载模型。 如果推理处理器在 TTL 期间没有接收到任何文档,则被引用的模型被标记为从缓存中移除。 如果稍后有文档被处理,模型将再次加载到缓存中。默认为5m
xpack.ml.max_inference_processors (动态)
所有 预处理管道(ingest pipelines) 中允许的推理类型处理器的总数。 一旦达到限制,就不允许在管道中添加推理处理器。默认为50
xpack.ml.max_machine_memory_percent (动态)
机器学习可用于运行分析过程的机器内存的最大百分比。(这些过程独立于 Elasticsearch JVM。) 默认为 30 %。 该限制基于机器的总内存,而不是当前的可用内存。 如果分配作业会导致机器学习作业的估计内存使用超过限制,则不会将作业分配给节点。
xpack.ml.max_model_memory_limit (动态)
可以为此节点上的任何作业设置的最大 model_memory_limit 属性值。 如果尝试使用大于此设置值的 model_memory_limit 属性值创建作业,将会出现错误。 更新此设置时,现有作业不受影响。 更多关于 model_memory_limit 属性的信息, 参考 `analysis_limits`
xpack.ml.max_open_jobs (动态)
一个节点上可以同时运行的最大作业数。默认为 20。 在这种情况下,任务包括异常检测任务和数据帧分析任务。 最大作业数量也受到内存使用的限制。 因此,如果作业的估计内存使用量高于允许值,则在一个节点上运行的作业会更少。 7.1 版之前,此设置是基于节点的非动态设置。 在 7.1 版中,它成为集群范围的动态设置。 因此,节点启动后对其值的更改只有在集群中的每个节点都运行 7.1 版或更高版本时才能使用。 最大允许值为 512
xpack.ml.node_concurrent_job_allocations (动态)
每个节点上可以同时处于opening状态的最大作业数。 通常,作业在进入open状态之前,会在此状态下停留一段时间。 在打开时必须恢复大型模型的作业会在opening状态花费更多时间。默认为 2

机器学习的高级设置

这些设置适用于高级用例;通常情况下默认值就够用了:

xpack.ml.enable_config_migration (动态)
保留的 (Reserved)。
xpack.ml.max_anomaly_records (动态)
每个 存储桶(bucket) 输出的最大记录数。默认值为500.
xpack.ml.max_lazy_ml_nodes (动态)

延迟启动机器学习节点的数量。 在打开第一个机器学习作业之前不需要 ML 节点的情况下非常有用。 默认值为 0,最可可接受的值为 3。 如果当前 ML 节点的数量 >= 该设置,则认为不再有可用的延迟节点,因为已经提供了所需的节点数量。 当作业在此设置值为 >0 的情况下打开,并且没有可以接受该作业的节点时,该作业将保持OPENING状态,直到新的 ML 节点添加到集群,然后该作业会被分配在该节点上运行。

该设置假设一些外部进程能够将 ML 节点添加到集群中。此设置仅在与此类外部进程结合使用时有用。

xpack.ml.process_connect_timeout (动态)
与 Elasticsearch JVM 分开运行的机器学习进程的连接超时时间。默认为 10s。 一些机器学习运算是由独立于 Elasticsearch JVM 运行的进程完成的。 当这些进程启动时,它们必须连接到 Elasticsearch JVM。 如果此类进程未在此设置指定的时间内连接,则认为该进程已失败。 默认为 10s,此设置的最小值是 5s