カスタム Text Analytics for Health モデルをトレーニングする
- [アーティクル]
-
-
トレーニングは、モデルがラベル付けされたデータから学習するプロセスです。 トレーニングが完了した後、モデルのパフォーマンスを表示して、モデルを改善する必要があるかどうかを判断できます。
モデルをトレーニングするには、トレーニング ジョブを開始します。モデルは、正常に完了したジョブでのみ作成されます。 トレーニング ジョブは、7 日後に期限切れになります。つまり、この期間を過ぎると、ジョブの詳細を取得できなくなります。 トレーニング ジョブが正常に完了し、モデルが作成されていれば、モデルが影響を受けることはありません。 一度に実行できるトレーニング ジョブは 1 つのみで、同じプロジェクトで他のジョブを開始することはできません。
トレーニング時間は、数少ないドキュメントを処理する場合は数分で済みますが、データセットのサイズとスキーマの複雑さによっては最大で数時間かかる場合もあります。
前提条件
詳細については、「プロジェクト開発サイクル」を参照してください。
データの分割
トレーニング プロセスを開始する前に、プロジェクト内のラベル付けされたドキュメントはトレーニング用セットとテスト用セットに分割されます。 これらはそれぞれ異なる機能を提供します。
トレーニング用セットは、モデルのトレーニングに使用されます。モデルは、このセットを基に、ラベル付けされたエンティティと、エンティティとして抽出するテキストのスパンを学習します。
テスト用セットは、トレーニング中ではなく評価中にのみ導入されるブラインド セットです。
モデルのトレーニングが正常に完了すると、そのモデルを使用してテスト用セットのドキュメントから予測が行われ、それらの予測に基づいて評価メトリックが計算されます。 モデルのトレーニングと評価は、学習済みコンポーネントを含む新しく定義されたエンティティに対してのみ行われます。したがって、Text Analytics for Health エンティティは、事前構築済みのコンポーネントを含むエンティティであるため、モデルのトレーニングと評価から除外されます。 すべてのラベル付きエンティティが、トレーニング用とテスト用の両方のセットで適切に表現されていることを確認するようお勧めします。
カスタム Text Analytics for Health では、データの分割方法として次の 2 つがサポートされています。
- トレーニング用データからテスト用セットを自動分割: システムにより、選択した割合に従って、ラベル付けされたデータがトレーニング用セットとテスト用セットに分割されます。 推奨される分割の割合は、トレーニング用 80%、テスト用 20% です。
注意
[トレーニング用データからテスト用セットを自動分割] オプションを選択した場合、トレーニング用セットに割り当てられたデータのみが、指定された割合に従って分割されます。
- トレーニング用データとテスト用データの手動分割を使用: この方法を使用すると、ユーザーは、ラベル付けされたドキュメントがどちらのセットに属するかを定義できます。 この手順は、データのラベル付け中にドキュメントをテスト用セットに追加した場合にのみ有効になります。
モデルのトレーニング
Language Studio 内からモデルのトレーニングを開始するには、次の手順を行います。
左側のメニューから [トレーニング ジョブ] を選択します。
上部のメニューから [Start a training job] (トレーニング ジョブの開始) を選択します。
[新しいモデルのトレーニング] を選択し、テキスト ボックスにモデル名を入力します。 また、[既存のモデルを上書きする] オプションを選択し、ドロップダウン メニューから上書きするモデルを選択することにより、既存のモデルを上書きすることもできます。 トレーニング済みモデルを上書きすると、元に戻すことはできません。ただし、新しいモデルをデプロイするまで、デプロイされているモデルには影響しません。
データの分割方法を選択します。 [トレーニング用データからテスト用セットを自動的に分割する] を選択できます。その場合、システムは、指定された割合に従って、ラベル付けされたデータをトレーニング用セットとテスト用セットに分割します。 または、[トレーニングおよびテスト データの手動分割を使用する] を選択することもできます。このオプションは、ドキュメントをテスト用セットに追加した場合にのみ有効になります。 データの分割の詳細については、データのラベル付けに関する記事とモデルをトレーニングする方法に関するセクションを参照してください。
[トレーニング] ボタンを選択します。
一覧からトレーニング ジョブ ID を選択すると、サイド ペインが表示され、そのジョブの [トレーニングの進行状況]、[ジョブの状態]、その他の詳細を確認できます。
注意
- 正常に完了したトレーニング ジョブでのみ、モデルが生成されます。
- トレーニングは、ラベル付けされたデータのサイズに応じて、数分から数時間かかる場合があります。
- 一度に実行できるトレーニング ジョブは 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 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
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 |
分割方法。 指定できる値は 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 のバージョン。 ここで参照される値は、リリース済みの最新バージョン用です。 使用可能な他の API バージョンの詳細については、モデルのライフサイクルに関するページを参照してください。 |
2022-05-01 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
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 内からトレーニング ジョブをキャンセルするには、[Training jobs](トレーニング ジョブ) ページに移動します。 キャンセルするトレーニング ジョブを選択し、上部のメニューから [キャンセル] を選択します。
トレーニングをキャンセルするには、次の 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 |
要求を認証するには、次のヘッダーを使います。
Key |
値 |
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、ジョブの状態を確認するために使用される Operation-Location
ヘッダーを含む 202 応答が返されます。
次の手順
トレーニングが完了した後、モデルのパフォーマンスを表示し、必要に応じてモデルを改善します。 モデルに問題がなければ、それをデプロイし、テキストからエンティティを抽出するために使うことができます。