トレーニングは、モデルがラベル付けされたデータから学習するプロセスです。 トレーニングが完了した後、モデルのパフォーマンスを表示して、モデルを改善する必要があるかどうかを判断できます。
モデルをトレーニングするには、トレーニング ジョブを開始します。モデルは、正常に完了したジョブでのみ作成されます。 トレーニング ジョブは、7 日後に期限切れになります。つまり、この期間を過ぎると、ジョブの詳細を取得できなくなります。 トレーニング ジョブが正常に完了し、モデルが作成された場合、モデルは影響を受けません。 一度に実行できるトレーニング ジョブは 1 つのみで、同じプロジェクトで他のジョブを開始することはできません。
トレーニング時間は異なります。 トレーニング時間は、扱うドキュメントが少ない場合は数分から、データセットのサイズやスキーマの複雑さに応じて数時間かかることがあります。
前提条件
- 構成済みの Azure Blob Storage アカウントで正常に作成されたプロジェクト
- ストレージ アカウントに アップロードされた テキスト データ。
- ラベルの付いたデータ
プロジェクト開発ライフサイクルを参照してください。
データの分割
トレーニング プロセスを開始する前に、プロジェクト内のラベル付けされたドキュメントはトレーニング用セットとテスト用セットに分割されます。 これらはそれぞれ異なる機能を提供します。 トレーニング セットは、モデルのトレーニングに使用されます。 これは、モデルがラベル付けされたエンティティと、エンティティとして抽出されるテキストのスパンを学習するセットです。 テスト用セットは、トレーニング時ではなく、評価時にのみモデルに導入されるブラインド セットです。 モデルのトレーニングが正常に完了すると、モデルを使用してテスト ドキュメントから予測が行われ、 評価メトリック が計算されます。 すべてのエンティティがトレーニング セットとテスト セットの両方で適切に表現されていることを確認することをお勧めします。
カスタム NER では、データの分割方法として次の 2 つがサポートされています。
- テスト セットをトレーニング データから自動的に分割する: 選択した割合に応じて、ラベル付きデータがトレーニング セットとテスト セットの間で分割されます。 推奨される分割の割合は、トレーニング用 80%、テスト用 20% です。
Note
[ トレーニング データからテスト セットを自動的に分割 する] オプションを選択した場合、トレーニング セットに割り当てられたデータのみが、指定された割合に従って分割されます。
- トレーニング用データとテスト用データの手動分割を使用: この方法を使用すると、ユーザーは、ラベル付けされたドキュメントがどちらのセットに属するかを定義できます。 この手順は、 データのラベル付け中にテスト セットにドキュメントを追加した場合にのみ有効になります。
モデルをトレーニングする (REST API)
データにラベルを付け、データ分割設定を構成したら、REST API を使用してカスタム NER モデルのトレーニングを開始できます。 トレーニング プロセスでは、トレーニング ジョブ要求を送信し、完了するまでの進行状況を監視します。 このセクションでは、トレーニングを開始し、トレーニング ジョブの状態を確認するために必要な API 呼び出しについて説明します。
トレーニング ジョブを開始する
次の 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 のバージョン。 参照される値は、リリースされた最新バージョン用です。 詳細については、「モデルのライフサイクル」を参照してください。 | 2022-05-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
| キー | 値 |
|---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
要求本文
要求本文では次の JSON を使います。 トレーニングが完了すると、モデルは {MODEL-NAME} として提供されます。 成功したトレーニング ジョブのみがモデルを生成します。
{
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"trainingSplitPercentage": 80,
"testingSplitPercentage": 20
}
}
| キー | プレースホルダー | 値 | 例 |
|---|---|---|---|
| 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 |
Note
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 を使用してトレーニングの状態を取得できます。
トレーニングジョブのステータスを取得する (REST API)
トレーニング データのサイズやスキーマの複雑さによっては、トレーニングに時間がかかる場合があります。 次の要求を使用すると、トレーニング ジョブが正常に完了するまでその状態をポーリングし続けることができます。
モデルのトレーニングの進行状況を表す状態を取得するには、次の 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"
}
トレーニングジョブをキャンセルする(REST API)
現在進行中のトレーニング ジョブを停止する必要がある場合は、REST API を使用して取り消すことができます。 トレーニング ジョブの取り消しは、データまたは構成に関する問題を検出し、トレーニング プロセスを再開する前に修正を行う場合に役立ちます。
トレーニングをキャンセルするには、次の 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 応答が返されます。
次のステップ
トレーニングが完了した後、モデルのパフォーマンスを表示し、必要に応じてモデルを改善することができます。 モデルに問題がなければ、それをデプロイし、テキストからエンティティを抽出するために使うことができます。