训练业务流程工作流模型

训练是模型从标记的语句进行学习的过程。 训练完成后,可以查看 模型性能。

若要训练模型,请启动训练作业。 只有已成功完成的作业才能创建模型。 训练作业在七天后过期,之后你将无法再检索作业详细信息。 如果训练作业成功完成并创建了模型,作业过期将不会影响模型。 你在同一时间只能有一个训练作业处于运行状态,并且无法在同一项目中启动其他作业。

处理简单项目时训练时间可能是几秒钟,达到语句最大限制时训练时间可能是几小时。

成功完成训练后,将自动触发模型评估。 评估过程首先使用经过训练的模型对测试集中的语句运行预测,并将预测结果与提供的标签进行比较(这确立了真实性的基线)。 返回结果,以便可以查看 模型的性能。

先决条件

请参阅 项目开发生命周期。

数据拆分

开始训练过程之前,项目中标记的语句会划分为训练集和测试集。 其中的每一个都有不同的功能。 训练集用于训练模型。 模型从该数据集中学习带标签的话语。 测试集是一个盲集,它不是在训练期间引入到模型的,而是在评估期间引入的。

成功训练模型后,可将其用于根据测试集中的语句进行预测。 这些预测用于计算评估指标。

我们建议在训练集和测试集中全面表示所有意图。

业务流程工作流支持两种数据拆分方法:

  • 根据所选的百分比,自动从训练数据拆分测试集:系统会根据所选的百分比在训练集和测试集之间拆分标记的数据。 建议的拆分百分比为 80% 用于训练,20% 用于测试。

注释

如果选择自动将测试集从训练数据中拆分选项,则仅根据提供的百分比拆分分配为训练集的数据。

  • 使用手动拆分训练和测试数据:此方法使用户能够定义语句应分别属于哪个集合。 只有在 标记期间向测试集添加了话语时,才启用此步骤。

注释

只能为未连接的意向在训练数据集中添加语句。

训练模型

启动训练作业

使用以下 URL、标头和 JSON 正文创建 POST 请求以提交训练作业。

请求的 URL

创建 API 请求时,请使用以下 URL。 将占位符中的值替换为您自己的值。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
{API-VERSION} 要调用的 API 的版本。 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

请求主体

在请求中使用以下对象。 完成训练后,该模型将被命名为 MyModel。

{
  "modelLabel": "{MODEL-NAME}",
  "trainingMode": "standard",
  "trainingConfigVersion": "{CONFIG-VERSION}",
  "evaluationOptions": {
    "kind": "percentage",
    "testingSplitPercentage": 20,
    "trainingSplitPercentage": 80
  }
}
Key Placeholder 价值 Example
modelLabel {MODEL-NAME} 模型名称。 Model1
trainingMode standard 训练模式。 业务流程中只有一种可用的训练模式,即 standard。 standard
trainingConfigVersion {CONFIG-VERSION} 训练配置模型版本。 默认情况下将使用最新的模型版本。 2022-05-01
kind percentage 拆分方法。 可能的值为 percentage 或 manual。 有关详细信息,请参阅 如何训练模型。 percentage
trainingSplitPercentage 80 要包含在训练集中的已标记数据的百分比。 建议的值为 80。 80
testingSplitPercentage 20 要包含在测试集中的已标记数据的百分比。 建议的值为 20。 20

注释

仅当 trainingSplitPercentage 设置为 testingSplitPercentage 时 Kind 和 percentage 才是必需的,并且两个百分比的总和应等于 100。

发送 API 请求后,会收到指示 202 成功的响应。 在响应标头中,提取 operation-location 格式如下的值:

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}

可以使用此 URL 获取训练作业状态。

获取训练作业状态

训练可能需要一些时间,具体取决于训练数据的大小和架构的复杂性。 可以使用以下请求不断轮询训练作业的状态,直至成功完成。

使用以下 GET 请求来获取模型在训练过程中的状态。 将占位符中的值替换为您自己的值。

请求的 URL

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Placeholder 价值 Example
{YOUR-ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
{JOB-ID} 用于查找模型训练状态的 ID。 它位于 location 提交训练作业时收到的标头值中。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} 要调用的 API 的版本。 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

响应正文

发送请求后,会收到以下响应。 继续轮询该端点,直到状态参数变为“已成功”。

{
  "result": {
    "modelLabel": "{MODEL-LABEL}",
    "trainingConfigVersion": "{TRAINING-CONFIG-VERSION}",
    "estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
    "trainingStatus": {
      "percentComplete": 3,
      "startDateTime": "2022-04-18T15:45:06.8190649Z",
      "status": "running"
    },
    "evaluationStatus": {
      "percentComplete": 0,
      "status": "notStarted"
    }
  },
  "jobId": "xxxxxx-xxxxx-xxxxxx-xxxxxx",
  "createdDateTime": "2022-04-18T15:44:44Z",
  "lastUpdatedDateTime": "2022-04-18T15:45:48Z",
  "expirationDateTime": "2022-04-25T15:44:44Z",
  "status": "running"
}
Key 价值 Example
modelLabel 模型名称 Model1
trainingConfigVersion 训练配置版本。 默认使用最新版本。 2022-05-01
startDateTime 开始训练的时间 2022-04-14T10:23:04.2598544Z
status 训练作业的状态 running
estimatedEndDateTime 预计的训练作业完成时间 2022-04-14T10:29:38.2598544Z
jobId 训练作业 ID xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
createdDateTime 训练作业创建日期和时间 2022-04-14T10:22:42Z
lastUpdatedDateTime 训练作业上次更新日期和时间 2022-04-14T10:23:45Z
expirationDateTime 训练作业过期日期和时间 2022-04-14T10:22:42Z

取消训练作业

使用以下 URL、标头和 JSON 正文创建 POST 请求,以取消训练作业。

请求的 URL

创建 API 请求时,请使用以下 URL。 将占位符中的值替换为您自己的值。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}/:cancel?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
{JOB-ID} 这是训练作业 ID XXXXX-XXXXX-XXXX-XX
{API-VERSION} 要调用的 API 的版本。 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

发送 API 请求后,会收到 202 响应,指示成功,这意味着训练作业已取消。 带有用于检查作业状态的 Operation-Location 标头的成功调用结果。


后续步骤