カスタム NER モデルのバックアップと回復

言語リソースを作成するときに、それを作成するリージョンを指定します。 それ以降、リソースとそれに関連するすべての操作が、指定された Azure サーバー リージョンで実行されます。 リージョン全体に影響が及ぶネットワークの問題が発生することはまれですが、まったくないわけではありません。 ソリューションを常に使用できるようにする必要がある場合は、別のリージョンにフェールオーバーするように設計する必要があります。 これには、リージョンごとに 2 つの Azure 言語リソースと、リージョン間でのカスタム モデルの同期が必要です。

アプリまたはビジネスがカスタム NER モデルの使用に依存している場合は、プロジェクトのレプリカを、サポートされている追加のリージョンに作成することをお勧めします。 リージョンの機能停止が発生した場合は、プロジェクトをレプリケートした他のフェールオーバー リージョン内のモデルにアクセスできるようになります。

プロジェクトのレプリケートとは、プロジェクトのメタデータとアセットをエクスポートし、新しいプロジェクトにインポートすることを意味します。 これにより、プロジェクト設定とタグ付けされたデータのコピーだけが作成されます。 予測 API で使用するには、モデルをトレーニングしてデプロイする必要があります。

この記事では、エクスポートおよびインポート API を使用して、サポートされている別々の地理的リージョンにあるリソース間でプロジェクトをレプリケートする方法、プロジェクトの同期を維持するガイダンス、およびランタイムの使用に必要な変更について説明します。

前提条件

  • 別々の Azure リージョン内の 2 つの Azure 言語リソース。 リソースを作成して、Azure ストレージ アカウントに接続します。 両方の言語リソースを同じストレージ アカウントに接続することをお勧めしますが、これにより、プロジェクトをインポートして、モデルをトレーニングするときに、待機時間が若干長くなる可能性があります。

リソース キー エンドポイントを取得する

次の手順に従って、プライマリ リソースとセカンダリ リソースのキーとエンドポイントを取得します。 これらは、次のステップで使用します。

  1. Azure portal でリソースの概要ページに移動します

  2. 左側のメニューで [キーとエンドポイント] を選びます。 API 要求のエンドポイントとキーを使います

    A screenshot showing the key and endpoint page in the Azure portal

ヒント

プライマリ リソースとセカンダリ リソースの両方のキーとエンドポイントをメモしておきます。 これらの値を使用して、{PRIMARY-ENDPOINT}{PRIMARY-RESOURCE-KEY}{SECONDARY-ENDPOINT}、および {SECONDARY-RESOURCE-KEY} の各プレースホルダーを置き換えます。 また、プロジェクト名、モデル名、およびデプロイ名もメモしておきます。 これらの値を使用して、{PROJECT-NAME}{MODEL-NAME}、および {DEPLOYMENT-NAME} の各プレースホルダーを置き換えます。

プライマリ プロジェクト アセットをエクスポートする

まず、プライマリ リソース内のプロジェクトからプロジェクト アセットをエクスポートします。

エクスポート ジョブを送信する

次の要求のプレースホルダーを、最初の手順で取得した {PRIMARY-ENDPOINT}{PRIMARY-RESOURCE-KEY} に置き換えます。

プロジェクトをエクスポートするには、次の URL、ヘッダー、JSON 本文を使って POST 要求を作成します。

要求 URL

API 要求を作るときは、次の URL を使います。 次のプレースホルダーの値を実際の値に置き換えてください。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:export?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}
プレースホルダー
{ENDPOINT} API 要求を認証するためのエンドポイント。 https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} プロジェクトの名前。 この値は、大文字と小文字が区別されます。 MyProject
{API-VERSION} 呼び出す API のバージョン。 ここで参照される値は、リリース済みの最新のモデル バージョンです。 2022-05-01

ヘッダー

要求を認証するには、次のヘッダーを使います。

Key
Ocp-Apim-Subscription-Key リソースへのキー。 API 要求の認証に使われます。

本文

すべてのアセットをエクスポートするように指定した要求本文内で次の JSON を使用します。

{
  "assetsToExport": ["*"]
}

API 要求を送信すると、ジョブが正しく送信されたことを示す 202 応答を受け取ります。 応答ヘッダーで、operation-location の値を抽出します。 それは次のように書式設定されています。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/export/jobs/{JOB-ID}?api-version={API-VERSION}

この操作は非同期であるため、{JOB-ID} を使って要求が識別されます。 この URL を使用して、エクスポート ジョブの状態を取得します。

エクスポート ジョブの状態を取得する

次の要求のプレースホルダーを、最初の手順で取得した {PRIMARY-ENDPOINT}{PRIMARY-RESOURCE-KEY} に置き換えます。

次の GET 要求を使用して、プロジェクト資産のエクスポートの状態を取得します。 次のプレースホルダーの値を実際の値に置き換えてください。

要求 URL

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/export/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 要求の認証に使われます。

応答本文

{
  "resultUrl": "{RESULT-URL}",
  "jobId": "string",
  "createdDateTime": "2021-10-19T23:24:41.572Z",
  "lastUpdatedDateTime": "2021-10-19T23:24:41.572Z",
  "expirationDateTime": "2021-10-19T23:24:41.572Z",
  "status": "unknown",
  "errors": [
    {
      "code": "unknown",
      "message": "string"
    }
  ]
}

本文内の resultUrl キーの URL を使用して、このジョブからエクスポートされたアセットを表示します。

エクスポート結果を取得する

前のステップで受け取った {RESULT-URL} を使用して GET 要求を送信し、エクスポート ジョブの結果を表示します。

ヘッダー

要求を認証するには、次のヘッダーを使います。

Key
Ocp-Apim-Subscription-Key リソースへのキー。 API 要求の認証に使われます。

次のインポート ジョブの本文として使用するため、応答本文をコピーします。

新しいプロジェクトにインポートする

ここでは、先に進んで、エクスポートしたプロジェクト アセットをセカンダリ リージョン内の新しいプロジェクトにインポートし、レプリケートできるようにします。

インポート ジョブを送信する

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

ラベル ファイルをインポートするには、次の URL、ヘッダー、JSON 本文を使って POST 要求を送信します。 ラベル ファイルが、許容される形式に従っていることを確認してください。

同じ名前のプロジェクトが既に存在する場合は、そのプロジェクトのデータを置き換えます。

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?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 要求の認証に使われます。

Body

要求では次の JSON を使います。 次のプレースホルダーの値を実際の値に置き換えてください。

{
    "projectFileVersion": "{API-VERSION}",
    "stringIndexType": "Utf16CodeUnit",
    "metadata": {
        "projectName": "{PROJECT-NAME}",
        "projectKind": "CustomEntityRecognition",
        "description": "Trying out custom NER",
        "language": "{LANGUAGE-CODE}",
        "multilingual": true,
        "storageInputContainerName": "{CONTAINER-NAME}",
        "settings": {}
    },
    "assets": {
    "projectKind": "CustomEntityRecognition",
        "entities": [
            {
                "category": "Entity1"
            },
            {
                "category": "Entity2"
            }
        ],
        "documents": [
            {
                "location": "{DOCUMENT-NAME}",
                "language": "{LANGUAGE-CODE}",
                "dataset": "{DATASET}",
                "entities": [
                    {
                        "regionOffset": 0,
                        "regionLength": 500,
                        "labels": [
                            {
                                "category": "Entity1",
                                "offset": 25,
                                "length": 10
                            },
                            {
                                "category": "Entity2",
                                "offset": 120,
                                "length": 8
                            }
                        ]
                    }
                ]
            },
            {
                "location": "{DOCUMENT-NAME}",
                "language": "{LANGUAGE-CODE}",
                "dataset": "{DATASET}",
                "entities": [
                    {
                        "regionOffset": 0,
                        "regionLength": 100,
                        "labels": [
                            {
                                "category": "Entity2",
                                "offset": 20,
                                "length": 5
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
Key プレースホルダー
api-version {API-VERSION} 呼び出している API のバージョン。 ここで使用するバージョンは、URL 内と同じ API バージョンである必要があります。 その他の利用可能な API バージョンの詳細を確認する 2022-03-01-preview
projectName {PROJECT-NAME} プロジェクトの名前。 この値は、大文字と小文字が区別されます。 myProject
projectKind CustomEntityRecognition プロジェクトの種類。 CustomEntityRecognition
language {LANGUAGE-CODE} プロジェクトで使用されるドキュメントの言語コードを指定する文字列。 プロジェクトが多言語プロジェクトの場合は、多くのドキュメントで使用されている言語コードを選択します。 en-us
multilingual true データセットに複数の言語のドキュメントを含め、モデルをデプロイするときに、サポートされている任意の言語 (トレーニング ドキュメントに含まれているとは限りません) でモデルにクエリを実行できるブール値です。 多言語サポートの詳細については、「言語サポート」を参照してください。 true
storageInputContainerName {CONTAINER-NAME} ドキュメントをアップロードした Azure ストレージ コンテナーの名前。 myContainer
entities プロジェクト内にあるすべてのエンティティ型を含めた配列。 これらは、ドキュメントから抽出されるエンティティ型です。
documents プロジェクト内のすべてのドキュメントと、各ドキュメント内でラベル付けされたエンティティのリストを含む配列。 []
location {DOCUMENT-NAME} ストレージ コンテナー内のドキュメントの場所。 すべてのドキュメントはコンテナーのルートに含まれているので、これはドキュメント名にする必要があります。 doc1.txt
dataset {DATASET} トレーニング前に分割されるときにこのファイルが移動するテスト セット。 データを分割する方法の詳細については、「モデルをトレーニングする方法」を参照してください。 このフィールドで使用できる値は Train および Test です。 Train

API 要求を送信すると、ジョブが正しく送信されたことを示す 202 応答を受け取ります。 応答ヘッダーで、operation-location の値を抽出します。 それは次のように書式設定されています。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}

この操作は非同期であるため、{JOB-ID} を使って要求が識別されます。 この URL を使用してインポート ジョブの状態を取得します。

この要求で考えられるエラー シナリオ:

  • 選択されたリソースに、ストレージ アカウントに対する適切なアクセス許可がありません。
  • 指定された storageInputContainerName が存在しません。
  • 無効な言語コードが使用されているか、言語コードの種類が文字列でない場合。
  • multilingual 値は文字列であり、ブール値ではありません。

インポート ジョブの状態を取得する

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

次の GET 要求を使用して、プロジェクトのインポートの状態を取得します。 次のプレースホルダーの値を実際の値に置き換えてください。

要求 URL

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/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 要求の認証に使われます。

モデルをトレーニングする

プロジェクトをインポートすると、プロジェクトのアセットとメタデータ、およびアセットのみがコピーされます。 引き続きモデルをトレーニングする必要があります。これにより、アカウントに対する使用が発生します。

トレーニング ジョブの送信

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

トレーニング ジョブを送信するには、次の 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

注意

trainingSplitPercentagetestingSplitPercentage は、Kindpercentage に設定されている場合にのみ必要であり、両方の割合の合計は 100 に等しくなる必要があります。

API 要求を送信すると、ジョブが正しく送信されたことを示す 202 応答を受け取ります。 応答ヘッダーで、location の値を抽出します。 それは次のように書式設定されています。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}

この操作は非同期であるため、{JOB-ID} を使って要求が識別されます。 この URL を使用してトレーニングの状態を取得できます。

トレーニング状態の取得

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

モデルのトレーニングの進行状況を表す状態を取得するには、次の 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"
}

モデルをデプロイする

これは、トレーニング済みのモデルをランタイム予測 API を介してフォームに使用できるようにするための手順です。

ヒント

メンテナンスを容易にし、システムへの変更を最小限に抑えてトラフィックのリダイレクトを処理できるように、プライマリ プロジェクトと同じデプロイ名を使用します。

デプロイ ジョブを送信する

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

デプロイ ジョブを送信するには、次の URL、ヘッダー、JSON 本文を使って PUT 要求を送信します。 次のプレースホルダーの値を実際の値に置き換えてください。

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/deployments/{deploymentName}?api-version={API-VERSION}
プレースホルダー
{ENDPOINT} API 要求を認証するためのエンドポイント。 https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} プロジェクトの名前。 この値は、大文字と小文字が区別されます。 myProject
{DEPLOYMENT-NAME} デプロイの名前。 この値は、大文字と小文字が区別されます。 staging
{API-VERSION} 呼び出している API のバージョン。 ここで参照される値は、リリース済みの最新バージョン用です。 使用可能な他の API バージョンの詳細については、モデルのライフサイクルに関するページを参照してください。 2022-05-01

ヘッダー

要求を認証するには、次のヘッダーを使います。

Key
Ocp-Apim-Subscription-Key リソースへのキー。 API 要求の認証に使われます。

要求本文

要求の本文で次の JSON を使います。 デプロイに割り当てるモデルの名前を使います。

{
  "trainedModelLabel": "{MODEL-NAME}"
}
Key プレースホルダー
trainedModelLabel {MODEL-NAME} デプロイに割り当てられるモデル名。 正常にトレーニングされたモデルのみ割り当てることができます。 この値は、大文字と小文字が区別されます。 myModel

API 要求を送信すると、ジョブが正しく送信されたことを示す 202 応答を受け取ります。 応答ヘッダーで、operation-location の値を抽出します。 それは次のように書式設定されています。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}

この操作は非同期であるため、{JOB-ID} を使って要求が識別されます。 この URL を使用してデプロイの状態を取得できます。

デプロイの状態を取得する

次の要求のプレースホルダーを、最初の手順で取得した {SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} に置き換えます。

デプロイ ジョブの状態を照会するには、次の GET 要求を使います。 前のステップで取得した URL を使うことも、下のプレースホルダーの値を実際の値に置き換えることもできます。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
プレースホルダー
{ENDPOINT} API 要求を認証するためのエンドポイント。 https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} プロジェクトの名前。 この値は、大文字と小文字が区別されます。 myProject
{DEPLOYMENT-NAME} デプロイの名前。 この値は、大文字と小文字が区別されます。 staging
{JOB-ID} モデルのトレーニングの状態を取得するための ID。 これは、前のステップで受け取った location ヘッダーの値に含まれています。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} 呼び出している API のバージョン。 ここで参照される値は、リリース済みの最新バージョン用です。 使用可能な他の API バージョンの詳細については、モデルのライフサイクルに関するページを参照してください。 2022-05-01

ヘッダー

要求を認証するには、次のヘッダーを使います。

Key
Ocp-Apim-Subscription-Key リソースへのキー。 API 要求の認証に使われます。

応答本文

要求を送信すると、次の応答を受け取ります。 [status](状態) パラメーターが [succeeded](成功) に変更されるまで、このエンドポイントのポーリングを続けます。 要求の成功を示す 200 コードを取得します。

{
    "jobId":"{JOB-ID}",
    "createdDateTime":"{CREATED-TIME}",
    "lastUpdatedDateTime":"{UPDATED-TIME}",
    "expirationDateTime":"{EXPIRATION-TIME}",
    "status":"running"
}

ランタイムの呼び出しの変更点

システム内で、ランタイム予測 API を呼び出すステップで、送信タスク API から返された応答コードを確認します。 要求の送信中に一貫性のある障害が観察される場合は、プライマリ リージョンで機能停止が発生している可能性があります。 1 回だけの障害は機能停止を意味しているわけではなく、一時的な問題である可能性があります。 作成したセカンダリ リソースを介してジョブの送信を再試行します。 2 回目の要求では、{SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} を使用します。上記手順に従った場合、{PROJECT-NAME}{DEPLOYMENT-NAME} は同じになるため、要求本文を変更する必要はありません。

セカンダリ リソースの使用に戻した場合は、モデルがデプロイされているリージョンの違いにより、待機時間がわずかに増加します。

プロジェクトが同期しているかどうかを確認する

両方のプロジェクトの鮮度を維持することが、プロセスの重要な部分です。 プライマリ プロジェクトに対して更新が行われたかどうかを頻繁に確認して、それらをセカンダリ プロジェクトに移動できるようにします。 これにより、プライマリ リージョンで障害が発生し、セカンダリ リージョンに移動する場合は、最新の更新プログラムが既に含まれているため、同様のモデル パフォーマンスが期待されます。 プロジェクトが同期中の場合、チェックの頻度の設定は重要な選択です。 セカンダリ モデル内のデータの鮮度を保証するために、このチェックを毎日実行することをお勧めします。

プロジェクトの詳細を取得する

次の URL を使用してプロジェクトの詳細を取得します。本文で返されるキーの 1 つは、プロジェクトの最終変更日を示します。 次の手順を 2 回繰り返します。1 回はプライマリ プロジェクト用、もう 1 回はセカンダリ プロジェクトに用です。返された両方のタイムスタンプを比較して、それらの同期が失われていないか確認します。

次の GET 要求を使用して、プロジェクトの詳細を取得します。 次のプレースホルダーの値を実際の値に置き換えてください。

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?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 要求の認証に使われます。

応答本文

    {
        "createdDateTime": "2021-10-19T23:24:41.572Z",
        "lastModifiedDateTime": "2021-10-19T23:24:41.572Z",
        "lastTrainedDateTime": "2021-10-19T23:24:41.572Z",
        "lastDeployedDateTime": "2021-10-19T23:24:41.572Z",
        "projectKind": "CustomEntityRecognition",
        "storageInputContainerName": "{CONTAINER-NAME}",
        "projectName": "{PROJECT-NAME}",
        "multilingual": false,
        "description": "Project description",
        "language": "{LANGUAGE-CODE}"
    }

{SECONDARY-ENDPOINT}{SECONDARY-RESOURCE-KEY} を使用して、レプリケートしたプロジェクトに対して同じ手順を繰り返します。 両方のプロジェクトから返された lastModifiedDateTime を比較します。 プライマリ プロジェクトがセカンダリ プロジェクトより早く変更された場合は、エクスポートインポートトレーニング、およびデプロイの手順を繰り返す必要があります。

次の手順

この記事では、エクスポート API とインポート API を使用して、プロジェクトを他のリージョン内のセカンダリ言語リソースにレプリケートする方法について説明しました。 次は、API リファレンス ドキュメントを参照して、オーサリング API を使用して他にできることを確認してください。