ML 集群设置
为了增强和自定义您的 OpenSearch 机器学习 (ML) 集群,您可以在 opensearch.yml
文件中添加和修改 ML Commons 插件的多个配置设置。
要了解有关静态和动态设置的更多信息,请参阅配置 OpenSearch。
ML 节点
默认情况下,ML 任务和模型仅在 ML 节点上运行。当未配置 data
节点角色时,ML 节点不存储任何分片,而是计算运行时的资源需求。要使用 ML 节点,请在 opensearch.yml
文件中创建一个节点。为您的节点指定一个自定义名称,并将节点角色定义为 ml
。
node.roles: [ ml ]
设置具有专用 ML 节点的集群
要设置具有专用 ML 节点的集群,请参阅示例 Docker compose 文件。
仅在 ML 节点上运行任务和模型
如果为 true
,ML Commons 任务和模型仅在 ML 节点上运行 ML 任务。如果为 false
,任务和模型首先在 ML 节点上运行。如果没有 ML 节点,任务和模型将在数据节点上运行。
我们建议在专用 ML 节点而不是数据节点上运行 ML 工作负载。从 OpenSearch 2.5 开始,ML 任务默认仅在 ML 节点上运行。要在数据节点上测试模型,请将 plugins.ml_commons.only_run_on_ml_node
设置为 false
。
我们建议在生产集群上将 plugins.ml_commons.only_run_on_ml_node
设置为 true
。
设置
plugins.ml_commons.only_run_on_ml_node: true
值
- 默认值:
true
- 值范围:
true
或false
将任务调度到 ML 节点
round_robin
使用轮询调度方式将 ML 任务分派到 ML 节点。least_load
从所有 ML 节点(如 JVM 堆内存使用情况和正在运行的任务)收集运行时信息,然后将任务分派到负载最低的 ML 节点。
设置
plugins.ml_commons.task_dispatch_policy: round_robin
值
- 默认值:
round_robin
- 值范围:
round_robin
或least_load
设置每个节点的 ML 任务数量
设置每个 ML 节点可以运行的 ML 任务数量。当设置为 0
时,任何节点上都不会运行 ML 任务。
设置
plugins.ml_commons.max_ml_task_per_node: 10
值
- 默认值:
10
- 值范围:[0, 10,000]
设置每个节点的 ML 模型数量
设置可以部署到每个 ML 节点的 ML 模型数量。当设置为 0
时,任何节点上都无法部署 ML 模型。
设置
plugins.ml_commons.max_model_on_node: 10
值
- 默认值:
10
- 值范围:[0, 10,000]
设置同步作业间隔
使用 Profile API 返回运行时信息时,ML Commons 将运行定期作业以同步每个节点上新部署或未部署的模型。当设置为 0
时,ML Commons 会立即停止同步作业。
设置
plugins.ml_commons.sync_up_job_interval_in_seconds: 3
值
- 默认值:
3
- 值范围:[0, 86,400]
监控预测请求
控制一个节点上监控的预测请求数量。如果设置为 0
,OpenSearch 会清除缓存中的所有监控预测请求,并且不监控新的预测请求。
设置
plugins.ml_commons.monitoring_request_count: 100
值范围
- 默认值:
100
- 值范围:[0, 10,000,000]
每个节点的注册模型任务
控制一个节点上可以并行运行的注册模型任务数量。如果设置为 0
,则不能在任何节点上运行注册模型任务。
设置
plugins.ml_commons.max_register_model_tasks_per_node: 10
值
- 默认值:
10
- 值范围:[0, 10]
每个节点的部署模型任务
控制一个节点上可以并行运行的部署模型任务数量。如果设置为 0,则不能将模型部署到任何节点。
设置
plugins.ml_commons.max_deploy_model_tasks_per_node: 10
值
- 默认值:
10
- 值范围:[0, 10]
使用 URL 注册模型
此设置允许您使用 URL 注册模型。默认情况下,ML Commons 只允许注册来自 OpenSearch 模型仓库的 预训练 模型。
设置
plugins.ml_commons.allow_registering_model_via_url: false
值
- 默认值:false
- 有效值:
false
,true
使用本地文件注册模型
此设置允许您使用本地文件注册模型。默认情况下,ML Commons 只允许注册来自 OpenSearch 模型仓库的 预训练 模型。
设置
plugins.ml_commons.allow_registering_model_via_local_file: false
值
- 默认值:false
- 有效值:
false
,true
添加信任的 URL
默认值允许您从任何 http/https/ftp/本地文件注册模型文件。您可以更改此值以限制信任的模型 URL。
设置
此信任 URL 设置的默认 URL 值不安全。为了安全起见,请使用您自己的正则表达式字符串指向包含您的模型的信任仓库,例如 https://github.com/opensearch-project/ml-commons/blob/2.x/ml-algorithms/src/test/resources/org/opensearch/ml/engine/algorithms/text_embedding/*
。
plugins.ml_commons.trusted_url_regex: <model-repository-url>
值
- 默认值:
"^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"
- 值范围:Java 正则表达式 (regex) 字符串
分配任务超时
分配 ML 任务的生存时间(以秒为单位)。超时后,任务将失败。
设置
plugins.ml_commons.ml_task_timeout_in_seconds: 600
值
- 默认值:600
- 值范围:[1, 86,400]
设置原生内存阈值
设置一个熔断器,在运行 ML 任务之前检查所有系统内存使用情况。如果原生内存超过阈值,OpenSearch 会抛出异常并停止运行任何 ML 任务。
值基于可用内存的百分比。当设置为 0
时,不会运行任何 ML 任务。当设置为 100
时,熔断器关闭,不存在阈值。
从 OpenSearch 2.5 开始,ML Commons 运行一个原生内存熔断器,以避免加载过多模型时出现内存不足错误。默认情况下,原生内存阈值为 90%。如果内存使用量超过阈值,ML Commons 将返回错误。为了测试目的,您可以通过将 plugins.ml_commons.native_memory_threshold
设置为 100 来禁用熔断器。
设置
plugins.ml_commons.native_memory_threshold: 90
值
- 默认值:90
- 值范围:[0, 100]
设置 JVM 堆内存阈值
设置一个熔断器,在运行 ML 任务之前检查 JVM 堆内存使用情况。如果堆使用量超过阈值,OpenSearch 会触发熔断器并抛出异常以保持最佳性能。
值基于可用 JVM 堆内存的百分比。当设置为 0
时,不会运行任何 ML 任务。当设置为 100
时,熔断器关闭,不存在阈值。
设置
plugins.ml_commons.jvm_heap_memory_threshold: 85
值
- 默认值:85
- 值范围:[0, 100]
设置磁盘可用空间阈值
设置一个磁盘熔断器,在运行 ML 任务之前检查磁盘使用情况。如果磁盘可用空间量超过阈值,OpenSearch 会触发熔断器并抛出异常以保持最佳性能。
有效值以字节为单位。要禁用熔断器,请将此值设置为 -1。
设置
plugins.ml_commons.disk_free_space_threshold: 5G
值
- 默认值:5G
- 值范围:[-1, Long.MAX_VALUE]
排除节点名称
使用此设置指定您不希望运行 ML 任务的节点名称。该值应为有效的节点名称或逗号分隔的节点名称列表。
设置
plugins.ml_commons.exclude_nodes._name: node1, node2
允许自定义部署计划
启用此设置后,用户可以根据其权限将模型部署到特定的 ML 节点。
设置
plugins.ml_commons.allow_custom_deployment_plan: false
值
- 默认值:false
- 有效值:
false
,true
启用自动部署
此设置适用于您为尚未部署的外部托管模型发送预测请求时。当设置为 true
时,如果模型尚未部署,此设置会自动将模型部署到集群。
设置
plugins.ml_commons.model_auto_deploy.enable: false
值
- 默认值:
true
- 有效值:
false
,true
启用自动重新部署
此设置在集群故障时自动重新部署已部署或部分部署的模型。如果集群内的所有 ML 节点崩溃,模型会切换到 DEPLOYED_FAILED
状态,并且必须手动部署模型。
设置
plugins.ml_commons.model_auto_redeploy.enable: true
值
- 默认值:
true
- 有效值:
false
,true
设置自动重新部署的重试次数
此设置限制了当集群中的 ML 节点失败或新的 ML 节点加入集群时,已部署或部分部署的模型尝试重新部署的次数。
设置
plugins.ml_commons.model_auto_redeploy.lifetime_retry_times: 3
值
- 默认值:3
- 值范围:[0, 100]
设置自动重新部署成功率
此设置根据集群中可用的 ML 节点,设置模型自动重新部署的成功率。例如,如果集群内的 ML 节点崩溃,自动重新部署协议会添加另一个节点或淘汰一个崩溃的节点。如果比率为 0.7
,并且所有 ML 节点中有 70% 在自动重新部署激活时成功重新部署了模型,则重新部署是成功的。如果模型重新部署到少于 70% 的可用 ML 节点上,自动重新部署将重试,直到重新部署成功或 OpenSearch 达到最大重试次数。
设置
plugins.ml_commons.model_auto_redeploy_success_ratio: 0.8
值
- 默认值:0.8
- 值范围:[0, 1]
运行基于 Python 的模型
当设置为 true
时,此设置启用运行 OpenSearch 支持的基于 Python 的模型的能力,例如指标关联。
设置
plugins.ml_commons.enable_inhouse_python_model: false
值
- 默认值:
false
- 有效值:
false
,true
安全删除模型
2.19 版本引入
当设置为 true
时,此设置启用一项安全功能,即在删除模型之前检查下游依赖项。这有助于防止意外删除正在被智能体、搜索管道、摄入管道和其他下游任务使用的模型。如果此设置已启用,并且您尝试删除具有活动下游依赖项的模型,您将收到错误消息,并且模型将不会被删除。
设置
plugins.ml_commons.safe_delete_model: true
值
- 默认值:
false
- 有效值:
false
,true
启用连接器的访问控制
当设置为 true
时,此设置允许管理员使用 backend_roles
控制对连接器 API 的访问和权限。
设置
plugins.ml_commons.connector_access_control_enabled: true
值
- 默认值:
false
- 有效值:
false
,true
启用本地模型
此设置允许集群管理员启用在集群上运行本地模型。当此设置为 false
时,用户将无法对任何本地模型运行注册、部署或预测操作。
设置
plugins.ml_commons.local_model.enabled: true
值
- 默认值:
true
- 有效值:
false
,true
可以运行外部托管模型的节点角色
此设置允许集群管理员控制可以运行外部托管模型的节点类型。
设置
plugins.ml_commons.task_dispatcher.eligible_node_role.remote_model: ["ml"]
值
- 默认值:
["data", "ml"]
,这允许外部托管模型在数据节点和 ML 节点上运行。
可以运行本地模型的节点角色
此设置允许集群管理员控制可以运行本地模型的节点类型。plugins.ml_commons.only_run_on_ml_node
设置只允许模型在 ML 节点上运行。对于本地模型,如果 plugins.ml_commons.only_run_on_ml_node
设置为 true
,则模型将始终在 ML 节点上运行。如果 plugins.ml_commons.only_run_on_ml_node
设置为 false
,则模型将在 plugins.ml_commons.task_dispatcher.eligible_node_role.local_model
设置中定义的节点上运行。
设置
plugins.ml_commons.task_dispatcher.eligible_node_role.remote_model: ["ml"]
值
- 默认值:
["data", "ml"]
启用远程推理
此设置允许集群管理员在集群上启用远程推理。如果此设置为 false
,用户将无法对任何外部托管模型运行注册、部署或预测操作,也无法为远程推理创建连接器。
设置
plugins.ml_commons.remote_inference.enabled: true
值
- 默认值:
true
- 有效值:
false
,true
启用智能体框架
当设置为 true
时,此设置在集群上启用智能体框架(包括智能体和工具),并允许用户对智能体运行注册、执行、删除、获取和搜索操作。
设置
plugins.ml_commons.agent_framework_enabled: true
值
- 默认值:
true
- 有效值:
false
,true
启用内存
当设置为 true
时,此设置启用对话内存,该内存存储对话中的所有消息以用于会话搜索。
设置
plugins.ml_commons.memory_feature_enabled: true
值
- 默认值:
true
- 有效值:
false
,true
启用 RAG 管道
当设置为 true
时,此设置启用检索增强生成 (RAG) 的搜索处理器。RAG 通过使用来自内存和先前对话的相关信息生成响应来增强查询结果。
设置
plugins.ml_commons.rag_pipeline_feature_enabled: true
值
- 默认值:
true
- 有效值:
false
,true