カスタム テキスト分類モデルをトレーニングする方法
- [アーティクル]
-
-
トレーニングは、モデルがラベル付けされたデータから学習するプロセスです。 トレーニングが完了した後、モデルのパフォーマンスを表示して、モデルを改善する必要があるかどうかを判断できます。
モデルをトレーニングするには、トレーニング ジョブを開始します。 正常に完了したジョブでのみ、使用可能なモデルが作成されます。 トレーニング ジョブは 7 日後に有効期限が切れます。 この期間が経過すると、ジョブの詳細を取得できなくなります。 トレーニング ジョブが正常に完了し、モデルが作成されていれば、ジョブの期限切れによってモデルが影響を受けることはありません。 一度に実行できるトレーニング ジョブは 1 つのみで、同じプロジェクトで他のジョブを開始することはできません。
トレーニング時間は、数少ないドキュメントを処理する場合は数分で済みますが、データセットのサイズとスキーマの複雑さによっては最大で数時間かかる場合もあります。
前提条件
モデルをトレーニングする前に、次のものが必要です。
詳細については、「プロジェクト開発サイクル」を参照してください。
データの分割
トレーニング プロセスを開始する前に、プロジェクト内のラベル付けされたドキュメントはトレーニング用セットとテスト用セットに分割されます。 これらはそれぞれ異なる機能を提供します。
トレーニング用セットは、モデルのトレーニングに使用されます。モデルは、このセットを基に、各ドキュメントに割り当てられた 1 つまたは複数のクラスを学習します。
テスト用セットは、トレーニング中ではなく評価中にのみ導入されるブラインド セットです。
モデルのトレーニングが正常に完了すると、そのモデルを使用してテスト用セットのドキュメントから予測が行われます。 これらの予測に基づいて、モデルの 評価メトリックが計算されます。
すべてのクラスが、トレーニング用とテスト用の両方のセットで適切に表現されていることを確認することをお勧めします。
カスタム テキスト分類では、データの分割方法として次の 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
}
}
Key |
プレースホルダー |
値 |
例 |
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 でトレーニング ジョブをキャンセルするには、[トレーニング ジョブ] ページに移動します。 キャンセルするトレーニング ジョブを選択し、上部のメニューから [キャンセル] を選択します。
トレーニングをキャンセルするには、次の 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 応答が返されます。
次の手順
トレーニングが完了した後、モデルのパフォーマンスを表示し、必要に応じてモデルを改善します。 モデルに問題がなければ、それをデプロイし、テキストを分類するために使うことができます。