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 将被禁用。例如,节点无法打开作业、启动数据源、接收传输(内部)通信请求或来自客户端(包括 Kibana)的与机器学习 API 相关的请求。如果 xpack.ml.enabled 在集群中的所有节点上未统一设置,则您可能会遇到机器学习功能无法完全工作的问题。

如果任何节点上的 xpack.ml.enabledfalse,则不得从摄取管道中使用任何机器学习功能。在节点上将 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 logo cloud
(静态) 推理模型缓存中训练模型的生存时间 (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_percentfalse,则默认为 0。如果 xpack.ml.use_auto_machine_memory_percenttrue 且未显式设置 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 默认为当前集群中可以分配的最大大小。

机器学习断路器设置

编辑

相关的断路器设置可以在断路器页面中找到。