训练的模型
Elastic Stack Serverless
当您使用数据框分析分析作业来执行分类或回归分析时,它会创建一个机器学习模型,该模型会根据带标签的数据集进行训练和测试。 当您对训练的模型感到满意时,可以使用它来预测新数据。 例如,您可以在提取管道的处理器中或搜索查询中的管道聚合中使用它。 有关此过程的更多信息,请参阅 有监督学习简介 和 分类推理 和 回归。
在 Kibana 中,您可以在堆栈管理 > 告警和洞察 > 机器学习和机器学习 > 模型管理中查看和管理训练的模型。
或者,您可以使用诸如 获取训练的模型 和 删除训练的模型 等 API。
要在管道中部署数据框分析模型,请导航至主菜单中的机器学习 > 模型管理 > 训练的模型,或使用 Kibana 中的全局搜索字段。
在列表中找到您要部署的模型,然后点击操作菜单中的部署模型。

- 创建一个推理管道,以便能够通过管道使用模型来处理新数据。 添加一个名称和描述,或使用默认值。

- 配置管道处理器或使用默认设置。

- 配置以处理提取失败或使用默认设置。
- (可选) 通过运行管道模拟来测试您的管道,以确认它产生预期的结果。
- 检查设置并点击创建管道。
该模型已部署,可以通过推理管道使用。
您还可以提供并非由数据框分析分析作业创建但符合相应 JSON 模式的训练模型。 同样,您可以使用第三方模型来执行自然语言处理 (NLP) 任务。 如果您想在 Elastic Stack 中使用这些训练的模型,则必须使用 创建训练的模型 API 将它们存储在 Elasticsearch 文档中。 有关 NLP 模型的更多信息,请参阅 部署训练的模型。
在 Elasticsearch 中训练的模型是可移植的,并且可以在集群之间传输。 当模型与用于推理的集群隔离训练时,这尤其有用。 以下说明展示了如何使用 curl
和 jq
将模型导出为 JSON 并将其导入到另一个集群。
- 给定模型名称,找到模型ID。 您可以使用
curl
调用 获取训练的模型 API 以列出所有具有其 ID 的模型。
curl -s -u username:password \
-X GET "http://localhost:9200/_ml/trained_models" \
| jq . -C \
| more
如果您只想显示可用的模型 ID,请使用 jq
选择一个子集。
curl -s -u username:password \
-X GET "http://localhost:9200/_ml/trained_models" \
| jq -C -r '.trained_model_configs[].model_id'
flights1-1607953694065
flights0-1607953585123
lang_ident_model_1
在本示例中,您要导出 ID 为 flights1-1607953694065
的模型。
- 从命令行使用
curl
,再次使用 获取训练的模型 API 导出整个模型定义并将其保存到 JSON 文件。
curl -u username:password \
-X GET "http://localhost:9200/_ml/trained_models/flights1-1607953694065?exclude_generated=true&include=definition&decompress_definition=false" \
| jq '.trained_model_configs[0] | del(.model_id)' \
> flights1.json
一些观察结果
- 导出模型需要使用
curl
或类似的工具,该工具可以将模型通过 HTTP 流式传输到文件中。 如果您使用 Kibana 控制台,则浏览器可能会因导出模型的大小而无响应。 - 请注意导出期间使用的查询参数。 这些参数对于以以后可以再次导入并用于推理的方式导出模型是必需的。
- 您必须将 JSON 对象取消嵌套一级才能仅提取模型定义。 您还必须删除现有的模型 ID,以避免再次导入时出现 ID 冲突。 您可以使用
jq
内联执行这些步骤,也可以在使用jq
或其他工具下载后对生成的 JSON 文件执行这些步骤。
- 使用
curl
导入已保存的模型,将 JSON 文件上传到 创建的训练的模型 API。 当您指定 URL 时,您还可以使用 URL 的最后路径部分将模型 ID 设置为新的 ID。
curl -u username:password \
-H 'Content-Type: application/json' \
-X PUT "http://localhost:9200/_ml/trained_models/flights1-imported" \
--data-binary @flights1.json
- 从 获取训练的模型 API 导出的模型的大小受到 Elasticsearch 中 http.max_content_length 全局配置值的限制。 默认值为
100mb
,可能需要根据导出的模型的大小进行增加。 - 可能会发生连接超时,例如,当模型尺寸非常大或您的集群处于负载状态时。 如果需要,您可以增加
curl
(例如,curl --max-time 600
) 或您选择的客户端的 超时配置。
如果您还想将数据框分析分析作业复制到新集群,您可以在 Kibana 的 堆栈管理 应用中导出和导入作业。 请参阅 导出和导入机器学习作业。
即使模型不是由 Elastic 数据框分析训练的,也可以将模型导入到您的 Elasticsearch 集群。 Eland 支持通过其 API 直接导入模型。 请参阅最新的 Eland 文档,以获取有关支持的模型类型以及使用 Eland 导入模型的其他详细信息的更多信息。