Instalar e executar Contêineres de Fala com Docker

Ao usar contêineres, você pode usar um subconjunto dos recursos do serviço de Fala em seu próprio ambiente. Neste artigo, você aprenderá a fazer download, instalar e executar um contêiner de Fala.

Observação

O preço do contêiner desconectado e os níveis de compromisso variam em relação aos contêineres padrão. Para obter mais informações, confira Preços do serviço de Fala.

Pré-requisitos

É necessário atender aos pré-requisitos a seguir antes de usar os contêineres do serviço de Fala. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar. Você precisa de:

  • Docker instalado em um computador host. O Docker deve ser configurado para permitir que os contêineres conectem-se e enviem dados de cobrança para o Azure.
    • No Windows, o Docker também deve ser configurado para dar suporte a contêineres do Linux.
    • É preciso ter conhecimentos básicos sobre os conceitos do Docker.
  • Um recurso do serviço de Fala no tipo de preço Gratuito (F0) ou Standard (S).

Argumentos de cobrança

Os contêineres de Fala não estão licenciados para serem executados sem estarem conectados ao Azure para medição. Você deve configurar seu contêiner para sempre comunicar as informações de cobrança com o serviço de medição.

São necessários três parâmetros principais para todos os contêineres de IA do Azure. O Termos de Licença para Software Microsoft precisam estar presentes com um valor igual a aceito. Um URI do ponto de extremidade e uma chave de API também são necessários.

Consultas ao contêiner são cobradas pelo tipo de preço do recurso do Azure usado para o parâmetro ApiKey.

O comando docker run inicia o contêiner quando todas as três opções a seguir são fornecidas com valores válidos:

Opção Descrição
ApiKey A chave de API do recurso de Fala usado para rastrear informações de cobrança.
O valor de ApiKey é usado para iniciar o contêiner e está disponível na página Chaves do portal do Azure do recurso de Fala correspondente. Acesse a página Chaves e selecione o ícone Copiar para a área de transferência.
Billing O ponto de extremidade do recurso de Fala usado para rastrear informações de cobrança.
O ponto de extremidade está disponível na página Visão geral do portal do Azure do recurso de Fala correspondente. Acesse a página Visão geral, posicione o cursor sobre o ponto de extremidade, e um ícone Copiar para a área de transferência será exibido. Copie e use o ponto de extremidade quando necessário.
Eula Indica que você aceitou a licença do contêiner.
O valor dessa opção deve ser definido como aceitar.

Importante

Essas chaves de assinatura são usadas para acessar a API dos serviços de IA do Azure. Não compartilhe suas chaves. Armazene-as com segurança. Por exemplo, use o Azure Key Vault. Também recomendamos que você regenere essas chaves regularmente. Apenas uma chave é necessária para fazer uma chamada à API. Ao regenerar a primeira chave, você pode usar a segunda chave para acesso contínuo ao serviço.

O contêiner precisa dos valores de argumento de cobrança para ser executado. Esses valores permitem que o contêiner se conecte ao ponto de extremidade de cobrança. O contêiner relata o uso a cada 10 a 15 minutos. Se o contêiner não se conectar ao Azure dentro da janela de tempo permitida, ele continuará sendo executado, mas não atenderá a consultas até que o ponto de extremidade de cobrança seja restaurado. Serão realizadas 10 tentativas de conexão no mesmo intervalo de tempo de 10 a 15 minutos. Se não for possível conectar-se ao ponto de extremidade de cobrança dentro das 10 tentativas, o contêiner interromperá as solicitações de serviço. Para obter um exemplo das informações enviadas à Microsoft para cobrança, confira as Perguntas frequentes sobre o contêiner de IA do Azure na documentação dos serviços de IA do Azure.

Para obter mais informações sobre essas opções, consulte Configurar contêineres.

Recomendações e requisitos do contêiner

A seguinte tabela descreve uma alocação mínima e recomendada de recursos para cada contêiner de Fala:

Contêiner Mínimo Recomendadas Modelo de Fala
Conversão de fala em texto 4 núcleos e 4 GB de memória Oito núcleos, 8 GB de memória Mais de 4 a 8 GB de memória
Conversão de fala em texto personalizada 4 núcleos e 4 GB de memória Oito núcleos, 8 GB de memória Mais de 4 a 8 GB de memória
Identificação do idioma de fala 1 núcleos e 1 GB de memória 1 núcleos e 1 GB de memória n/a
Conversão de texto em fala neural 6 núcleos e 12 GB de memória 8 núcleos e 16 GB de memória n/a

Cada núcleo precisa ser de pelo menos 2,6 GHz (gigahertz) ou mais rápido.

Memória e núcleo correspondem às configurações --cpus e --memory, que são usadas como parte do comando docker run.

Observação

As alocações mínima e recomendada se baseiam nos limites do Docker e não nos recursos do computador host. Por exemplo, os contêineres de conversão de fala em texto mapeiam partes de mapa de memória de um modelo de linguagem grande. Recomendamos que todo o arquivo se ajuste à memória. Você precisa adicionar mais 4 a 8 GB para carregar os modelos de fala (consulte a tabela anterior). Além disso, a primeira execução de um dos contêineres poderá levar mais tempo, pois os modelos estão sendo paginados na memória.

Recomendações e requisitos do computador host

O host é um computador baseado em x64 que executa o contêiner do Docker. Ele pode ser um computador local ou um serviço de hospedagem do Docker no Azure, como:

Observação

Os contêineres dão suporte a uma entrada de áudio compactada no SDK de Fala por meio do GStreamer. Para instalar o GStreamer em um contêiner, siga as instruções do Linux para o GStreamer no artigo Usar a entrada de áudio compactada por codec com o SDK de Fala.

Suporte para a extensão de vetor avançada

O host é o computador que executa o contêiner do Docker. O host deverá ser compatível com Extensões de Vetor Avançadas (AVX2). É possível verificar o suporte para AVX2 em hosts Linux usando o seguinte comando:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Aviso

O computador host será necessário para dar suporte ao AVX2. O contêiner não funcionará de modo adequado sem o suporte ao AVX2.

Executar o contêiner

Use o comando docker run para executar o contêiner. Quando em execução, o contêiner continuará a ser executado até que você pare o contêiner.

Anote as seguintes melhores práticas com o comandodocker run:

  • 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 esse caractere com base nos requisitos do seu sistema operacional do host.
  • Ordem do argumento: não altere a ordem dos argumentos, a menos que você conheça os contêineres do Docker.

Você pode usar o comando imagens do estivador para listar as imagens do contêiner transferidas por download. O comando a seguir lista a ID, o repositório e a marca de cada imagem baixada do contêiner, formatada como uma tabela:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

Aqui está um exemplo de resultado:

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Validar se um contêiner está em execução

Há várias maneiras de validar se um contêiner está em execução. Localize o endereço IP externo e a porta exposta do contêiner em questão e abra seu navegador da Web favorito. Use as várias URLs de solicitação a seguir para validar se o contêiner está em execução.

Os exemplos de URLs de solicitação listados aqui são http://localhost:5000, mas seu contêiner específico poderá variar. Dependa do endereço IP externo do seu contêiner e da porta exposta.

URL de Solicitação Finalidade
http://localhost:5000/ O contêiner fornece uma home page.
http://localhost:5000/ready Solicitada com GET, essa URL fornece uma verificação que indica que o contêiner está pronto para aceitar uma consulta no modelo. Essa solicitação pode ser usada para testes de preparação e de execução do Kubernetes.
http://localhost:5000/status Também solicitada com GET, essa URL verifica se a chave API usada para iniciar o contêiner é válida sem causar uma consulta de ponto de extremidade. Essa solicitação pode ser usada para testes de preparação e de execução do Kubernetes.
http://localhost:5000/swagger O contêiner fornece um conjunto completo de documentação para os pontos de extremidade e um recurso Experimentar. Com esse recurso, é possível inserir suas configurações em um formulário HTML baseado na Web e realizar a consulta sem precisar escrever nenhum código. Após a consulta ser retornada, um exemplo de comando CURL será fornecido para demonstrar o formato do corpo e dos cabeçalhos HTTP exigidos.

Parar o contêiner

Para desligar o contêiner, no ambiente de linha de comando em que o contêiner estiver em execução, selecione Ctrl+C.

Executar vários contêineres no mesmo host

Se você pretende executar vários contêineres com portas expostas, execute cada um deles com uma porta exposta diferente. Por exemplo, execute o primeiro contêiner na porta 5000 e o segundo contêiner na porta 5001.

É possível ter esse contêiner e um contêiner do IA do Azure em execução no HOST juntos. Também é possível ter vários contêineres do mesmo contêiner de IA do Azure em execução.

URLs do host

Observação

Caso esteja executando vários contêineres, use um número da porta exclusivo.

Protocolo URL do host Contêineres
WS ws://localhost:5000 Conversão de fala em texto

Conversão de fala em texto personalizada
HTTP http://localhost:5000 Conversão de texto em fala neural

Identificação do idioma de fala

Para obter mais informações sobre o uso dos protocolos WSS e HTTPS, confira Segurança de contêiner na documentação dos serviços de IA do Azure.

Solução de problemas

Ao iniciar ou executar o contêiner, você poderá ter problemas. Use a montagem de saída e habilite o registro em log. Essa ação permitirá que o contêiner crie arquivos de log úteis durante a solução de problemas.

Dica

Para obter mais informações e diretrizes para a solução de problemas, confira Perguntas frequentes sobre os contêineres de IA do Azure na documentação dos serviços de IA do Azure.

Configurações de log

Os contêineres de Fala vêm com suporte ao registro em log no ASP.NET Core. Aqui está um exemplo do neural-text-to-speech container iniciado com o log padrão no console:

docker run --rm -it -p 5000:5000 --memory 12g --cpus 6 \
mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
Logging:Console:LogLevel:Default=Information

Para obter mais informações sobre o registro em log, confira Configurar contêineres de Fala e registros de uso na documentação dos serviços de IA do Azure.

Contêiner de diagnóstico da Microsoft

Se estiver com problemas para executar um contêiner de IA do Azure, tente usar o contêiner de diagnóstico da Microsoft. Use esse contêiner para diagnosticar erros comuns no ambiente de implantação que podem impedir que os contêineres de IA do Azure funcionem conforme o esperado.

Para obter o contêiner, use o seguinte comando docker pull:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

Em seguida, execute o contêiner. Substitua {ENDPOINT_URI} pelo ponto de extremidade e {API_KEY} pela chave do recurso:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

O contêiner testa a conectividade de rede com o ponto de extremidade de cobrança.

Executar contêineres desconectados

Para executar contêineres desconectados (não conectados à Internet), você deve enviar esse formulário de solicitação e aguardar aprovação. Para obter mais informações sobre como aplicar e adquirir um plano de compromisso para usar contêineres em ambientes desconectados, consulte Como usar contêineres em ambientes desconectados na documentação dos Serviços de IA do Azure.

Próximas etapas