Partilhar via


Contêineres em ambientes desconectados (offline)

O suporte para contêineres está atualmente disponível com a versão 2022-08-31 (GA) Document Intelligence para todos os modelos e 2023-07-31 (GA) para os modelos de Documento de Leitura, Layout, Fatura, Recibo e ID:

✔️ Consulte Contêineres do Document Intelligence v3.0 em ambientes desconectados para obter a documentação de contêineres suportada.

Este conteúdo aplica-se a: marca de verificação v3.0 (GA) marca de verificação v3.1 (GA)

O que são contêineres desconectados?

Os contêineres de IA do Azure oferecem a flexibilidade de executar alguns serviços de Document Intelligence localmente em contêineres. Os contêineres conectados são executados localmente em seu ambiente e enviam informações de uso para a nuvem para cobrança. Os contêineres desconectados destinam-se a cenários em que nenhuma conectividade com a nuvem é necessária para que os contêineres sejam executados.

Os contêineres do Azure AI Document Intelligence permitem que você use APIs de Document Intelligence com os benefícios da conteinerização. Os contêineres desconectados são oferecidos por meio de preços de nível de compromisso oferecidos a uma taxa com desconto em comparação com os preços pré-pagos. Com o preço da camada de compromisso, você pode se comprometer a usar os recursos de Document Intelligence por uma taxa fixa, a um custo total previsível, com base nas necessidades de sua carga de trabalho.

Começar agora

Antes de tentar executar um contêiner do Docker em um ambiente offline, verifique se você está familiarizado com os seguintes requisitos para baixar e usar o contêiner com êxito:

  • Requisitos e recomendações do computador host.
  • O comando Docker pull para baixar o contêiner.
  • Como validar se um contêiner está em execução.
  • Como enviar consultas para o ponto de extremidade do contêiner, uma vez que ele esteja em execução.

Solicitar acesso para usar contêineres em ambientes desconectados

Antes de poder usar contêineres de Inteligência Documental em ambientes desconectados, você deve primeiro preencher e enviar um formulário de solicitação e adquirir um plano de compromisso.

Criar um novo recurso no portal do Azure

Comece provisionando um novo recurso no portal.

  • Certifique-se de selecionar a Commitment tier disconnected containers DC0 opção para Nível de preço

  • Selecione o nível de preço apropriado de pelo menos um dos níveis de compromisso personalizados, lidos ou pré-criados

    Captura de ecrã da configuração de camada desligada no portal do Azure.

Contentor Mínimo Recomendado Plano de compromisso
Read 8 núcleos, 10 GB de memória 8 núcleos, 24 GB de memória OCR (Ler)
Layout 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória Pré-criado
Business Card 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória Pré-criado
General Document 8 núcleos, 12 GB de memória 8 núcleos, 24 GB de memória Pré-criado
ID Document 8 núcleos, 8 GB de memória 8 núcleos, 24 GB de memória Pré-criado
Invoice 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória Pré-criado
Receipt 8 núcleos, 11 GB de memória 8 núcleos, 24 GB de memória Pré-criado
Custom Template 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória API Personalizado

Reúna os parâmetros necessários

Há três parâmetros necessários para todos os contêineres dos serviços de IA do Azure:

  • O contrato de licença de usuário final (EULA) deve estar presente com um valor de aceitação.
  • A URL do ponto de extremidade para seu recurso do portal do Azure.
  • A chave de API para o seu recurso a partir do portal do Azure.

A URL do ponto de extremidade e a chave da API são necessárias quando você executa o contêiner pela primeira vez para configurá-lo para uso desconectado. Você pode encontrar a chave e o ponto de extremidade na página Chave e ponto de extremidade do seu recurso no portal do Azure:

Captura de ecrã das chaves do portal do Azure e da página de ponto de extremidade.

Importante

Você só usará sua chave e ponto de extremidade para configurar o contêiner para ser executado em um ambiente desconectado. Depois de configurar o contêiner, você não precisará dos valores de chave e ponto de extremidade para enviar solicitações de API. Armazene-os de forma segura, por exemplo, usando o Azure Key Vault. Apenas uma chave é necessária para este processo.

Baixar um contêiner do Docker com docker pull

Baixe o contêiner do Docker aprovado para ser executado em um ambiente desconectado. Por exemplo:

Comando pull do Docker Value Formato
docker pull [image]

● ●docker pull [image]latest
A imagem de contêiner mais recente. mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

● ● mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice-3.0:latest

Exemplo de comando pull do Docker

docker pull mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice:latest

Configurar o contêiner para ser executado em um ambiente desconectado

As imagens de contêiner desconectado são as mesmas que os contêineres conectados. A principal diferença é que os contêineres desconectados exigem um arquivo de licença. Este arquivo de licença é baixado iniciando o contêiner em um modo conectado com o parâmetro downloadLicense definido como true.

Agora que seu contêiner foi baixado, você precisa executar o docker run comando com o seguinte parâmetro:

  • DownloadLicense=True. Este parâmetro baixa um arquivo de licença que permite que seu contêiner do Docker seja executado quando não estiver conectado à Internet. Ele também contém uma data de validade, após a qual o arquivo de licença é inválido para executar o contêiner. Você só pode usar o arquivo de licença no contêiner aprovado correspondente.

Importante

O docker run comando gerará um modelo que você pode usar para executar o contêiner. O modelo contém os parâmetros necessários para os modelos baixados e o arquivo de configuração. Certifique-se de salvar este modelo.

O exemplo a seguir mostra a formatação do docker run comando a ser usado com valores de espaço reservado. Substitua esses valores de espaço reservado por seus próprios valores.

Marcador de Posição Value Formato ou exemplo
{IMAGE} A imagem de contêiner que você deseja usar. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} O caminho onde a licença é baixada e montada. /host/license:/path/to/license/directory
{ENDPOINT_URI} O ponto de extremidade para autenticar sua solicitação de serviço. Você pode encontrá-lo na página Chave e ponto de extremidade do seu recurso, no portal do Azure. https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} A chave para o seu recurso de Document Intelligence. Você pode encontrá-lo na página Chave e ponto de extremidade do seu recurso, no portal do Azure. {string}
{CONTAINER_LICENSE_DIRECTORY} Localização da pasta de licença no sistema de arquivos local do contêiner. /path/to/license/directory

Exemplo docker run de comando


docker run --rm -it -p 5000:5050 \

-v {LICENSE_MOUNT} \

{IMAGE} \

eula=accept \

billing={ENDPOINT_URI} \

apikey={API_KEY} \

DownloadLicense=True \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

No comando a seguir, substitua os espaços reservados para o caminho da pasta, o ponto de extremidade de cobrança e a chave da API para baixar um arquivo de licença para o contêiner de layout.

docker run -v {folder path}:/license --env Mounts:License=/license --env DownloadLicense=True --env Eula=accept --env Billing={billing endpoint} --env ApiKey={api key} mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

Depois que o contêiner estiver configurado, use a próxima seção para executá-lo em seu ambiente com a licença e as alocações apropriadas de memória e CPU.

Modelos e configuração de contêineres do Document Intelligence

Depois de configurar o contêiner, os valores para os modelos de Document Intelligence baixados e a configuração do contêiner serão gerados e exibidos na saída do contêiner.

Executar o contêiner em um ambiente desconectado

Depois de baixar o arquivo de licença, você pode executar o contêiner em um ambiente desconectado com sua licença, memória apropriada e alocações de CPU adequadas. O exemplo a seguir mostra a docker run formatação do comando com valores de espaço reservado. Substitua esses valores de espaços reservados por seus próprios valores.

Sempre que o contêiner é executado, o arquivo de licença deve ser montado no contêiner e o local da pasta de licença no sistema de arquivos local do contêiner deve ser especificado com Mounts:License=. Além disso, uma montagem de saída deve ser especificada para que os registros de uso de faturamento possam ser gravados.

Marcador de Posição Value Formato ou exemplo
{IMAGE} A imagem de contêiner que você deseja usar. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} O tamanho apropriado da memória a ser alocada para seu contêiner. 4g
{NUMBER_CPUS} O número apropriado de CPUs a serem alocadas para seu contêiner. 4
{LICENSE_MOUNT} O caminho onde a licença está localizada e montada. /host/license:/path/to/license/directory
{OUTPUT_PATH} O caminho de saída para registrar registros de uso. /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} Localização da pasta de licença no sistema de arquivos local do contêiner. /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} Localização da pasta de saída no sistema de arquivos local do contêiner. /path/to/output/directory

Exemplo docker run de comando

docker run --rm -it -p 5000:5050 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \

-v {LICENSE_MOUNT} \

-v {OUTPUT_PATH} \

{IMAGE} \

eula=accept \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}

Iniciar um contêiner desconectado é semelhante a iniciar um contêiner conectado. Os contêineres desconectados exigem um parâmetro de licença adicionado. Aqui está um exemplo de arquivo docker-compose.yml para iniciar um contêiner personalizado no modo desconectado. Adicione a variável de ambiente CUSTOM_LICENSE_MOUNT_PATH com um valor definido para a pasta que contém o arquivo de licença baixado e a OUTPUT_MOUNT_PATH variável de ambiente com um valor definido para a pasta que contém os logs de uso.

version: '3.3'
services:
 nginx:
  image: nginx:alpine
  container_name: reverseproxy
  volumes:
    - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
  ports:
    - "5000:5050"
 layout:
  container_name: azure-cognitive-service-layout
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest
  environment:
    eula: accept
    apikey: ${FORM_RECOGNIZER_KEY}
    billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
    Logging:Console:LogLevel:Default: Information
    SharedRootFolder: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${LAYOUT_LICENSE_MOUNT_PATH}
      target: /license
  expose:
    - "5000"

 custom-template:
  container_name: azure-cognitive-service-custom-template
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.0:latest
  restart: always
  depends_on:
    - layout
  environment:
    AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
    eula: accept
    apikey: ${FORM_RECOGNIZER_KEY}
    billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
    Logging:Console:LogLevel:Default: Information
    SharedRootFolder: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${CUSTOM_LICENSE_MOUNT_PATH}
      target: /license
  expose:
    - "5000"

 studio:
  container_name: form-recognizer-studio
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.0
  environment:
    ONPREM_LOCALFILE_BASEPATH: /onprem_folder
    STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
  volumes:
    - type: bind
      source: ${FILE_MOUNT_PATH} # path to your local folder
      target: /onprem_folder
    - type: bind
      source: ${DB_MOUNT_PATH} # path to your local folder
      target: /onprem_db
  ports:
    - "5001:5001"
  user: "1000:1000" # echo $(id -u):$(id -g)

Outros parâmetros e comandos

Aqui estão mais alguns parâmetros e comandos que você precisa para executar o contêiner.

Registos de utilização

Ao operar contêineres do Docker em um ambiente desconectado, o contêiner gravará registros de uso em um volume onde eles serão coletados ao longo do tempo. Você também pode chamar um ponto de extremidade da API REST para gerar um relatório sobre o uso do serviço.

Argumentos para armazenar logs

Quando executado em um ambiente desconectado, uma montagem de saída deve estar disponível para o contêiner para armazenar logs de uso. Por exemplo, você incluiria -v /host/output:{OUTPUT_PATH} e Mounts:Output={OUTPUT_PATH} , no exemplo a seguir, substituiria {OUTPUT_PATH} pelo caminho onde os logs são armazenados:

docker run -v /host/output:{OUTPUT_PATH} ... <image> ... Mounts:Output={OUTPUT_PATH}

Obter registros usando os pontos de extremidade do contêiner

O contêiner fornece dois pontos de extremidade para retornar registros sobre seu uso.

Obter todos os registos

O ponto de extremidade a seguir fornece um relatório resumindo todo o uso coletado no diretório de registro de faturamento montado.

https://<service>/records/usage-logs/

Exemplo de ponto de extremidade HTTPS

http://localhost:5000/records/usage-logs

O ponto de extremidade usage-log retorna uma resposta JSON semelhante ao exemplo a seguir:

{
  "apiType": "string",
  "serviceName": "string",
  "meters": [
    {
      "name": "string",
      "quantity": 256345435
    }
  ]
}

Obter registos para um mês específico

O ponto de extremidade a seguir fornece um relatório resumindo o uso em um mês e ano específicos.

https://<service>/records/usage-logs/{MONTH}/{YEAR}

Esse ponto de extremidade de logs de uso retorna uma resposta JSON semelhante ao exemplo a seguir:

{
  "apiType": "string",
  "serviceName": "string",
  "meters": [
    {
      "name": "string",
      "quantity": 56097
    }
  ]
}

Resolução de Problemas

Execute o contêiner com uma montagem de saída e registro habilitado. Essas configurações permitem que o contêiner gere arquivos de log que são úteis para solucionar problemas que ocorrem ao iniciar ou executar o contêiner.

Gorjeta

Para obter mais informações e orientações sobre solução de problemas, consulte Perguntas freqüentes (FAQ) sobre contêineres desconectados.

Próximos passos