Configurar contêineres de OCR de Leitura do Docker

Você pode configurar o ambiente de runtime do contêiner de OCR de Leitura da Visão de IA do Azure usando os argumentos de comando docker run. Esse contêiner tem várias configurações obrigatórias e outras configurações opcionais. Há vários exemplos do comando disponíveis. As configurações específicas do contêiner são as configurações de cobrança.

Definições de configuração

O contêiner tem as seguintes configurações:

Obrigatório Configuração Finalidade
Sim ApiKey Rastreia informações de cobrança.
Não ApplicationInsights Permite a adição de suporte a dados telemétricos do Azure Application Insights para seu contêiner.
Sim Billing Especifica o URI do ponto de extremidade do recurso de serviços no Azure.
Sim Eula Indica que você aceitou a licença para o contêiner.
Não Fluentd Grava log e, opcionalmente, dados telemétricos em um servidor do Fluentd.
Não Proxy HTTP Configura um proxy HTTP para fazer solicitações de saída.
Não Logging Fornece suporte a registro de log do ASP.NET Core para seu contêiner.
Não Mounts Lê e grava dados do computador host para o contêiner e do contêiner de volta para o computador host.

Importante

As configurações ApiKey, Billing e Eula são usadas juntas e você deve fornecer valores válidos para todos os três; caso contrário, seu contêiner não será iniciado. Para obter mais informações sobre como usar essas configurações para instanciar um contêiner, consulte Faturamento.

O contêiner também tem as seguintes definições de configuração específica:

Obrigatório Configuração Finalidade
Não ReadEngineConfig:ResultExpirationPeriod Somente contêineres v2.0. Período de término do resultado em horas. O padrão é 48 horas. A configuração especifica quando o sistema deverá limpar os resultados de reconhecimento. Por exemplo, no caso resultExpirationPeriod=1, o sistema limpará o resultado do reconhecimento uma hora após o processo. No caso de resultExpirationPeriod=0, o sistema limpará o resultado do reconhecimento após a recuperação do resultado.
Não Cache: Redis Somente contêineres v2.0. Habilita o armazenamento do Redis para armazenar resultados. Um cache será necessário caso vários contêineres de OCR de leitura sejam inseridos atrás de um balanceador de carga.
Não Queue:RabbitMQ Somente contêineres v2.0. Habilita o RabbitMQ para despachar tarefas. A configuração será útil quando vários contêineres de OCR de leitura forem inseridos atrás de um balanceador de carga.
Não Queue:Azure:QueueVisibilityTimeoutInMilliseconds Somente contêineres v3.x. O tempo que uma mensagem levará para ficar invisível quando outro trabalhador estiver executando o processamento dela.
Não Storage::DocumentStore::MongoDB Somente contêineres v2.0. Habilita o MongoDB para executar um armazenamento permanente de resultados.
Não Storage:ObjectStore:AzureBlob:ConnectionString Somente contêineres v3.x. A cadeia de conexão do Armazenamento de Blobs do Azure.
Não Storage:TimeToLiveInDays Somente contêineres v3.x. Período de término do resultado em dias. A configuração especifica quando o sistema deverá limpar os resultados de reconhecimento. O padrão é a cada dois dias. Isso significa que nenhum resultado ativo por mais tempo do que esse período terá garantia de ser recuperado com êxito. O valor é inteiro e deve estar entre 1 e 7 dias.
Não StorageTimeToLiveInMinutes v3.2-model-2021-09-30-preview e novos contêineres. Período de validade do resultado em minutos. A configuração especifica quando o sistema deverá limpar os resultados de reconhecimento. O padrão é a cada dois dias (2880 minutos). Isso significa que nenhum resultado ativo por mais tempo do que esse período terá garantia de ser recuperado com êxito. O valor é inteiro e deve estar entre 60 minutos e 7 dias (10080 minutos).
Não Task:MaxRunningTimeSpanInMinutes Somente contêineres v3.x. Tempo máximo de execução de uma solicitação. O padrão é de 60 minutos.
Não EnableSyncNTPServer Somente contêineres v3.x, exceto para contêineres v3.2-model-2021-09-30-preview e mais recentes. Habilita o mecanismo de sincronização do servidor NTP, que garante a sincronização entre a hora do sistema e o runtime de tarefas esperado. Observe que isso requer tráfego de rede externo. O padrão é true.
Não NTPServerAddress Somente contêineres v3.x, exceto para contêineres v3.2-model-2021-09-30-preview e mais recentes. Servidor NTP para sincronizar a hora. O padrão é time.windows.com.
Não Mounts:Shared Somente contêineres v3.x. Pasta local para armazenar o resultado de reconhecimento. O padrão é /share. Para executar o contêiner sem usar o armazenamento de Blobs do Azure, é recomendável montar um volume nessa pasta para garantir que você tenha espaço suficiente para os resultados de reconhecimento.

Configuração de configuração do ApiKey

A configuração ApiKey especifica a chave do recurso Visão usada para rastrear as informações de cobrança do contêiner. Especifique um valor para o ApiKey e o valor deve ser uma chave válida para o recurso Visão especificado para a configuração Billing.

Essa configuração pode ser localizada no seguinte local:

  • Portal do Azure: Gerenciamento de Recursos dos serviços de IA do Azure, em Chaves

Configuração applicationInsights

A configuração ApplicationInsights permite que você adicione suporte a dados telemétricos do Azure Application Insights para seu contêiner. O Application Insights fornece um monitoramento detalhado do seu contêiner. Você pode monitorar facilmente seu contêiner quanto a disponibilidade, desempenho e uso. Você pode identificar e diagnosticar erros em seu contêiner rapidamente.

A tabela a seguir descreve as definições de configuração com suporte sob o ApplicationInsights seção.

Obrigatório Nome Tipo de dados Descrição
Não InstrumentationKey String A chave de instrumentação da instância do Application Insights para o qual telemetria de dados para o contêiner são enviados. Para obter mais informações, consulte Application Insights para ASP.NET Core.

Exemplo:
InstrumentationKey=123456789

Definição de configuração de cobrança

A configuração Billing especifica o URI do ponto de extremidade de um recurso dos serviços de IA do Azure no Azure usado para medir informações de cobrança para o contêiner. Será preciso especificar um valor para essa definição de configuração. Além disso, o valor deverá ser um URI do ponto de extremidade válido para um recurso dos serviços de IA do Azure. O contêiner relata o uso a cada 10 a 15 minutos.

Essa configuração pode ser localizada no seguinte local:

  • Portal do Azure: Visão geral dos serviços de IA do Azure rotulados como Endpoint

Lembre-se de adicionar o roteamento vision/<version> ao URI do ponto de extremidade, conforme mostrado na tabela a seguir.

Obrigatório Nome Tipo de dados Descrição
Sim Billing String URI do ponto de extremidade de cobrança

Exemplo:
Billing=https://westcentralus.api.cognitive.microsoft.com/vision/v3.2

Configuração de EULA

A configuração Eula indica que você aceitou a licença para o contêiner. Você deve especificar um valor para essa definição de configuração e o valor deve ser definido como accept.

Obrigatório Nome Tipo de dados Descrição
Sim Eula String Aceitação da licença

Exemplo:
Eula=accept

Os contêineres dos serviços de IA do Azure estão licenciados de acordo com o seu contrato que rege o uso do Azure. Se você não tiver um contrato existente que rege o uso do Azure, você concorda que o seu contrato que rege o uso do Azure é o Contrato de Assinatura do Microsoft Online, que incorpora os Termos de Serviços Online . Para versões prévias, você também concorda com os Termos de Uso Adicionais para Versões Prévias do Microsoft Azure. Ao usar o contêiner, você concorda com estes termos.

Configurações de Fluentd

O Fluentd é um coletor de dados de software livre para registro em log unificado. As configurações do Fluentd gerenciam a conexão do contêiner com um servidor Fluentd. O contêiner inclui um provedor de registro em log do Fluentd, que permite que seu contêiner grave logs e, opcionalmente, dados de métrica para um servidor do Fluentd.

A tabela a seguir descreve as definições de configuração com suporte sob o Fluentd seção.

Nome Tipo de dados Descrição
Host String O endereço IP ou o nome do host DNS do servidor Fluentd.
Port Integer A porta do servidor Fluentd.
O valor padrão é 24224.
HeartbeatMs Integer O intervalo de pulsação, em milissegundos. Se nenhum tráfego de evento tiver sido enviado antes que esse intervalo expire, uma pulsação será enviada ao servidor Fluentd. O valor padrão é 60.000 milissegundos (1 minuto).
SendBufferSize Integer O espaço de buffer de rede, em bytes, alocado para operações de envio. O valor padrão é 32768 bytes (32 kilobytes).
TlsConnectionEstablishmentTimeoutMs Integer O tempo de limite, em milissegundos, para estabelecer uma conexão SSL/TLS com o servidor do Fluentd. O valor padrão é 10.000 milissegundos (10 segundos).
Se UseTLS for definido como false, esse valor é ignorado.
UseTLS Boolean Indica se o contêiner deve usar SSL / TLS para se comunicar com o servidor Fluentd. O valor padrão é false.

Configurações das credenciais de proxy HTTP

Se você precisar configurar um proxy HTTP para fazer solicitações de saída, use estes dois argumentos:

Nome Tipo de dados Descrição
HTTP_PROXY string O proxy a ser usado, por exemplo, http://proxy:8888
<proxy-url>
HTTP_PROXY_CREDS string Quaisquer credenciais necessárias para autenticação no proxy, por exemplo, username:password. Esse valor deve estar em letras minúsculas.
<proxy-user> string O usuário para o proxy.
<proxy-password> string A senha associada ao <proxy-user> para o proxy.
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password> \

Configurações de log

As configurações Logging gerenciam o suporte ao registro em log do ASP.NET Core para o contêiner. Você pode usar as mesmas definições de configuração e valores para o contêiner usado em um aplicativo ASP.NET Core.

Os provedores de registro em log a seguir são suportados pelo contêiner:

Provedor Finalidade
Console O ASP.NET Core Console provedor de log. Todas as definições de configuração do ASP.NET Core e os valores padrão desse provedor de log são suportados.
Depurar O ASP.NET Core Debug provedor de log. Todas as definições de configuração do ASP.NET Core e os valores padrão desse provedor de log são suportados.
Disco O provedor de log do JSON. Esse provedor de log grava dados de log na montagem de saída.

Este comando de contêiner armazena informações de registro em log no formato JSON para a montagem de saída:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

Este comando de contêiner mostra informações de depuração prefixadas com dbug enquanto o contêiner está em execução:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

Registro em log do Disk

O provedor de registro Disk suporta as seguintes configurações:

Nome Tipo de dados Descrição
Format String O formato de saída para arquivos de log.
Nota: Esse valor deve ser definido como json para ativar o provedor de registro. Se esse valor for especificado sem especificar também uma montagem de saída durante a instanciação de um contêiner, ocorrerá um erro.
MaxFileSize Integer O tamanho máximo, em megabytes (MB), de um arquivo de log. Quando o tamanho do arquivo de log atual atende ou excede esse valor, um novo arquivo de log é iniciado pelo provedor de log. Se -1 for especificado, o tamanho do arquivo de log será limitado apenas pelo tamanho máximo do arquivo, se houver, para a montagem de saída. O valor padrão é 1.

Para obter mais informações sobre como configurar o suporte ao registro em log do ASP.NET Core, consulte Configuração do arquivo de configurações.

Configurações de montagem

Use montagens de associação para ler e gravar dados do contêiner e para ele. Você pode especificar uma montagem de entrada ou saída especificando a opção --mount no comando docker run.

Os contêineres da Visão de IA do Azure não usam montagens de entrada ou saída para armazenar dados de treinamento ou de serviço.

A sintaxe exata do local da montagem do host varia de acordo com o sistema operacional do host. Além disso, a localização de montagem do computador host pode não estar acessível devido a um conflito entre as permissões usadas pela conta de serviço do Docker e as permissões da localização de montagem do host.

Opcional Nome Tipo de dados Descrição
Não permitido Input String Os contêineres de Visão de IA do Azure não usam isso.
Opcional Output String O destino de montagem de saída. O valor padrão é /output. Esse é o local dos logs. Isso inclui logs de contêiner.

Exemplo:
--mount type=bind,src=c:\output,target=/output

Comandos docker run de exemplo

Os exemplos a seguir usam as definições de configuração para ilustrar como escrever e usar comandos docker run. Quando em execução, o contêiner continuará a ser executado até que você o pare.

  • Caractere de continuação de linha: os comandos do Docker das seções a seguir usam a barra invertida, \, como um caractere de continuação de linha. Substitua ou remova essa barra com base nos requisitos do sistema operacional de seu computador host.
  • Ordem do argumento: não altere a ordem dos argumentos, a menos que você tenha muita familiaridade com os contêineres do Docker.

Substitua {argument_name} pelos seus próprios valores:

Espaço reservado Valor Formato ou exemplo
{API_KEY} A chave de ponto de extremidade do recurso Visão na página de chaves de recurso. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} O valor do ponto de extremidade de cobrança está disponível na página de visão geral do recurso. Confira Coletar os parâmetros necessários para ver exemplos explícitos.

Observação

Os novos recursos criados após 1º de julho de 2019 usarão nomes de subdomínio personalizados. Para obter mais informações e uma lista completa de pontos de extremidade regionais, confira Nomes de subdomínio personalizados para os serviços de IA do Azure.

Importante

As opções Eula, Billing e ApiKey devem ser especificadas para executar o contêiner; caso contrário, o contêiner não será iniciado. Para mais informações, consulte Faturamento. O valor de ApiKey é a Chave da página de chaves do recurso Visão do Azure.

Exemplos de contêineres do Docker

Os exemplos abaixo do Docker são específicos para o contêiner de OCR de Leitura.

Exemplo básico

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Exemplo de registro em log

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
Logging:Console:LogLevel:Default=Information

Próximas etapas