オーケストレーション ワークフロー モデルをトレーニングする
- [アーティクル]
-
-
トレーニングは、モデルがラベル付きの発話から学習するプロセスです。 トレーニングが完了した後、モデルのパフォーマンスを表示できます。
モデルをトレーニングするには、トレーニング ジョブを開始します。 正常に完了したジョブでのみモデルが作成されます。 トレーニング ジョブは、7 日後に期限切れになります。この期間を過ぎると、ジョブの詳細を取得できなくなります。 トレーニング ジョブが正常に完了し、モデルが作成されていれば、ジョブの期限切れによってモデルが影響を受けることはありません。 一度に実行できるトレーニング ジョブは 1 つのみで、同じプロジェクトで他のジョブを開始することはできません。
トレーニング時間は、単純なプロジェクトの処理のときは数秒で済みますが、発話数の上限に達したときは数時間かかります。
モデルの評価は、トレーニングが正常に完了した後に自動的にトリガーされます。 評価プロセスは、最初にトレーニング済みモデルを使用してテスト セット内の発話に対して予測を実行し、予測した結果と指定されているラベル (真実のベースラインを確立するもの) を比較します。 その結果が返されるので、モデルのパフォーマンスを確認することができます。
前提条件
詳細については、「プロジェクト開発サイクル」を参照してください。
データの分割
トレーニング プロセスを開始する前に、プロジェクト内のラベル付き発話はトレーニング用セットとテスト用セットに分割されます。 これらはそれぞれ異なる機能を提供します。
トレーニング用セットは、モデルのトレーニングに使用されます。このセットから、モデルはラベル付き発話を学習します。
テスト用セットは、トレーニング時には導入されず、評価時にのみモデルに導入されるブラインド セットです。
モデルが正常にトレーニングされた後、そのモデルを使用して、テスト用セット内の発話から予測を行うことができます。 これらの予測は、評価メトリックの計算に使用されます。
トレーニング用とテスト用の両方のセットで、すべての意図が適切に表現されているか確認することをお勧めします。
オーケストレーション ワークフローでは、データの分割方法として次の 2 つがサポートされています。
- トレーニング用データからテスト用セットを自動分割: システムにより、選択した割合に従って、タグ付けされたデータがトレーニング用セットとテスト用セットに分割されます。 推奨される分割の割合は、トレーニング用 80%、テスト用 20% です。
注意
[トレーニング用データからテスト用セットを自動分割] オプションを選択した場合、トレーニング用セットに割り当てられたデータのみが、指定された割合に従って分割されます。
- トレーニング用データとテスト用データの手動分割を使用: この方法を使用すると、ユーザーは、どの発話をどのセットに所属させるか定義できます。 この手順は、ラベル付け中にテスト用セットに発話を追加した場合にのみ使用できます。
注意
接続されていない意図のトレーニング用データセットにのみ発話を追加できます。
モデルのトレーニング
トレーニング ジョブを開始する
Language Studio 内からモデルのトレーニングを開始するには、次の手順を行います。
左側のメニューから [トレーニング ジョブ] を選択します。
上部のメニューから [Start a training job] (トレーニング ジョブの開始) を選択します。
[新しいモデルのトレーニング] を選択し、テキスト ボックスにモデル名を入力します。 また、[既存のモデルを上書きする] オプションを選択し、ドロップダウン メニューから上書きするモデルを選択することにより、既存のモデルを上書きすることもできます。 トレーニング済みモデルを上書きすると、元に戻すことはできません。ただし、新しいモデルをデプロイするまで、デプロイされているモデルには影響しません。
発話にタグ付けする際に [your project to manually split your data] (プロジェクトでデータを手動で分割する) を有効にした場合、2 つのデータ分割オプションが表示されます。
- トレーニング用データからテスト用セットを自動分割: タグ付けされた発話が、選択した割合に従ってランダムにトレーニング用セットとテスト用セットに分割されます。 既定の分割割合は、トレーニング用が 80%、テスト用が 20% です。 これらの値を変更するには、変更するセットを選択し、新しい値を入力します。
注意
[トレーニング用データからテスト用セットを自動分割] オプションを選択した場合、トレーニング用セット内の発話のみが指定された割合に従って分割されます。
- トレーニング用データとテスト用データの手動分割を使用: プロジェクトのタグ付け手順中に、各発話をトレーニング用セットまたはテスト用セットに割り当てます。
注意
[トレーニング用データとテスト用データの手動分割を使用] オプションは、タグ データ ページでテスト用セットに発話を追加する場合にのみ有効になります。 それ以外の場合は無効になります。
[トレーニング] ボタンを選択します。
注意
- 正常に完了したトレーニング ジョブでのみ、モデルが生成されます。
- トレーニングは、タグ付けされたデータのサイズに応じて、数分から数時間かかる場合があります。
- 一度に実行できるトレーニング ジョブは 1 つだけです。 実行中のジョブが完了するまで、同じプロジェクト内で他のトレーニング ジョブを開始することはできません。
次の 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.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 |
EmailApp |
{API-VERSION} |
呼び出す API のバージョン。 |
2023-04-01 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
要求本文
要求では次のオブジェクトを使います。 トレーニングが完了すると、モデルに MyModel
という名前が付けられます。
{
"modelLabel": "{MODEL-NAME}",
"trainingMode": "standard",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"testingSplitPercentage": 20,
"trainingSplitPercentage": 80
}
}
Key |
プレースホルダー |
値 |
例 |
modelLabel |
{MODEL-NAME} |
モデルの名前。 |
Model1 |
trainingMode |
standard |
トレーニング モード。 オーケストレーションで使用できるトレーニング モードは 1 つだけであり、それは 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 を使用してトレーニング ジョブの状態を取得できます。
トレーニング ジョブの状態を取得する
一覧からトレーニング ジョブ 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.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 |
EmailApp |
{JOB-ID} |
モデルのトレーニングの状態を取得するための ID。 これは、トレーニング ジョブを送信したときに受け取った location ヘッダー値にあります。 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出す API のバージョン。 |
2023-04-01 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答を受け取ります。 [status](状態) パラメーターが [succeeded](成功) に変更されるまで、このエンドポイントのポーリングを続けます。
{
"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 |
トレーニング ジョブのキャンセル
Language Studio内からトレーニング ジョブをキャンセルするには、[モデルのトレーニング] ページに移動します。 キャンセルするトレーニング ジョブを選択し、上部のメニューから [キャンセル] を選択します。
トレーニングをキャンセルするには、次の 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.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 |
EmailApp |
{JOB-ID} |
これは、トレーニング ジョブ ID です |
XXXXX-XXXXX-XXXX-XX |
{API-VERSION} |
呼び出す API のバージョン。 |
2023-04-01 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、成功を示す 202 応答を受け取ります。これは、トレーニング ジョブがキャンセルされたことを意味します。 呼び出しが成功すると、ジョブの状態を確認するために使用する Operation-Location ヘッダーが返されます。
次の手順