训练业务流程工作流模型
训练是模型从标记的语句进行学习的过程。 完成训练后,将能够查看模型性能。
若要训练模型,请启动训练作业。 只有已成功完成的作业才能创建模型。 训练作业将在七天后过期,此时间后将无法再检索作业详细信息。 如果成功完成训练作业并创建了模型,则作业过期不会影响该模型。 一次只能运行一个训练作业,并且无法在同一项目中启动其他作业。
处理简单项目时训练时间可能是几秒钟,达到语句最大限制时训练时间可能是几小时。
成功完成训练后,将自动触发模型评估。 评估过程首先使用经过训练的模型对测试集中的语句运行预测,并将预测结果与提供的标签进行比较(这确立了真实性的基线)。 结果将会返回,这样你便可以查看模型的性能。
先决条件
- 一个成功创建的项目,并配置了 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 标头的成功调用结果。
后续步骤