训练是模型从标记的语句进行学习的过程。 完成训练后,将能够查看模型性能。
若要训练模型,请启动训练作业。 只有已成功完成的作业才能创建模型。 训练作业将在七天后过期,此时间后将无法再检索作业详细信息。 如果成功完成训练作业并创建了模型,则作业过期不会影响该模型。 一次只能运行一个训练作业,并且无法在同一项目中启动其他作业。
处理简单项目时训练时间可能是几秒钟,达到语句最大限制时训练时间可能是几小时。
成功完成训练后,将自动触发模型评估。 评估过程首先使用经过训练的模型对测试集中的语句运行预测,并将预测结果与提供的标签进行比较(这确立了真实性的基线)。 结果将会返回,这样你便可以查看模型的性能。
先决条件
- 一个成功创建的项目,并配置了 Azure Blob 存储帐户
 
有关详细信息,请参阅项目开发生命周期。
数据拆分
开始训练过程之前,项目中标记的语句会划分为训练集和测试集。 每个集合都有不同的功能。
训练集用于训练模型,模型通过该集学习标记的语句。
测试集是一个盲集,它不是在训练期间引入到模型的,而是在评估期间引入的。
成功训练模型后,可将其用于根据测试集中的语句进行预测。 这些预测用于计算评估指标。
建议确保所有意向在训练集和测试集中均已充分表示。
业务流程工作流支持两种数据拆分方法:
- 自动从训练数据拆分测试集:系统将根据所选百分比将标记的数据拆分为训练集和测试集。 建议的拆分百分比为 80% 用于训练,20% 用于测试。
 
注意
如果选择“自动从训练数据拆分测试集”选项,则只有分配给训练集的数据会按照提供的百分比拆分。
 
- 使用手动拆分训练和测试数据:此方法使用户能够定义语句应分别属于哪个集合。 仅当在标记期间已将语句添加到测试集时,才会启用此步骤。
 
定型模型
启动训练作业
若要在 Language Studio 中开始训练模型,请执行以下操作:
在左侧菜单中,选择“训练作业”。
 
从顶部菜单中选择“启动训练作业”。
 
然后选择“训练新模型”并在文本框中键入模型名称。 还可以通过选择“覆盖现有模型”选项并从下拉菜单中选择要覆盖的模型来覆盖现有模型。 覆盖已训练的模型是不可逆的,但这在部署新模型之前不会影响已部署的模型。
如果已使项目能够在标记语句时手动拆分数据,会看到两个数据拆分选项:
- 从训练数据自动拆分测试集:标记的语句将根据选择的百分比在训练集和测试集之间随机拆分。 默认拆分百分比为 80% 用于训练,20% 用于测试。 若要更改这些值,请选择要更改的集并键入新值。
 
注意
如果选择“自动从训练数据拆分测试集”选项,则只有训练集中的语句会按照提供的百分比拆分。
 
- 手动拆分训练和测试数据:在项目的标记步骤期间,将每个语句分配到训练集或测试集。
 
注意
只有在向标记数据页中的测试集中添加语句时,才启用“手动拆分训练和测试数据”选项。 否则,它处于禁用状态。
 
 
选择“训练”按钮。
 
注意
- 只有成功完成的训练作业才会生成模型。
 
- 训练时间从几分钟到几个小时不等,具体取决于标记数据的大小。
 
- 一次只能运行一个训练作业。 在运行的作业完成之前,无法在同一项目中启动其他训练作业。
 
 
使用以下 URL、标头和 JSON 正文创建 POST 请求以提交训练作业。
请求 URL
创建 API 请求时,请使用以下 URL。 请将以下占位符值替换为你自己的值。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
| 占位符 | 
值 | 
示例 | 
{ENDPOINT} | 
用于对 API 请求进行身份验证的终结点。 | 
https://<your-custom-subdomain>.cognitiveservices.azure.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | 
EmailApp | 
{API-VERSION} | 
要调用的 API 的版本。 | 
2023-04-01 | 
使用以下标头对请求进行身份验证。
| 键 | 
值 | 
Ocp-Apim-Subscription-Key | 
资源密钥。 用于对 API 请求进行身份验证。 | 
请求正文
在请求中使用以下对象。 完成训练后,该模型将被命名为 MyModel。
{
  "modelLabel": "{MODEL-NAME}",
  "trainingMode": "standard",
  "trainingConfigVersion": "{CONFIG-VERSION}",
  "evaluationOptions": {
    "kind": "percentage",
    "testingSplitPercentage": 20,
    "trainingSplitPercentage": 80
  }
}
| 键 | 
占位符 | 
值 | 
示例 | 
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 | 
注意
仅当 Kind 设置为 percentage 时 trainingSplitPercentage 和 testingSplitPercentage 才是必需的,并且两个百分比的总和应等于 100。
 
当你发送 API 请求后,将收到指示成功的 202 响应。 在响应头中,提取 operation-location 值。 其格式如下:
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
可以使用此 URL 获取训练作业状态。
 
获取训练作业状态
如果从列表中选择训练作业 ID,会出现一个侧窗格,可在此窗格中检查此作业的训练进度、作业状态和其他详细信息。
训练可能需要一些时间,具体取决于训练数据的大小和架构的复杂性。 可以使用以下请求持续轮询训练作业的状态,直到成功完成训练作业。
使用以下 GET 请求来获取模型在训练过程中的状态。 请将以下占位符值替换为你自己的值。
请求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
| 占位符 | 
值 | 
示例 | 
{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 | 
使用以下标头对请求进行身份验证。
| 键 | 
值 | 
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"
}
| 密钥 | 
值 | 
示例 | 
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}
| 占位符 | 
值 | 
示例 | 
{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 | 
使用以下标头对请求进行身份验证。
| 键 | 
值 | 
Ocp-Apim-Subscription-Key | 
资源密钥。 用于对 API 请求进行身份验证。 | 
发送 API 请求后,将收到指示成功的 202 响应,这意味着训练作业已取消。 带有用于检查作业状态的 Operation-Location 标头的成功调用结果。
 
后续步骤