Skip to content

Commit 624bf0c

Browse files
authored
Merge pull request #234094 from aahill/deprecate-offline-containers-2
Deprecate offline containers (retry)
2 parents 6c01678 + e8ae059 commit 624bf0c

File tree

10 files changed

+212
-209
lines changed

10 files changed

+212
-209
lines changed

articles/applied-ai-services/form-recognizer/containers/form-recognizer-disconnected-containers.md

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ms.subservice: forms-recognizer
77
author: laujan
88
manager: nitinme
99
ms.topic: reference
10-
ms.date: 02/10/2023
10+
ms.date: 03/02/2023
1111
ms.author: lajanuar
1212
monikerRange: 'form-recog-2.1.0'
1313
recommendations: false
@@ -33,32 +33,7 @@ Before attempting to run a Docker container in an offline environment, make sure
3333

3434
## Request access to use containers in disconnected environments
3535

36-
Complete and submit the [request form](https://aka.ms/csdisconnectedcontainers) to request access to the containers disconnected from the Internet.
37-
38-
[!INCLUDE [Request access to public preview](../../../../includes/cognitive-services-containers-request-access.md)]
39-
40-
Access is limited to customers that meet the following requirements:
41-
42-
* Your organization should be identified as strategic customer or partner with Microsoft.
43-
* Disconnected containers are expected to run fully offline, hence your use cases must meet one of the following or similar requirements:
44-
* Environment or device(s) with zero connectivity to internet.
45-
* Remote location that occasionally has internet access.
46-
* Organization under strict regulation of not sending any kind of data back to cloud.
47-
* Application completed as instructed - Pay close attention to guidance provided throughout the application to ensure you provide all the necessary information required for approval.
48-
49-
## Create a new resource and purchase a commitment plan
50-
51-
1. Create a new [Form Recognizer resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesFormRecognizer) in the Azure portal.
52-
53-
1. Enter the applicable information to create your resource. Be sure to select **Commitment tier disconnected containers** as your pricing tier.
54-
55-
> [!NOTE]
56-
>
57-
> * You will only see the option to purchase a commitment tier if you have been approved by Microsoft.
58-
59-
:::image type="content" source="../media/create-resource-offline-container.png" alt-text="A screenshot showing resource creation on the Azure portal.":::
60-
61-
1. Select **Review + Create** at the bottom of the page. Review the information, and select **Create**.
36+
Before you can use Form Recognizer containers in disconnected environments, you must first fill out and [submit a request form](../../../cognitive-services/containers/disconnected-containers.md#request-access-to-use-containers-in-disconnected-environments) and [purchase a commitment plan](../../../cognitive-services/containers/disconnected-containers.md#purchase-a-commitment-plan-to-use-containers-in-disconnected-environments).
6237

6338
## Gather required parameters
6439

@@ -246,16 +221,6 @@ This usage-logs endpoint returns a JSON response similar to the following exampl
246221
}
247222
```
248223

249-
### Purchase a different commitment plan for disconnected containers
250-
251-
Commitment plans for disconnected containers have a calendar year commitment period. When you purchase a plan, you're charged the full price immediately. During the commitment period, you can't change your commitment plan, however you can purchase more unit(s) at a pro-rated price for the remaining days in the year. You have until midnight (UTC) on the last day of your commitment, to end a commitment plan.
252-
253-
You can choose a different commitment plan in the **Commitment tier pricing** settings of your resource under the **Resource Management** section.
254-
255-
### End a commitment plan
256-
257-
If you decide that you don't want to continue purchasing a commitment plan, you can set your resource's auto-renewal to **Do not auto-renew**. Your commitment plan expires on the displayed commitment end date. After this date, you won't be charged for the commitment plan. You can continue using the Azure resource to make API calls, charged at pay-as-you-go pricing. You have until midnight (UTC) on the last day of the year to end a commitment plan for disconnected containers. If you cancel at or before that time, there are no charges for the next year.
258-
259224
## Troubleshooting
260225

261226
Run the container with an output mount and logging enabled. These settings enable the container generates log files that are helpful for troubleshooting issues that occur while starting or running the container.
@@ -265,4 +230,5 @@ Run the container with an output mount and logging enabled. These settings enabl
265230
266231
## Next steps
267232

268-
[Deploy the Sample Labeling tool to an Azure Container Instance (ACI)](../deploy-label-tool.md#deploy-with-azure-container-instances-aci)
233+
* [Deploy the Sample Labeling tool to an Azure Container Instance (ACI)](../deploy-label-tool.md#deploy-with-azure-container-instances-aci)
234+
* [Change or end a commitment plan](../../../cognitive-services/containers/disconnected-containers.md#purchase-a-different-commitment-plan-for-disconnected-containers)

articles/cognitive-services/Computer-vision/computer-vision-how-to-install-containers.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ manager: nitinme
88
ms.service: cognitive-services
99
ms.subservice: computer-vision
1010
ms.topic: how-to
11-
ms.date: 01/18/2023
11+
ms.date: 03/02/2023
1212
ms.author: pafarley
1313
ms.custom: seodec18, cog-serv-seo-aug-2020
1414
keywords: on-premises, OCR, Docker, container
@@ -313,6 +313,10 @@ The JSON response object has the same object graph as the asynchronous version.
313313

314314
For an example use-case, see the <a href="https://aka.ms/ts-read-api-types" target="_blank" rel="noopener noreferrer">TypeScript sandbox here </a> and select **Run** to visualize its ease-of-use.
315315

316+
## Run the container disconnected from the internet
317+
318+
[!INCLUDE [configure-disconnected-container](../containers/includes/configure-disconnected-container.md)]
319+
316320
## Stop the container
317321

318322
[!INCLUDE [How to stop the container](../../../includes/cognitive-services-containers-stop.md)]

articles/cognitive-services/LUIS/luis-container-howto.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ms.custom: seodec18, cog-serv-seo-aug-2020
99
ms.service: cognitive-services
1010
ms.subservice: language-understanding
1111
ms.topic: how-to
12-
ms.date: 01/18/2023
12+
ms.date: 03/02/2023
1313
ms.author: aahi
1414
keywords: on-premises, Docker, container
1515
---
@@ -373,6 +373,10 @@ After the log is uploaded, [review the endpoint](./luis-concept-review-endpoint-
373373

374374
[!INCLUDE [Container API documentation](../../../includes/cognitive-services-containers-api-documentation.md)]
375375

376+
## Run the container disconnected from the internet
377+
378+
[!INCLUDE [configure-disconnected-container](../containers/includes/configure-disconnected-container.md)]
379+
376380
## Stop the container
377381

378382
To shut down the container, in the command-line environment where the container is running, press **Ctrl+C**.

articles/cognitive-services/Speech-Service/speech-container-howto.md

Lines changed: 109 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ manager: nitinme
88
ms.service: cognitive-services
99
ms.subservice: speech-service
1010
ms.topic: how-to
11-
ms.date: 01/18/2023
11+
ms.date: 03/02/2023
1212
ms.author: eur
1313
ms.custom: cog-serv-seo-aug-2020
1414
keywords: on-premises, Docker, container
@@ -84,7 +84,9 @@ grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detect
8484
8585
## Request approval to run the container
8686

87-
Fill out and submit the [request form](https://aka.ms/csgate) to request access to the container.
87+
To request access to the container, fill out and submit one of the following:
88+
- [Connected containers request form](https://aka.ms/csgate) if you want to run containers regularly, in environments that are only connected to the internet.
89+
- [Disconnected Container request form](../containers/disconnected-containers.md#request-access-to-use-containers-in-disconnected-environments) if you want to run containers in environments that can either be connected or disconnected from the internet.
8890

8991
[!INCLUDE [Request access to public preview](../../../includes/cognitive-services-containers-request-access.md)]
9092

@@ -237,6 +239,8 @@ Use the [docker run](https://docs.docker.com/engine/reference/commandline/run/)
237239
238240
# [Speech-to-text](#tab/stt)
239241

242+
### Run the container connected to the internet
243+
240244
To run the standard speech-to-text container, execute the following `docker run` command:
241245

242246
```bash
@@ -259,7 +263,21 @@ This command:
259263
> To install GStreamer in a container,
260264
> follow Linux instructions for GStreamer in [Use codec compressed audio input with the Speech SDK](how-to-use-codec-compressed-audio-input-streams.md).
261265
262-
#### Diarization on the speech-to-text output
266+
### Run the container disconnected from the internet
267+
268+
[!INCLUDE [configure-disconnected-container](../containers/includes/configure-disconnected-container.md)]
269+
270+
The speech-to-text container provide a default directory for writing the license file and billing log at runtime. The default directories are /license and /output respectively.
271+
272+
When you're mounting these directories to the container with the `docker run -v` command, make sure the local machine directory is set ownership to `user:group nonroot:nonroot` before running the container.
273+
274+
Below is a sample command to set file/directory ownership.
275+
276+
```bash
277+
sudo chown -R nonroot:nonroot <YOUR_LOCAL_MACHINE_PATH_1> <YOUR_LOCAL_MACHINE_PATH_2> ...
278+
```
279+
280+
### Diarization on the speech-to-text output
263281

264282
Diarization is enabled by default. To get diarization in your response, use `diarize_speech_config.set_service_property`.
265283

@@ -284,7 +302,7 @@ Diarization is enabled by default. To get diarization in your response, use `dia
284302
> "Identity" mode returns `"SpeakerId": "Customer"` or `"SpeakerId": "Agent"`.
285303
> "Anonymous" mode returns `"SpeakerId": "Speaker 1"` or `"SpeakerId": "Speaker 2"`.
286304

287-
#### Analyze sentiment on the speech-to-text output
305+
### Analyze sentiment on the speech-to-text output
288306

289307
Starting in v2.6.0 of the speech-to-text container, you should use Language service 3.0 API endpoint instead of the preview one. For example:
290308

@@ -318,7 +336,7 @@ This command:
318336
* Performs the same steps as the preceding command.
319337
* Stores a Language service API endpoint and key, for sending sentiment analysis requests.
320338

321-
#### Phraselist v2 on the speech-to-text output
339+
### Phraselist v2 on the speech-to-text output
322340

323341
Starting in v2.6.0 of the speech-to-text container, you can get the output with your own phrases, either the whole sentence or phrases in the middle. For example, *the tall man* in the following sentence:
324342

@@ -469,6 +487,75 @@ ApiKey={API_KEY}
469487

470488
Starting in v2.5.0 of the custom-speech-to-text container, you can get custom pronunciation results in the output. All you need to do is have your own custom pronunciation rules set up in your custom model and mount the model to a custom-speech-to-text container.
471489

490+
491+
### Run the container disconnected from the internet
492+
493+
To use this container disconnected from the internet, you must first request access by filling out an application, and purchasing a commitment plan. See [Use Docker containers in disconnected environments](../containers/disconnected-containers.md) for more information.
494+
495+
In order to prepare and configure the Custom Speech-to-Text container you will need two separate speech resources:
496+
497+
1. A regular Azure Speech Service resource which is either configured to use a "**S0 - Standard**" pricing tier or a "**Speech to Text (Custom)**" commitment tier pricing plan. This will be used to train, download, and configure your custom speech models for use in your container.
498+
1. An Azure Speech Service resource which is configured to use the "**DC0 Commitment (Disconnected)**" pricing plan. This is used to download your disconnected container license file required to run the container in disconnected mode.
499+
500+
Download the docker container and run it to get the required speech model as [described above](#get-the-container-image-with-docker-pull) using the regular Azure Speech resource. Next, you will need to download your disconnected license file.
501+
502+
The `DownloadLicense=True` parameter in your `docker run` command will download a license file that will enable your Docker container to run when it isn't connected to the internet. It also contains an expiration date, after which the license file will be invalid to run the container. You can only use a license file with the appropriate container that you've been approved for. For example, you can't use a license file for a speech-to-text container with a form recognizer container.
503+
504+
| Placeholder | Value | Format or example |
505+
|-------------|-------|---|
506+
| `{IMAGE}` | The container image you want to use. | `mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice` |
507+
| `{LICENSE_MOUNT}` | The path where the license will be downloaded, and mounted. | `/host/license:/path/to/license/directory` |
508+
| `{ENDPOINT_URI}` | The endpoint for authenticating your service request. You can find it on your resource's **Key and endpoint** page, on the Azure portal. | `https://<your-custom-subdomain>.cognitiveservices.azure.com` |
509+
| `{API_KEY}` | The key for your Text Analytics resource. You can find it on your resource's **Key and endpoint** page, on the Azure portal. |`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`|
510+
| `{CONTAINER_LICENSE_DIRECTORY}` | Location of the license folder on the container's local filesystem. | `/path/to/license/directory` |
511+
512+
```bash
513+
docker run --rm -it -p 5000:5000 \
514+
-v {LICENSE_MOUNT} \
515+
{IMAGE} \
516+
eula=accept \
517+
billing={ENDPOINT_URI} \
518+
apikey={API_KEY} \
519+
DownloadLicense=True \
520+
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
521+
```
522+
523+
Once the license file has been downloaded, you can run the container in a disconnected environment. The following example shows the formatting of the `docker run` command you'll use, with placeholder values. Replace these placeholder values with your own values.
524+
525+
Wherever the container is run, the license file must be mounted to the container and the location of the license folder on the container's local filesystem must be specified with `Mounts:License=`. An output mount must also be specified so that billing usage records can be written.
526+
527+
Placeholder | Value | Format or example |
528+
|-------------|-------|---|
529+
| `{IMAGE}` | The container image you want to use. | `mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice` |
530+
`{MEMORY_SIZE}` | The appropriate size of memory to allocate for your container. | `4g` |
531+
| `{NUMBER_CPUS}` | The appropriate number of CPUs to allocate for your container. | `4` |
532+
| `{LICENSE_MOUNT}` | The path where the license will be located and mounted. | `/host/license:/path/to/license/directory` |
533+
| `{OUTPUT_PATH}` | The output path for logging [usage records](../containers/disconnected-containers.md#usage-records). | `/host/output:/path/to/output/directory` |
534+
| `{MODEL_PATH}` | The path where the model is located. | `/path/to/model/` |
535+
| `{CONTAINER_LICENSE_DIRECTORY}` | Location of the license folder on the container's local filesystem. | `/path/to/license/directory` |
536+
| `{CONTAINER_OUTPUT_DIRECTORY}` | Location of the output folder on the container's local filesystem. | `/path/to/output/directory` |
537+
538+
```bash
539+
docker run --rm -it -p 5000:5000 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \
540+
-v {LICENSE_MOUNT} \
541+
-v {OUTPUT_PATH} \
542+
-v {MODEL_PATH} \
543+
{IMAGE} \
544+
eula=accept \
545+
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
546+
Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}
547+
```
548+
549+
The [Custom Speech-to-Text](../speech-service/speech-container-howto.md?tabs=cstt) container provides a default directory for writing the license file and billing log at runtime. The default directories are /license and /output respectively.
550+
551+
When you're mounting these directories to the container with the `docker run -v` command, make sure the local machine directory is set ownership to `user:group nonroot:nonroot` before running the container.
552+
553+
Below is a sample command to set file/directory ownership.
554+
555+
```bash
556+
sudo chown -R nonroot:nonroot <YOUR_LOCAL_MACHINE_PATH_1> <YOUR_LOCAL_MACHINE_PATH_2> ...
557+
```
558+
472559
# [Neural text-to-speech](#tab/ntts)
473560

474561
To run the neural text-to-speech container, execute the following `docker run` command:
@@ -488,6 +575,23 @@ This command:
488575
* Exposes TCP port 5000 and allocates a pseudo-TTY for the container.
489576
* Automatically removes the container after it exits. The container image is still available on the host computer.
490577

578+
579+
### Run the container disconnected from the internet
580+
581+
[!INCLUDE [configure-disconnected-container](../containers/includes/configure-disconnected-container.md)]
582+
583+
584+
The neural text-to-speech container provide a default directory for writing the license file and billing log at runtime. The default directories are /license and /output respectively.
585+
586+
When you're mounting these directories to the container with the `docker run -v` command, make sure the local machine directory is set ownership to `user:group nonroot:nonroot` before running the container.
587+
588+
Below is a sample command to set file/directory ownership.
589+
590+
```bash
591+
sudo chown -R nonroot:nonroot <YOUR_LOCAL_MACHINE_PATH_1> <YOUR_LOCAL_MACHINE_PATH_2> ...
592+
```
593+
594+
491595
# [Speech language identification](#tab/lid)
492596

493597
To run the Speech language identification container, execute the following `docker run` command:
@@ -519,12 +623,6 @@ Increasing the number of concurrent calls can affect reliability and latency. Fo
519623
> [!IMPORTANT]
520624
> The `Eula`, `Billing`, and `ApiKey` options must be specified to run the container. Otherwise, the container won't start. For more information, see [Billing](#billing).
521625
522-
## Run the container in disconnected environments
523-
524-
You must request access to use containers disconnected from the internet. For more information, see [Request access to use containers in disconnected environments](../containers/disconnected-containers.md#request-access-to-use-containers-in-disconnected-environments).
525-
526-
For Speech Service container configuration, see [Disconnected containers](../containers/disconnected-containers.md#speech-containers).
527-
528626
## Query the container's prediction endpoint
529627

530628
> [!NOTE]

0 commit comments

Comments
 (0)