训练业务流程工作流模型

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

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

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

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

先决条件

请参阅 项目开发生命周期

数据拆分

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

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

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

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

  • 根据所选的百分比,自动从训练数据拆分测试集:系统会根据所选的百分比在训练集和测试集之间拆分标记的数据。 建议的拆分百分比为 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 拆分方法。 可能的值为 percentagemanual。 有关详细信息,请参阅如何训练模型 percentage
trainingSplitPercentage 80 要包含在训练集中的已标记数据的百分比。 建议的值为 80 80
testingSplitPercentage 20 要包含在测试集中的已标记数据的百分比。 建议的值为 20 20

注释

仅当 trainingSplitPercentage 设置为 testingSplitPercentageKindpercentage 才是必需的,并且两个百分比的总和应等于 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 标头的成功调用结果。


后续步骤