Skip to content

Commit 58a6e84

Browse files
authored
Merge pull request #281914 from paulth1/ai-language-capabilities-batch2
[AQ] edit pass: ai-language-capabilities-batch2
2 parents 0a22e1f + 1eeb8a7 commit 58a6e84

File tree

5 files changed

+165
-165
lines changed

5 files changed

+165
-165
lines changed

articles/ai-services/language-service/concepts/custom-features/multi-region-deployment.md

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Deploy custom language projects to multiple regions in Azure AI Language
33
titleSuffix: Azure AI services
4-
description: Learn about deploying your language projects to multiple regions.
4+
description: Learn about how to deploy your custom language projects to multiple regions.
55
#services: cognitive-services
66
author: jboback
77
manager: nitinme
@@ -16,54 +16,57 @@ ms.custom: language-service-clu
1616

1717
> [!NOTE]
1818
> This article applies to the following custom features in Azure AI Language:
19+
>
1920
> * [Conversational language understanding](../../conversational-language-understanding/overview.md)
2021
> * [Custom text classification](../../custom-text-classification/overview.md)
21-
> * [Custom NER](../../custom-named-entity-recognition/overview.md)
22+
> * [Custom named entity recognition (NER)](../../custom-named-entity-recognition/overview.md)
2223
> * [Orchestration workflow](../../orchestration-workflow/overview.md)
2324
24-
Custom Language service features enable you to deploy your project to more than one region, making it much easier to access your project globally while managing only one instance of your project in one place.
25+
Custom language service features enable you to deploy your project to more than one region. This capability makes it much easier to access your project globally while you manage only one instance of your project in one place.
2526

26-
Before you deploy a project, you can assign **deployment resources** in other regions. Each deployment resource is a different Language resource from the one you use to author your project. You deploy to those resources and then target your prediction requests to that resource in their respective regions and your queries are served directly from that region.
27+
Before you deploy a project, you can assign *deployment resources* in other regions. Each deployment resource is a different Language resource from the one that you use to author your project. You deploy to those resources and then target your prediction requests to that resource in their respective regions and your queries are served directly from that region.
2728

28-
When creating a deployment, you can select which of your assigned deployment resources and their corresponding regions you would like to deploy to. The model you deploy is then replicated to each region and accessible with its own endpoint dependent on the deployment resource's custom subdomain.
29+
When you create a deployment, you can select which of your assigned deployment resources and their corresponding regions you want to deploy to. The model you deploy is then replicated to each region and accessible with its own endpoint dependent on the deployment resource's custom subdomain.
2930

3031
## Example
3132

32-
Suppose you want to make sure your project, which is used as part of a customer support chatbot, is accessible by customers across the US and India. You would author a project with the name **ContosoSupport** using a _West US 2_ Language resource named **MyWestUS2**. Before deployment, you would assign two deployment resources to your project - **MyEastUS** and **MyCentralIndia** in _East US_ and _Central India_, respectively.
33+
Suppose you want to make sure your project, which is used as part of a customer support chatbot, is accessible by customers across the United States and India. You author a project with the name `ContosoSupport` by using a West US 2 Language resource named `MyWestUS2`. Before deployment, you assign two deployment resources to your project: `MyEastUS` and `MyCentralIndia` in East US and Central India, respectively.
34+
35+
When you deploy your project, you select all three regions for deployment: the original West US 2 region and the assigned ones through East US and Central India.
3336

34-
When deploying your project, You would select all three regions for deployment: the original _West US 2_ region and the assigned ones through _East US_ and _Central India_.
37+
You now have three different endpoint URLs to access your project in all three regions:
3538

36-
You would now have three different endpoint URLs to access your project in all three regions:
37-
* West US 2: `https://mywestus2.cognitiveservices.azure.com/language/:analyze-conversations`
38-
* East US: `https://myeastus.cognitiveservices.azure.com/language/:analyze-conversations`
39-
* Central India: `https://mycentralindia.cognitiveservices.azure.com/language/:analyze-conversations`
39+
* **West US 2**: `https://mywestus2.cognitiveservices.azure.com/language/:analyze-conversations`
40+
* **East US**: `https://myeastus.cognitiveservices.azure.com/language/:analyze-conversations`
41+
* **Central India**: `https://mycentralindia.cognitiveservices.azure.com/language/:analyze-conversations`
4042

41-
The same request body to each of those different URLs serves the exact same response directly from that region.
43+
The same request body to each of those different URLs serves the exact same response directly from that region.
4244

4345
## Validations and requirements
4446

45-
Assigning deployment resources requires Microsoft Entra authentication. Microsoft Entra ID is used to confirm you have access to the resources you are interested in assigning to your project for multi-region deployment. In the Language Studio, you can automatically [enable Microsoft Entra authentication](https://aka.ms/rbac-language) by assigning yourself the _Cognitive Services Language Owner_ role to your original resource. To programmatically use Microsoft Entra authentication, learn more from the [Azure AI services documentation](../../../authentication.md?source=docs&tabs=powershell&tryIt=true#authenticate-with-azure-active-directory).
47+
Assigning deployment resources requires Microsoft Entra authentication. Microsoft Entra ID is used to confirm that you have access to the resources that you want to assign to your project for multiregion deployment. In Language Studio, you can automatically [enable Microsoft Entra authentication](https://aka.ms/rbac-language) by assigning yourself the Azure Cognitive Services Language Owner role to your original resource. To programmatically use Microsoft Entra authentication, learn more from the [Azure AI services documentation](../../../authentication.md?source=docs&tabs=powershell&tryIt=true#authenticate-with-azure-active-directory).
4648

47-
Your project name and resource are used as its main identifiers. Therefore, a Language resource can only have a specific project name in each resource. Any other projects with the same name will not be deployable to that resource.
49+
Your project name and resource are used as its main identifiers. A Language resource can only have a specific project name in each resource. Any other projects with the same name can't be deployed to that resource.
4850

49-
For example, if a project **ContosoSupport** was created by resource **MyWestUS2** in _West US 2_ and deployed to resource **MyEastUS** in _East US_, the resource **MyEastUS** cannot create a different project called **ContosoSupport** and deploy a project to that region. Similarly, your collaborators cannot then create a project **ContosoSupport** with resource **MyCentralIndia** in _Central India_ and deploy it to either **MyWestUS2** or **MyEastUS**.
51+
For example, if a project `ContosoSupport` was created by the resource `MyWestUS2` in West US 2 and deployed to the resource `MyEastUS` in East US, the resource `MyEastUS` can't create a different project called `ContosoSupport` and deploy a project to that region. Similarly, your collaborators can't then create a project `ContosoSupport` with the resource `MyCentralIndia` in Central India and deploy it to either `MyWestUS2` or `MyEastUS`.
5052

51-
You can only swap deployments that are available in the exact same regions, otherwise swapping will fail.
53+
You can only swap deployments that are available in the exact same regions. Otherwise, swapping fails.
5254

53-
If you remove an assigned resource from your project, all of the project deployments to that resource will then be deleted.
55+
If you remove an assigned resource from your project, all of the project deployments to that resource are deleted.
5456

5557
> [!NOTE]
5658
> Orchestration workflow only:
5759
>
58-
> You **cannot** assign deployment resources to orchestration workflow projects with custom question answering or LUIS connections. You subsequently cannot add custom question answering or LUIS connections to projects that have assigned resources.
60+
> You *can't* assign deployment resources to orchestration workflow projects with custom question answering or LUIS connections. Subsequently, you can't add custom question answering or LUIS connections to projects that have assigned resources.
5961
>
60-
> For multi-region deployment to work as expected, the connected CLU projects **must also be deployed** to the same regional resources you've deployed the orchestration workflow project to. Otherwise the orchestration workflow project will attempt to route a request to a deployment in its region that doesn't exist.
62+
> For multiregion deployment to work as expected, the connected CLU projects *must also be deployed* to the same regional resources to which you deployed the orchestration workflow project. Otherwise, the orchestration workflow project attempts to route a request to a deployment in its region that doesn't exist.
6163
6264
Some regions are only available for deployment and not for authoring projects.
6365

64-
## Next steps
66+
## Related content
6567

6668
Learn how to deploy models for:
69+
6770
* [Conversational language understanding](../../conversational-language-understanding/how-to/deploy-model.md)
6871
* [Custom text classification](../../custom-text-classification/how-to/deploy-model.md)
6972
* [Custom NER](../../custom-named-entity-recognition/how-to/deploy-model.md)
Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
title: When to choose conversational language understanding or orchestration workflow
2+
title: Choose conversational language understanding or orchestration workflow
33
titleSuffix: Azure AI services
4-
description: Learn when to choose conversational language understanding or orchestration workflow
4+
description: Learn when to choose between conversational language understanding or orchestration workflow.
55
#services: cognitive-services
66
author: jboback
77
manager: nitinme
@@ -14,59 +14,69 @@ ms.custom: language-service-clu
1414

1515
# When to use conversational language understanding or orchestration workflow apps
1616

17-
When you create large applications, you should consider whether your use-case would be best served by a single conversational app (flat architecture), or multiple apps that are orchestrated.
17+
When you create large applications, you should consider whether your use case is best served by a single conversational app (flat architecture) or by multiple apps that are orchestrated.
1818

19+
## Orchestration overview
1920

20-
## Orchestration overview
21+
Orchestration workflow is a feature that allows you to connect different projects from [LUIS](../../../LUIS/what-is-luis.md), [conversational language understanding](../overview.md), and [custom question answering](../../question-answering/overview.md) in one project. You can then use this project for predictions by using one endpoint. The orchestration project makes a prediction on which child project should be called, automatically routes the request, and returns with its response.
2122

22-
Orchestration workflow is a feature that allows you to connect different projects from [LUIS](../../../LUIS/what-is-luis.md) [conversational language understanding](../overview.md), and [custom question answering](../../question-answering/overview.md) in one project. You can then use this project for predictions using one endpoint. The orchestration project makes a prediction on which child project should be called, automatically routes the request, and returns with its response.
23+
Orchestration involves two steps:
2324

24-
The key point is that orchestration involves two steps:
25+
1. Predicting which child project to call. <!--The model that performs this classification can be trained either with a standard or an advanced recipe. (Please see footnotes on instructions for training with advanced recipe).-->
26+
1. Routing the utterance to the destination child app and returning the child app's response.
2527

26-
1. Predicting which child project to call. <!--The model that performs this classification can be trained either with a standard or an advanced recipe. (Please see footnotes on instructions for training with advanced recipe).-->
27-
2. Routing the utterance to the destination child app, and returning the child app's response.
28-
29-
### Advantages
28+
### Orchestration advantages
3029

3130
* Clear decomposition and faster development:
32-
* If your overall schema has a substantial number of domains, the orchestration approach can help decompose your application into several child apps (each serving a specific domain). For example, an automotive conversational app might have a *navigation domain*, a *media domain*, and so on.
33-
* Developing each domain app in parallel is easier. People and teams with specific domain expertise can work on individual apps collaboratively and in parallel.
34-
* Since each domain app is smaller, the development cycle becomes faster. Smaller sized domain apps take much less time to train than a single large app.
31+
32+
* If your overall schema has a substantial number of domains, the orchestration approach can help decompose your application into several child apps (each serving a specific domain). For example, an automotive conversational app might have a *navigation domain* or a *media domain*.
33+
* Developing each domain app in parallel is easier. People and teams with specific domain expertise can work on individual apps collaboratively and in parallel.
34+
* Because each domain app is smaller, the development cycle becomes faster. Smaller-sized domain apps take much less time to train than a single large app.
3535
* More flexible [confidence score thresholds](/legal/cognitive-services/clu/clu-characteristics-and-limitations?context=/azure/ai-services/language-service/context/context#understand-confidence-scores):
36-
* Since there are separate child apps serving each domain, it's easy to set separate thresholds for different child apps.
37-
* AI quality improvements where appropriate:
38-
* Some applications require that certain entities are domain restricted. Orchestration makes this easy to achieve. Once the orchestration project has predicted which child app should be called, the other child apps won't be called.
3936

40-
For example, if your app contains a `Person.Name` prebuilt entity, consider the utterance *"How do I use a jack?"*, in the context of a vehicle question. In this context, *jack* is an automotive tool, and shouldn’t be recognized as a person's name. Using orchestration, this utterance can be redirected to a child app created to answer such questions, which doesn’t have a `Person.Name` entity.
37+
* Because separate child apps serve each domain, it's easy to set separate thresholds for different child apps.
38+
* AI-quality improvements where appropriate:
39+
40+
* Some applications require that certain entities must be domain restricted. Orchestration makes this task easy to achieve. After the orchestration project predicts which child app should be called, the other child apps aren't called.
4141

42-
### Disadvantages
42+
For example, if your app contains a `Person.Name` prebuilt entity, consider the utterance "How do I use a jack?" in the context of a vehicle question. In this context, *jack* is an automotive tool and shouldn't be recognized as a person's name. When you use orchestration, this utterance can be redirected to a child app created to answer such a question, which doesn't have a `Person.Name` entity.
43+
44+
### Orchestration disadvantages
4345

4446
* Redundant entities in child apps:
45-
* If you need a particular prebuilt entity being returned in all utterances irrespective of the domain, for example `Quantity.Number` or `Geography.Location`, there is no way of adding an entity to the Orchestration app (it is an intent-only model). You would need to add it to all individual child apps.
47+
48+
* If you need a particular prebuilt entity being returned in all utterances irrespective of the domain, for example `Quantity.Number` or `Geography.Location`, there's no way of adding an entity to the orchestration app (it's an intent-only model). You would need to add it to all individual child apps.
4649
* Efficiency:
47-
* Orchestration apps take two model inferences. One for predicting which child app to call, another for the prediction in the child app. Inference times will typically be slower than single apps with a flat architecture.
50+
51+
* Orchestration apps take two model inferences. One for predicting which child app to call, and another for the prediction in the child app. Inference times are typically slower than single apps with a flat architecture.
4852
* Train/test split for orchestrator:
49-
* Training an orchestration app does not allow you to granularly split data between the testing and training sets. For example, you cannot train a 90-10 split for child app A, and then an 80-20 split for child app B. This may be a minor point, but worth keeping in mind.
53+
54+
* Training an orchestration app doesn't allow you to granularly split data between the testing and training sets. For example, you can't train a 90-10 split for child app A, and then train an 80-20 split for child app B. This limitation might be minor, but it's worth keeping in mind.
5055

5156
## Flat architecture overview
5257

53-
Flat architecture is the other method of developing conversational apps. Instead of using an orchestration app to send utterances to one of multiple child apps, you develop a singular (or flat) app to handle utterances.
58+
Flat architecture is the other method of developing conversational apps. Instead of using an orchestration app to send utterances to one of multiple child apps, you develop a singular (or flat) app to handle utterances.
5459

55-
### Advantages
60+
### Flat architecture advantages
5661

5762
* Simplicity:
58-
* For small sized apps or domains, the orchestrator approach can be overly complex.
59-
* Since all intents and entities are at the same app level, it might be easier to make changes to all of them together.
63+
64+
* For small-sized apps or domains, the orchestrator approach can be overly complex.
65+
* Because all intents and entities are at the same app level, it might be easier to make changes to all of them together.
6066
* It's easier to add entities that should always be returned:
61-
* If you want certain prebuilt or list entities to be returned for all utterances, you only need to add it alongside other entities in a single app. If you use orchestration, as mentioned above, you would need to add it to every child app.
6267

63-
### Disadvantages
68+
* If you want certain prebuilt or list entities to be returned for all utterances, you only need to add them alongside other entities in a single app. If you use orchestration, as mentioned, you need to add it to every child app.
69+
70+
### Flat architecture disadvantages
6471

6572
* Unwieldy for large apps:
66-
* For large apps (say > 50 intents or entities) it can become difficult to keep track of evolving schemas and datasets. This is particularly evident in cases where the app has to serve several domains. For example an automotive conversational app might have a *navigation domain*, a *media domain*, and so on.
73+
74+
* For large apps (say, more than 50 intents or entities), it can become difficult to keep track of evolving schemas and datasets. This difficulty is evident in cases where the app has to serve several domains. For example, an automotive conversational app might have a *navigation domain* or a *media domain*.
6775
* Limited control over entity matches:
68-
* In a flat architecture, there is no way to restrict entities to be returned only in certain cases. You can accomplish this using orchestration by assigning those specific entities to particular child apps.
6976

70-
## Next steps
77+
* In a flat architecture, there's no way to restrict entities to be returned only in certain cases. When you use orchestration, you can assign those specific entities to particular child apps.
78+
79+
## Related content
80+
7181
* [Orchestration workflow overview](../../orchestration-workflow/overview.md)
7282
* [Conversational language understanding overview](../overview.md)

0 commit comments

Comments
 (0)