推理处理器编辑

使用预先训练好的数据帧分析模型或为自然语言处理任务部署的模型,对管道中正在摄取的数据进行推理。

表 27. 推理选项

名称 必需 默认值 描述

model_id .

-

(字符串)训练好的模型的 ID 或别名,或部署的 ID。

input_output

-

(列表)用于推理的输入字段和用于推理结果的输出(目标)字段。此选项与 target_fieldfield_map 选项不兼容。

target_field

ml.inference.<processor_tag>

(字符串)添加到传入文档中的字段,用于包含结果对象。

field_map

如果定义了模型的默认字段映射

(对象)将文档字段名称映射到模型的已知字段名称。此映射优先于模型配置中提供的任何默认映射。

inference_config

模型中定义的默认设置

(对象)包含推理类型及其选项。

ignore_missing

false

(布尔值)如果为 trueinput_ouput 中定义的任何输入字段缺失,则将静默忽略这些缺失的字段,否则缺失的字段将导致失败。仅在使用 input_output 配置显式列出输入字段时适用。

description

-

处理器的描述。用于描述处理器的用途或其配置。

if

-

有条件地执行处理器。请参阅有条件地运行处理器

ignore_failure

false

忽略处理器的故障。请参阅处理管道故障

on_failure

-

处理处理器的故障。请参阅处理管道故障

tag

-

处理器的标识符。用于调试和指标。

  • 您不能将 input_output 字段与 target_fieldfield_map 字段一起使用。对于 NLP 模型,请使用 input_output 选项。对于数据帧分析模型,请使用 target_fieldfield_map 选项。
  • 每个推理输入字段必须是单个字符串,而不是字符串数组。

配置输入和输出字段编辑

选择 content 字段进行推理,并将结果写入 content_embedding

{
  "inference": {
    "model_id": "model_deployment_for_inference",
    "input_output": [
        {
            "input_field": "content",
            "output_field": "content_embedding"
        }
    ]
  }
}

配置多个输入编辑

将从传入文档中读取 contenttitle 字段,并将其发送到模型进行推理。推理输出分别写入 content_embeddingtitle_embedding

{
  "inference": {
    "model_id": "model_deployment_for_inference",
    "input_output": [
        {
            "input_field": "content",
            "output_field": "content_embedding"
        },
        {
            "input_field": "title",
            "output_field": "title_embedding"
        }
    ]
  }
}

使用 input_output 选择输入字段与 target_fieldfield_map 选项不兼容。

数据帧分析模型必须使用 target_field 指定将结果写入的根位置,并可选地使用 field_map 将输入文档中的字段名称映射到模型输入字段。

{
  "inference": {
    "model_id": "model_deployment_for_inference",
    "target_field": "FlightDelayMin_prediction_infer",
    "field_map": {
      "your_field": "my_field"
    },
    "inference_config": { "regression": {} }
  }
}

分类配置选项编辑

用于推理的分类配置。

num_top_classes
(可选,整数)指定要返回的顶级类别预测的数量。默认为 0。
num_top_feature_importance_values
(可选,整数)指定每个文档的最大特征重要性值的数量。默认为 0,表示不进行特征重要性计算。
results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
top_classes_results_field
(可选,字符串)指定写入顶级类别的字段。默认为 top_classes
prediction_field_type
(可选,字符串)指定要写入的预测字段的类型。有效值为:stringnumberboolean。当提供 boolean 时,1.0 将转换为 true0.0 将转换为 false

填充掩码配置选项编辑

num_top_classes
(可选,整数)指定要返回的顶级类别预测的数量。默认为 0。
results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

NER 配置选项编辑

results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

回归配置选项编辑

用于推理的回归配置。

results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
num_top_feature_importance_values
(可选,整数)指定每个文档的最大特征重要性值的数量。默认情况下,它为零,并且不进行特征重要性计算。

文本分类配置选项编辑

classification_labels
(可选,字符串)分类标签数组。
num_top_classes
(可选,整数)指定要返回的顶级类别预测的数量。默认为 0。
results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
span

(可选,整数)当 truncatenone 时,您可以对较长的文本序列进行分区以进行推理。该值表示每个子序列之间有多少个标记重叠。

默认值为 -1,表示不进行窗口化或跨度。

当您的典型输入仅略大于 max_sequence_length 时,最好简单地截断;第二个子序列中的信息将非常少。

truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
span

(可选,整数)当 truncatenone 时,您可以对较长的文本序列进行分区以进行推理。该值表示每个子序列之间有多少个标记重叠。

默认值为 -1,表示不进行窗口化或跨度。

当您的典型输入仅略大于 max_sequence_length 时,最好简单地截断;第二个子序列中的信息将非常少。

truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

文本嵌入配置选项编辑

results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

文本扩展配置选项编辑

results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
span

(可选,整数)当 truncatenone 时,您可以对较长的文本序列进行分区以进行推理。该值表示每个子序列之间有多少个标记重叠。

默认值为 -1,表示不进行窗口化或跨度。

当您的典型输入仅略大于 max_sequence_length 时,最好简单地截断;第二个子序列中的信息将非常少。

truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
span

(可选,整数)当 truncatenone 时,您可以对较长的文本序列进行分区以进行推理。该值表示每个子序列之间有多少个标记重叠。

默认值为 -1,表示不进行窗口化或跨度。

当您的典型输入仅略大于 max_sequence_length 时,最好简单地截断;第二个子序列中的信息将非常少。

truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

零样本分类配置选项编辑

labels
(可选,数组)要分类的标签。可以在创建时设置为默认标签,然后在推理期间更新。
multi_label
(可选,布尔值)指示在给定输入的情况下是否可能有多个 true 标签。这在标记可能属于多个输入标签的文本时很有用。默认为 false
results_field
(可选,字符串)添加到传入文档中的字段,用于包含推理预测。默认为用于训练模型的数据帧分析作业的 results_field 值,该值默认为 <dependent_variable>_prediction
tokenization

(可选,对象)指示要执行的分词和所需的设置。默认的分词配置为 bert。有效的分词值为

  • bert:用于 BERT 风格的模型
  • mpnet:用于 MPNet 风格的模型
  • roberta:用于 RoBERTa 风格和 BART 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 xlm_roberta:用于 XLMRoBERTa 风格的模型
  • [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 bert_ja:用于为日语训练的 BERT 风格的模型。
分词的属性
bert

(可选,对象)将使用封闭的设置执行 BERT 风格的分词。

bert 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

roberta

(可选,对象)将使用封闭的设置执行 RoBERTa 风格的分词。

roberta 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

mpnet

(可选,对象)将使用封闭的设置执行 MPNet 风格的分词。

mpnet 的属性
truncate

(可选,字符串)指示当标记超过 max_sequence_length 时如何截断它们。默认值为 first

  • none:不进行截断;推理请求会收到错误。
  • first:仅截断第一个序列。
  • second:仅截断第二个序列。如果只有一个序列,则截断该序列。

对于 zero_shot_classification,假设序列始终是第二个序列。因此,在这种情况下不要使用 second

推理处理器示例编辑

"inference":{
  "model_id": "my_model_id",
  "field_map": {
    "original_fieldname": "expected_fieldname"
  },
  "inference_config": {
    "regression": {
      "results_field": "my_regression"
    }
  }
}

此配置指定 regression 推理,并将结果写入 target_field 结果对象中包含的 my_regression 字段。 field_map 配置将源文档中的字段 original_fieldname 映射到模型预期的字段。

"inference":{
  "model_id":"my_model_id"
  "inference_config": {
    "classification": {
      "num_top_classes": 2,
      "results_field": "prediction",
      "top_classes_results_field": "probabilities"
    }
  }
}

此配置指定了一个 classification 推理。预测概率报告的类别数量为 2 (num_top_classes)。结果写入 prediction 字段,顶级类别写入 probabilities 字段。这两个字段都包含在 target_field 结果对象中。

有关使用自然语言处理训练模型的示例,请参阅 将 NLP 推理添加到摄取管道

特征重要性对象映射编辑

要充分利用聚合并搜索 特征重要性,请更新特征重要性结果字段的索引映射,如下所示

"ml.inference.feature_importance": {
  "type": "nested",
  "dynamic": true,
  "properties": {
    "feature_name": {
      "type": "keyword"
    },
    "importance": {
      "type": "double"
    }
  }
}

特征重要性的映射字段名称(在上面的示例中,它是 ml.inference.feature_importance)的组合方式如下

<ml.inference.target_field>.<inference.tag>.feature_importance

  • <ml.inference.target_field>:默认为 ml.inference
  • <inference.tag>:如果在处理器定义中未提供,则它不是字段路径的一部分。

例如,如果您在定义中提供了一个标签 foo,如下所示

{
  "tag": "foo",
  ...
}

然后,特征重要性值将写入 ml.inference.foo.feature_importance 字段。

您还可以按如下方式指定目标字段

{
  "tag": "foo",
  "target_field": "my_field"
}

在这种情况下,特征重要性将在 my_field.foo.feature_importance 字段中公开。