Saiba mais sobre a inferência de geração de voz de IA com TorchServe em GPUs NVIDIA

Você pode projetar um serviço Text-to-Speech para ser executado no Oracle Cloud Infrastructure Kubernetes Engine usando TorchServe em GPUs NVIDIA. Essa técnica também pode ser aplicada a outras cargas de trabalho de inferência, como classificação de imagens, detecção de objetos, processamento de linguagem natural e sistemas de recomendação.

Um servidor de inferência é um sistema especializado que hospeda modelos de machine learning treinados e atende às suas previsões (inferências) usando APIs. Ele lida com os desafios críticos de produção de dimensionamento, batching e monitoramento: transformando um modelo estático em um serviço web confiável e de alto desempenho.

TorchServe é o framework oficial de serviço de modelo para PyTorch.

Seu trabalho é obter seu arquivo .mar treinado (um arquivo de modelo empacotado) e disponibilizá-lo em pontos finais de API ou gRPC RESTful. Em vez de gravar lógica e servidores Web personalizados, você compacta seu modelo e o entrega para TorchServe. Ele fornece instantaneamente:

  • Escalabilidade: gerencia automaticamente os colaboradores para lidar com o tráfego de alto volume.
  • Desempenho de Baixa Latência: Usa recursos avançados, como lotes de vários modelos, para agrupar solicitações para processamento eficiente.
  • Gerenciamento de Modelos: Permite registrar, controlar a versão e reverter modelos sem tempo de inatividade.
  • Monitoramento Incorporado: rastreia métricas como latência de inferência e solicitações por segundo prontas para uso.

Essencialmente, o TorchServe preenche a lacuna entre a experimentação do PyTorch e a implantação da produção, transformando seus modelos avançados em um serviço de previsão robusto com o mínimo de esforço. É a ferramenta essencial para levar o PyTorch do laboratório de pesquisa para o mundo real.

Observação:

TorchServe está atualmente em modo de manutenção limitada. Embora permaneça livre de uso e ainda seja empregado por alguns clientes existentes para casos de uso específicos ou conveniência de teste, recomendamos avaliar sua adequação de longo prazo para implementações de produção. Analise a documentação oficial do PyTorch TorchServe em https://docs.pytorch.org/serve/ para obter o status e as considerações atuais.

Estes são alguns dos servidores de inferência no mercado:

Servidor Desenvolvedor Funcionalidades Principais Melhor para Suporte à Estrutura
NVIDIA Triton NVIDIA
  • Suporte a várias estruturas (PyTorch, TensorFlow, ONNX etc.)
  • Batching dinâmico, paralelismo de modelos
  • Otimizado para GPUs (TensorRT)
Implantações de alto desempenho em vários modelos PyTorch, TF, ONNX, TensorRT
TorchServe PyTorch (anteriormente Meta)
  • Integração nativa de PyTorch
  • API Python Simples
  • Batching dinâmico básico
Implantações com foco em PyTorch Somente PyTorch
TensorFlow Porção Google
  • Otimizado para modelos TensorFlow
  • Suporta controle de versão do modelo
Ecossistemas TensorFlow TensorFlow

Arquitetura

Essa arquitetura mostra um exemplo de implantação de inferência de geração de voz de IA.



transperfect-oke-arch-oracle.zip

Um modelo de voz treinado e personalizado, ajustado a partir de um modelo básico do Hugging Face, é implantado no TorchServe para inferência. TorchServe atua como a camada de serviço, hospedando o modelo e gerenciando solicitações de usuários de entrada com eficiência.

Quando um usuário envia uma entrada de texto, o TorchServe processa a solicitação, chama o modelo e renderiza a saída como fala sintética de alta qualidade.

Para segmentos de texto em fala, cada documento pode conter vários blocos, e cada bloco é composto de segmentos. Por exemplo:

Document  (chapter)
 └── Block (paragraph)
      └── Segment (sentence)

Essa arquitetura suporta os seguintes componentes:

  • Região da OCI

    Uma região do OCI é uma área geográfica localizada que contém um ou mais data centers, hospedando domínios de disponibilidade. Regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou mesmo continentes).

  • Rede e sub-rede virtual na nuvem da OCI

    VCN (rede virtual na nuvem) é uma rede personalizável definida por software que você configura em uma região do OCI. Assim como as redes tradicionais do data center, as VCNs dão a você controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos de CIDR (Classless Inter-domain Routing) não sobrepostos que você pode alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.

  • OCI Registry

    O Oracle Cloud Infrastructure Registry é um serviço gerenciado pelo sistema Oracle que permite simplificar seu workflow de desenvolvimento para produção. O Registry facilita o armazenamento, o compartilhamento e o gerenciamento de artefatos do desenvolvimento, como imagens Docker.

  • OCI Object Storage

    O OCI Object Storage oferece acesso a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de banco de dados, dados analíticos e conteúdo avançado como imagens e vídeos. Você pode armazenar dados com segurança diretamente de aplicativos ou de dentro da plataforma de nuvem. Você pode dimensionar o armazenamento sem sofrer qualquer degradação no desempenho ou na confiabilidade de serviço.

    Use armazenamento padrão para armazenamento "quente" que você precisa acessar com rapidez, rapidez e frequência. Use armazenamento de arquivo compactado para armazenamento "frio" que você retém por longos períodos de tempo e acesso raro.

  • OCI File Storage

    O Oracle Cloud Infrastructure File Storage fornece um sistema de arquivos da rede durável, escalável, seguro e de nível empresarial. Você pode estabelecer conexão com o OCI File Storage de qualquer instância bare metal, de máquina virtual ou de contêiner em uma VCN. Você também pode acessar o OCI File Storage de fora da VCN usando o Oracle Cloud Infrastructure FastConnect e a IPSec VPN.

  • Volumes em Blocos do OCI

    Com o Oracle Cloud Infrastructure Block Volumes, você pode criar, anexar, conectar e mover volumes de armazenamento e alterar o desempenho do volume para atender aos seus requisitos de armazenamento, desempenho e aplicativo. Depois de anexar e conectar um volume a uma instância, você pode usar o volume como disco rígido comum. Você também pode desconectar um volume e anexá-lo a outra instância sem perder dados.

  • Balanceador de carga

    O Oracle Cloud Infrastructure Load Balancing fornece distribuição automatizada de tráfego de um único ponto de entrada para vários servidores.

  • Mecanismo do Kubernetes do OCI

    O Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos conteinerizados na nuvem. Você especifica os recursos de computação necessários aos seus aplicativos e o OKE os provisiona no OCI em uma tenancy existente. O OKE usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres em clusters de hosts.

  • Gateway de serviço

    Um gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle atravessa a malha de rede Oracle e não atravessa a internet.

  • Gateway de internet

    Um gateway de internet permite o tráfego entre as sub-redes públicas em uma VCN e a internet pública.

  • Registro em Log do OCI
    O Oracle Cloud Infrastructure Logging é um serviço altamente escalável e totalmente gerenciado que fornece acesso aos seguintes tipos de logs de seus recursos na nuvem:
    • Logs de auditoria: Logs relacionados a eventos produzidos pelo OCI Audit.
    • Logs de serviço: Logs publicados por serviços individuais, como OCI API Gateway, OCI Events, OCI Functions, OCI Load Balancing, OCI Object Storage e logs de fluxo da VCN.
    • Logs personalizados: Logs que contêm informações de diagnóstico dos aplicativos personalizados, de outros provedores de nuvem ou de um ambiente on-premises.
  • Monitoramento do OCI

    O Oracle Cloud Infrastructure Monitoring monitora ativa e passivamente seus recursos de nuvem e usa alarmes para notificá-lo quando as métricas atendem aos acionadores especificados.

  • Política

    Uma política do Oracle Cloud Infrastructure Identity and Access Management especifica quem pode acessar quais recursos e como. O acesso é concedido no nível do grupo e do compartimento. Significa que você pode gravar uma política que conceda a um grupo um tipo específico de acesso em um compartimento específico ou na tenancy.

  • OCI Vault

    O Oracle Cloud Infrastructure Vault permite criar e gerenciar centralmente as chaves de criptografia que protegem seus dados e as credenciais secretas usadas para proteger o acesso aos seus recursos na nuvem. O gerenciamento de chaves padrão são chaves gerenciadas pela Oracle. Você também pode usar chaves gerenciadas pelo cliente que usam o OCI Vault. O OCI Vault oferece um conjunto avançado de APIs REST para gerenciar vaults e chaves.

  • Hugging Face

    O Hugging Face é uma plataforma colaborativa e um hub para machine learning que fornece modelos de IA pré-treinados, ferramentas de desenvolvimento e infraestrutura de hospedagem para aplicações de IA, tornando o machine learning avançado acessível a desenvolvedores em todo o mundo.

Sobre o Workflow de Design da Solução

Esta solução de geração de voz implementa o seguinte fluxo de trabalho de design.

  1. O usuário inicia uma conversão de projeto.
  2. O aplicativo adiciona uma mensagem à fila RabbitMQ para cada tarefa de conversão dentro do projeto.
  3. Cada colaborador recupera uma mensagem da fila.
  4. O colaborador processa a mensagem e envia uma solicitação para TorchServe.
  5. TorchServe executa a inferência e retorna os resultados para o colaborador.
  6. O colaborador processa os resultados e coloca uma mensagem de volta na fila.
  7. O aplicativo recupera a mensagem de resultados da fila e a armazena no banco de dados.
  8. O usuário é notificado dos resultados na IU.

Observação:

Para modelos leves, um trabalhador envia a solicitação de inferência para nós da CPU.