トレーニングは、モデルがラベル付けされたデータから学習するプロセスです。 トレーニングが完了したら、 モデルのパフォーマンスを表示 して、モデルを改善する必要があるかどうかを判断できます。
モデルをトレーニングするには、トレーニング ジョブを開始します。 正常に完了したジョブでのみ、使用可能なモデルが作成されます。 トレーニング ジョブは 7 日後に有効期限が切れます。 この期間が経過すると、ジョブの詳細を取得できなくなります。 トレーニング ジョブが正常に完了し、モデルが作成された場合、ジョブの有効期限は影響を受けません。 一度に実行できるトレーニング ジョブは 1 つのみで、同じプロジェクトで他のジョブを開始することはできません。
データセットのサイズとスキーマの複雑さに応じて、トレーニング時間は数分から数時間まで異なる場合があります。
前提条件
モデルをトレーニングする前に、次のものが必要です。
プロジェクト開発ライフサイクルを参照してください。
データの分割
トレーニング プロセスを開始する前に、プロジェクト内のラベル付けされたドキュメントはトレーニング用セットとテスト用セットに分割されます。 これらはそれぞれ異なる機能を提供します。
トレーニング セットは、モデルのトレーニングで使用され、モデルは各ドキュメントに割り当てられたクラスまたはクラスを学習します。
テスト用セットは、トレーニング時ではなく、評価時にのみモデルに導入されるブラインド セットです。
モデルが正常にトレーニングされると、テスト セット内のドキュメントから予測を行うことができます。 これらの予測に基づいて、モデルの 評価メトリック が計算されます。
すべてのクラスがトレーニング セットとテスト セットの両方で適切に表現されていることを確認することをお勧めします。
カスタム テキスト分類では、データの分割方法として次の 2 つがサポートされています。
-
テスト セットをトレーニング データから自動的に分割する: 選択した割合に応じて、ラベル付きデータがトレーニング セットとテスト セットの間で分割されます。 システムは、トレーニング セット内のすべてのクラスの表現を試みます。 推奨される分割の割合は、トレーニング用 80%、テスト用 20% です。
Note
[ トレーニング データからテスト セットを自動的に分割 する] オプションを選択した場合、トレーニング セットに割り当てられたデータのみが、指定された割合に従って分割されます。
-
トレーニング用データとテスト用データの手動分割を使用: この方法を使用すると、ユーザーは、ラベル付けされたドキュメントがどちらのセットに属するかを定義できます。 この手順は、 データのラベル付け中にテスト セットにドキュメントを追加した場合にのみ有効になります。
モデルのトレーニング
Language Studio 内からモデルのトレーニングを開始するには:
左側のメニューから [トレーニング ジョブ] を選びます。
上部のメニューから [トレーニング ジョブの開始] を選択します。
[新しいモデルのトレーニング] を選択し、テキスト ボックスにモデル名を入力します。 また、[既存のモデルを上書きする] オプションを選択し、ドロップダウン メニューから上書きするモデルを選択することにより、既存のモデルを上書きすることもできます。 トレーニング済みモデルを上書きすると、元に戻すことはできません。ただし、新しいモデルをデプロイするまで、デプロイされているモデルには影響しません。
データの分割方法を選択します。
[トレーニング用データからテスト用セットを自動分割] を選択できます。その場合、システムにより、指定した割合に従って、ラベル付けされたデータがトレーニング用セットとテスト用セットに分割されます。 または、 トレーニング データとテスト データを手動で分割して使用することもできます。このオプションは、 データのラベル付け中にテスト セットにドキュメントを追加した場合にのみ有効になります。 データ分割の詳細については、モデルのトレーニング方法に関するセクションを参照してください。
[トレーニング] ボタンを選択します。
一覧からトレーニング ジョブ ID を選択すると、サイド ペインが表示され、そのジョブの [トレーニングの進行状況]、[ジョブの状態]、その他の詳細を確認できます。
Note
- 正常に完了したトレーニング ジョブでのみ、モデルが生成されます。
- モデルのトレーニングには、ラベル付けされたデータのサイズに基づいて、数分から数時間かかる場合があります。
- 一度に実行できるトレーニング ジョブは 1 つだけです。 実行中のジョブが完了するまで、同じプロジェクト内で他のトレーニング ジョブを開始することはできません。
トレーニング ジョブを開始する
次の URL、ヘッダー、JSON 本文を使って POST 要求を送信し、トレーニング ジョブを送信します。 プレースホルダーの値をあなた自身の値に置き換えてください。
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
| プレースホルダー |
値 |
例 |
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 |
https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 |
myProject |
{API-VERSION} |
呼び出している API のバージョン。 参照される値は、リリースされた最新バージョン用です。 その他の利用可能な API バージョンの詳細を確認する |
2022-05-01 |
要求を認証するには、次のヘッダーを使います。
| キー |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
要求本文
要求本文では次の JSON を使います。 トレーニングが完了すると、モデルに {MODEL-NAME} が与えられます。 正常に完了したトレーニング ジョブでのみ、モデルが生成されます。
{
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"trainingSplitPercentage": 80,
"testingSplitPercentage": 20
}
}
| Key |
プレースホルダー |
値 |
例 |
| modelLabel |
{MODEL-NAME} |
正常にトレーニングされた後にモデルに割り当てられるモデル名。 |
myModel |
| trainingConfigVersion |
{CONFIG-VERSION} |
これは、モデルのトレーニングに使用されるモデル バージョン です。 |
2022-05-01 |
| evaluationOptions |
|
トレーニング セットとテスト セットの間でデータを分割するオプション。 |
{} |
| kind |
percentage |
Split メソッド。 指定できる値は percentage または manual です。 詳細については、モデルのトレーニング方法に関するセクションを参照してください。 |
percentage |
| trainingSplitPercentage |
80 |
トレーニング セットに含めるタグ付きデータの割合。 推奨値は 80 です。 |
80 |
| testingSplitPercentage |
20 |
テスト セットに含めるタグ付きデータの割合。 推奨値は 20 です。 |
20 |
注
trainingSplitPercentage と testingSplitPercentage は、Kind が percentage に設定されている場合にのみ必要であり、両方のパーセンテージの合計は 100 になる必要があります。
API 要求を送信すると、ジョブが正しく送信されたことを示す 202 応答を受け取ります。 応答ヘッダーで、次のように書式設定された location 値を抽出します。
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
この操作は非同期であるため、{JOB ID} を使って要求が識別されます。 この URL を使用してトレーニングの状態を取得できます。
トレーニング ジョブの状態を取得する
トレーニング データのサイズとスキーマの複雑さによっては、トレーニングに時間がかかる場合があります。 次の要求を使用して、トレーニング ジョブが正常に完了するまで、その状態をポーリングし続けることができます。
モデルのトレーニングの進行状況を表す状態を取得するには、次の GET 要求を使用します。 プレースホルダーの値をあなた自身の値に置き換えてください。
要求 URL
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
| プレースホルダー |
値 |
例 |
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 |
https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 |
myProject |
{JOB-ID} |
モデルのトレーニングの状態を取得するための ID。 この値は、前のステップで受け取った location ヘッダーの値に含まれています。 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
呼び出している API のバージョン。 参照される値は、リリースされた最新バージョン用です。 詳細については、「モデルのライフサイクル」を参照してください。 |
2022-05-01 |
要求を認証するには、次のヘッダーを使います。
| キー |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答が返されます。
{
"result": {
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{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": "{JOB-ID}",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
トレーニング ジョブのキャンセル
Language Studio でトレーニング ジョブをキャンセルするには、[トレーニング ジョブ] ページに移動します。 キャンセルするトレーニング ジョブを選び、上部のメニューから [キャンセル] を選びます。
トレーニングをキャンセルするには、次の URL、ヘッダー、JSON 本文を使用して POST 要求を作成します。
要求 URL
API 要求を作るときは、次の URL を使います。 プレースホルダーの値をあなた自身の値に置き換えてください。
{Endpoint}/language/authoring/analyze-text/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 のバージョン。 参照される値は、リリースされた最新のモデル バージョン用です。 |
2022-05-01 |
要求を認証するには、次のヘッダーを使います。
| キー |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、ジョブの状態を確認するために使用される Operation-Location ヘッダーを含む 202 応答が返されます。
次のステップ
トレーニングが完了すると、必要に応じて モデルのパフォーマンスを表示 して、必要に応じてモデルを改善できます。 モデルに問題がなければ、それをデプロイし、テキストを分類するために使うことができます。