Copia de seguridad y recuperación de modelos NER personalizados

Al crear un recurso de Lenguaje, especifica una región en la que se va a crear. A partir de entonces, el recurso y todas las operaciones relacionadas con él tienen lugar en la región del servidor de Azure especificada. No suele ser habitual, aunque tampoco imposible, encontrar un problema de red que afecte a toda una región. Si la solución tiene que estar siempre disponible, debe diseñarla para conmutar por error a otra región. Esto requiere dos recursos de Azure para lenguaje en regiones diferentes y la sincronización de los modelos personalizados entre ellos.

Si la aplicación o la empresa dependen del uso de un modelo NER personalizado, se recomienda crear una réplica del proyecto en una región admitida adicional. Si se produce una interrupción regional, puede acceder al modelo en la otra región de conmutación por error en la que replicó el proyecto.

La replicación de un proyecto implica exportar los metadatos y recursos del proyecto, e importarlos en un nuevo proyecto. Con esto, solo se hace una copia de la configuración del proyecto y los datos etiquetados. Todavía tiene que entrenar e implementar los modelos para que estén disponibles para su uso con las API de predicción.

En este artículo, aprenderá a usar las API de exportación e importación para replicar el proyecto de un recurso a otro existente en diferentes regiones geográficas admitidas, obtendrá instrucciones sobre cómo mantener los proyectos sincronizados y conocerá los cambios necesarios para el consumo en tiempo de ejecución.

Prerrequisitos

  • Dos recursos de lenguaje de Azure en diferentes regiones de Azure. Cree los recursos y conéctelos a una cuenta de almacenamiento de Azure. Se recomienda conectar ambos recursos de idioma a la misma cuenta de almacenamiento, aunque esto podría introducir una latencia ligeramente mayor al importar el proyecto y entrenar un modelo.

Obtención del punto de conexión y las claves del recurso

Siga los pasos a continuación para obtener las claves y el punto de conexión de los recursos principales y secundarios. Se usarán en los pasos siguientes.

  1. Vaya a la página de información general del recurso en Azure Portal.

  2. En el menú de la izquierda, seleccione Claves y punto de conexión. Usará el punto de conexión y la clave para las solicitudes de API.

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

Sugerencia

Anote las claves y los puntos de conexión de los recursos principales y secundarios. Use estos valores para reemplazar los siguientes marcadores de posición: {PRIMARY-ENDPOINT}, {PRIMARY-RESOURCE-KEY}, {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY}. Anote también el nombre del proyecto, el nombre del modelo y el nombre de implementación. Use estos valores para reemplazar los siguientes marcadores de posición: {PROJECT-NAME}, {MODEL-NAME} y {DEPLOYMENT-NAME}.

Exportación de los recursos principales del proyecto

Para empezar, exporte los recursos del proyecto desde el proyecto en el recurso principal.

Envío del trabajo de exportación

Reemplace los marcadores de posición de la siguiente solicitud por el recurso {PRIMARY-ENDPOINT} y {PRIMARY-RESOURCE-KEY} que obtuvo en el primer paso.

Cree una solicitud POST con la dirección URL, los encabezados y el cuerpo JSON siguientes para exportar el proyecto.

URL de la solicitud

Use la siguiente dirección URL al crear la solicitud de API. Reemplace los valores de los marcadores de posición por sus propios valores.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:export?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. MyProject
{API-VERSION} La versión de la API a la que llama. El valor al que se hace referencia aquí es la versión del modelo más reciente publicada. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Cuerpo

Use el siguiente código JSON en el cuerpo de la solicitud, y especifique que quiere exportar todos los recursos.

{
  "assetsToExport": ["*"]
}

Una vez que envíe la solicitud de API, recibirá una respuesta 202 que indica que el trabajo se ha enviado correctamente. En los encabezados de respuesta, extraiga el valor operation-location. Tendrá el formato siguiente:

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

{JOB-ID} se usa para identificar la solicitud, ya que esta operación es asincrónica. Usará esta dirección URL para obtener el estado del trabajo de exportación.

Obtención del estado del trabajo de exportación

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {PRIMARY-ENDPOINT} y {PRIMARY-RESOURCE-KEY} que obtuvo en el primer paso.

Use la siguiente solicitud GET para obtener el estado de la exportación de los activos del proyecto. Reemplace los valores de los marcadores de posición por sus propios valores.

URL de la solicitud

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/export/jobs/{JOB-ID}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{JOB-ID} Id. para buscar el estado del entrenamiento del modelo. Se encuentra en el valor de encabezado location que recibió en el paso anterior. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Response body

{
  "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"
    }
  ]
}

Use la dirección URL de la clave resultUrl del cuerpo para ver los recursos exportados desde este trabajo.

Obtención de los resultados de exportación

Envíe una solicitud GET con la {RESULT-URL} que recibió en el paso anterior para ver los resultados del trabajo de exportación.

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Copie el cuerpo de la respuesta, ya que lo usará como cuerpo para el siguiente trabajo de importación.

Importación a un nuevo proyecto

Ahora, tome los recursos del proyecto exportados e impórtelos al nuevo proyecto en la región secundaria para poder replicarlo.

Envío del trabajo de importación

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Envíe una solicitud POST con la dirección URL, los encabezados y el cuerpo JSON que se incluyen a continuación para importar el archivo de etiquetas. Asegúrese de que el archivo de etiquetas siga el formato aceptado.

Si ya existe un proyecto con el mismo nombre, se reemplazan los datos de ese proyecto.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Body

Utilice el siguiente código JSON en la solicitud. Reemplace los valores de los marcadores de posición por sus propios valores.

{
    "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
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
Clave Marcador de posición Valor Ejemplo
api-version {API-VERSION} Versión de la API a la que se llama. La versión que se use aquí debe ser la misma versión de API en la dirección URL. Obtenga más información sobre otras versiones de API disponibles 2022-03-01-preview
projectName {PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
projectKind CustomEntityRecognition El tipo de proyecto. CustomEntityRecognition
language {LANGUAGE-CODE} Cadena que especifica el código de idioma de los documentos que se usan en el proyecto. Si el proyecto es un proyecto multilingüe, elija el código de idioma de la mayoría de los documentos. en-us
multilingual true Valor booleano que permite tener documentos en varios idiomas del conjunto de datos y, cuando se implementa el modelo, puede consultar el modelo en cualquier idioma admitido (no necesariamente incluido en los documentos de entrenamiento). Consulte Compatibilidad de idioma para obtener información sobre la compatibilidad multilingüe. true
storageInputContainerName {CONTAINER-NAME} Nombre del contenedor de almacenamiento de Azure donde ha cargado los documentos. myContainer
entities Matriz que contiene todos los tipos de entidad que tiene en el proyecto. Estos son los tipos de entidad que se extraerán de los documentos.
documents Matriz que contiene todos los documentos del proyecto y la lista de las entidades etiquetadas en cada documento. []
location {DOCUMENT-NAME} Ubicación de los documentos en el contenedor de almacenamiento. Puesto que todos los documentos están en la raíz del contenedor, este debe ser el nombre del documento. doc1.txt
dataset {DATASET} Conjunto de pruebas al que este archivo irá cuando se divida antes del entrenamiento. Consulte Entrenamiento de un modelo para obtener más información sobre cómo se dividen los datos. Los valores posibles que admite este campo son Train y Test. Train

Una vez que envíe la solicitud de API, recibirá una respuesta 202 que indica que el trabajo se ha enviado correctamente. En los encabezados de respuesta, extraiga el valor operation-location. Tendrá el formato siguiente:

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

{JOB-ID} se usa para identificar la solicitud, ya que esta operación es asincrónica. Usará esta dirección URL para obtener el estado del trabajo de importación.

Posibles escenarios de error de esta solicitud:

  • El recurso seleccionado no tiene los permisos adecuados para la cuenta de almacenamiento.
  • El valor de storageInputContainerName especificado no existe.
  • Se ha usado un código de idioma no válido, o el tipo de código de idioma no es una cadena.
  • El valor de multilingual es una cadena y no un valor booleano.

Obtención del estado del trabajo de importación

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Use la siguiente solicitud GET para obtener el estado de la importación del proyecto. Reemplace los valores de los marcadores de posición por sus propios valores.

URL de la solicitud

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{JOB-ID} Id. para buscar el estado del entrenamiento del modelo. Este valor se encuentra en el valor de encabezado location que recibió en el paso anterior. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Entrenamiento de un modelo

Después de importar el proyecto, solo ha copiado los recursos y los metadatos del proyecto. Todavía tiene que entrenar el modelo, por lo que la cuenta incurrirá en gastos de uso.

Envío de un trabajo de aprendizaje

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Envíe una solicitud POST mediante la dirección URL, los encabezados y el cuerpo JSON siguientes para enviar un trabajo de entrenamiento. Reemplace los valores de los marcadores de posición por sus propios valores.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Cuerpo de la solicitud

Use el siguiente código JSON en el cuerpo de la solicitud. El modelo se denominará {MODEL-NAME} una vez completado el entrenamiento. Solo los trabajos de entrenamiento correctos generarán modelos.

{
	"modelLabel": "{MODEL-NAME}",
	"trainingConfigVersion": "{CONFIG-VERSION}",
	"evaluationOptions": {
		"kind": "percentage",
		"trainingSplitPercentage": 80,
		"testingSplitPercentage": 20
	}
}
Clave Marcador de posición Valor Ejemplo
modelLabel {MODEL-NAME} Nombre que se asignará al modelo una vez entrenado correctamente. myModel
trainingConfigVersion {CONFIG-VERSION} Se trata de la versión de modelo que se usará para entrenar el modelo. 2022-05-01
evaluationOptions Opción para dividir los datos en conjuntos de entrenamiento y pruebas. {}
kind percentage Métodos de división. Los valores posibles son percentage o manual. Para más información, consulte Cómo entrenar un modelo. percentage
trainingSplitPercentage 80 Porcentaje de los datos etiquetados que se incluirán en el conjunto de entrenamiento. El valor recomendado es 80. 80
testingSplitPercentage 20 Porcentaje de los datos etiquetados que se incluirán en el conjunto de pruebas. El valor recomendado es 20. 20

Nota:

trainingSplitPercentage y testingSplitPercentage solo son necesarios si Kind está establecido en percentage y la suma de ambos porcentajes es igual a 100.

Una vez que envíe la solicitud de API, recibirá una respuesta 202 que indica que el trabajo se ha enviado correctamente. En los encabezados de respuesta, extraiga el valor location. Tendrá el formato siguiente:

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

{JOB-ID} se usa para identificar la solicitud, ya que esta operación es asincrónica. Puede usar esta dirección URL para obtener el estado del entrenamiento.

Obtención del estado del entrenamiento

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Use la siguiente solicitud GET para obtener el estado del proceso de entrenamiento del modelo. Reemplace los valores de los marcadores de posición por sus propios valores.

URL de la solicitud

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{JOB-ID} Id. para buscar el estado del entrenamiento del modelo. Este valor se encuentra en el valor de encabezado location que recibió en el paso anterior. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Cuerpo de la respuesta

Una vez que envíe la solicitud, recibirá la siguiente respuesta.

{
  "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"
}

Implementación del modelo

Este es el paso donde pone el modelo entrenado a disposición para el consumo a través de la API de predicción en tiempo de ejecución.

Sugerencia

Use el mismo nombre de implementación que el proyecto principal para facilitar el mantenimiento y realizar cambios mínimos en el sistema para controlar la redirección del tráfico.

Envío del trabajo de implementación

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Envíe una solicitud PUT mediante la dirección URL, los encabezados y el cuerpo JSON siguientes para enviar un trabajo de implementación. Reemplace los valores de los marcadores de posición por sus propios valores.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/deployments/{deploymentName}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{DEPLOYMENT-NAME} Nombre de la implementación. Este valor distingue mayúsculas de minúsculas. staging
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Cuerpo de la solicitud

Use el siguiente código JSON en el cuerpo de la solicitud. Use el nombre del modelo que se va a asignar a la implementación.

{
  "trainedModelLabel": "{MODEL-NAME}"
}
Clave Marcador de posición Valor Ejemplo
trainedModelLabel {MODEL-NAME} Nombre del modelo que se asignará a la implementación. Solo puede asignar modelos entrenados correctamente. Este valor distingue mayúsculas de minúsculas. myModel

Una vez que envíe la solicitud de API, recibirá una respuesta 202 que indica que el trabajo se ha enviado correctamente. En los encabezados de respuesta, extraiga el valor operation-location. Tendrá el formato siguiente:

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

{JOB-ID} se usa para identificar la solicitud, ya que esta operación es asincrónica. Puede usar esta dirección URL para obtener el estado de la implementación.

Obtención del estado de la implementación

Reemplace los marcadores de posición de la siguiente solicitud por los elementos {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY} que obtuvo en el primer paso.

Use la siguiente solicitud GET para consultar el estado del trabajo de implementación. Puede usar la dirección URL que recibió en el paso anterior o reemplazar los valores de los marcadores de posición siguientes por sus propios valores.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{DEPLOYMENT-NAME} Nombre de la implementación. Este valor distingue mayúsculas de minúsculas. staging
{JOB-ID} Id. para buscar el estado del entrenamiento del modelo. Se encuentra en el valor de encabezado location que recibió en el paso anterior. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Cuerpo de la respuesta

Una vez que envíe la solicitud, recibirá la siguiente respuesta. Siga sondeando este punto de conexión hasta que el parámetro status cambie a "succeeded". Debe obtener un código 200 para indicar el éxito de la solicitud.

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

Cambios en la llamada al entorno de ejecución

Dentro del sistema, en el paso en el que llama a la API de predicción en tiempo de ejecución, compruebe el código de respuesta devuelto desde la API de la tarea de envío. Si observa un error constante al enviar la solicitud, esto podría indicar una interrupción en la región primaria. Un error por única vez no significa una interrupción, puede deberse a un problema transitorio. Vuelva a intentar enviar el trabajo a través del recurso secundario que ha creado. En la segunda solicitud, use {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY}; si ha seguido los pasos anteriores, {PROJECT-NAME} y {DEPLOYMENT-NAME} serían los mismos, por lo que no se necesitan cambios en el cuerpo de la solicitud.

En caso de que vuelva a usar el recurso secundario, observará un ligero aumento de la latencia debido a la diferencia en las regiones donde se implementa el modelo.

Comprobación si los proyectos no están sincronizados

Mantener ambos proyectos actualizados es una parte importante del proceso. Tiene que comprobar con frecuencia si se han hecho actualizaciones en el proyecto principal para pasarlas al proyecto secundario. De este modo, si se produce un error en la región primaria y se traslada a la región secundaria, cabría esperar un rendimiento de modelo similar, dado que ya contiene las actualizaciones más recientes. Establecer la frecuencia de comprobación para saber si los proyectos están sincronizados es importante. Recomendamos realizar esta comprobación diariamente para garantizar la actualización de los datos en el modelo secundario.

Obtención de los detalles del proyecto

Use la siguiente dirección URL para obtener los detalles del proyecto, una de las claves devueltas en el cuerpo indica la fecha de última modificación del proyecto. Repita el siguiente paso dos veces, una para el proyecto principal y otra para el secundario, y compare la marca de tiempo devuelta en ambos para ver si no están sincronizados.

Use la siguiente solicitud GET para obtener los detalles del proyecto. Reemplace los valores de los marcadores de posición por sus propios valores.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?api-version={API-VERSION}
Marcador de posición Valor Ejemplo
{ENDPOINT} Punto de conexión para autenticar la solicitud de API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nombre del proyecto. Este valor distingue mayúsculas de minúsculas. myProject
{API-VERSION} Versión de la API a la que se llama. El valor al que se hace referencia aquí se corresponde con la versión más reciente publicada. Consulte Ciclo de vida del modelo para obtener más información sobre otras versiones de API disponibles. 2022-05-01

encabezados

Use el siguiente encabezado para autenticar la solicitud.

Clave Valor
Ocp-Apim-Subscription-Key Clave para el recurso. Se usa para autenticar las solicitudes de API.

Response body

    {
        "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}"
    }

Repita los mismos pasos para el proyecto replicado mediante {SECONDARY-ENDPOINT} y {SECONDARY-RESOURCE-KEY}. Compare el valor lastModifiedDateTime devuelto de ambos proyectos. Si el proyecto principal se modificó antes que el secundario, debe repetir los pasos de exportación, importación, entrenamiento e implementación.

Pasos siguientes

En este artículo, ha aprendido a usar las API de exportación e importación para replicar un proyecto en un recurso de Lenguaje secundario de otra región. A continuación, consulte los documentos de referencia de las API para ver qué más puede hacer con las API de creación.