Menu fechado

Model Serving: Como escalar seus modelos em produção

Model Serving

📊 Métricas e Performance

Volume de Tráfego e Escopo

A arquitetura centralizada baseada em uma camada de proxy customizada, conhecida como Switchboard, é projetada para lidar com um volume de tráfego extremamente alto, atingindo 1 milhão de requisições por segundo (RPS). Além disso, o escopo da arquitetura abrange centenas de tipos e versões de modelos servidos, o que exige uma gestão eficiente e escalável. Isso é alcançado por meio de uma abordagem de design que prioriza a flexibilidade e a capacidade de adaptação a novas demandas.

Desafios de Performance

Para atender a essas demandas, a arquitetura deve ser capaz de gerenciar o tráfego de forma eficiente, minimizando a latência e garantindo a disponibilidade dos serviços. A camada de proxy customizada (Switchboard) desempenha um papel crucial nesse contexto, pois é responsável por rotear as requisições para os modelos apropriados, além de realizar tarefas como enriquecimento de inputs e gerenciamento de ciclo de vida de modelos. A otimização do desempenho é alcançada por meio de técnicas de caching, balanceamento de carga e escalabilidade horizontal.

Importância da Escalabilidade

A escalabilidade é fundamental para a arquitetura, pois permite que o sistema atenda à crescente demanda por serviços de modelagem. Com a capacidade de lidar com centenas de tipos e versões de modelos, a arquitetura pode ser facilmente estendida para atender a novas necessidades, garantindo que o sistema permaneça estável e performático mesmo sob cargas de tráfego intensas. Isso é alcançado por meio de uma abordagem de design que prioriza a modularidade e a flexibilidade.

📚 Definições Técnicas e Conceitos

Model Serving (Netflix)

Model Serving é um fluxo de trabalho completo que encapsula pré-processamento, computação de features, inferência (componente treinado por ML) e pós-processamento. Esse conceito é fundamental para a arquitetura de model serving, pois permite que os modelos sejam servidos de forma eficiente e escalável. A Netflix é um exemplo de empresa que utiliza essa abordagem para servir modelos de recomendação de conteúdo.

Objective

Objective é uma enumeração definida pela plataforma que atua como contrato entre cliente e sistema, identificando o caso de uso de negócio (ex: ContinueWatchingRanking), desacoplando o cliente da implementação do modelo. Isso permite que os clientes sejam agnósticos à implementação do modelo, o que facilita a manutenção e a evolução do sistema.

Switchboard

Switchboard é um serviço de roteamento centralizado (proxy layer) responsável por roteamento sensível ao contexto, enriquecimento de inputs, gerenciamento de ciclo de vida de modelos (Shadow mode, Canary, Rollbacks) e controle de concorrência e rate limiting. O Switchboard é um componente crítico da arquitetura de model serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

🔩 Princípios de Design da Plataforma

Independência de Cliente

A independência de cliente é um princípio fundamental na design da plataforma, garantindo que as iterações de modelos e testes A/B sejam opacos para o cliente. Isso significa que as mudanças na implementação do modelo não afetam a integração do cliente com a plataforma. Esse princípio é alcançado por meio de uma abordagem de design que prioriza a modularidade e a flexibilidade.

Abstração de Sharding

A abstração de sharding é outro princípio importante, que torna os clientes agnósticos à topologia de clusters e endereços VIP (Virtual IP). Isso permite que a plataforma gerencie a complexidade da infraestrutura sem afetar a experiência do cliente. A abstração de sharding é alcançada por meio de uma abordagem de design que prioriza a flexibilidade e a capacidade de adaptação a novas demandas.

Roteamento Flexível

O roteamento flexível é um princípio que suporta regras baseadas em experimentos A/B, shifts graduais de tráfego e overrides de clientes. Isso permite que a plataforma seja adaptada às necessidades específicas de cada cliente, sem comprometer a estabilidade e a escalabilidade da plataforma. O roteamento flexível é alcançado por meio de uma abordagem de design que prioriza a modularidade e a flexibilidade.

🚀 Capacidades Operacionais

Shadow Mode

A plataforma de model serving suporta a execução de modelos em produção sem impacto na experiência do usuário, permitindo a comparação de performance entre diferentes versões de modelos. O Shadow Mode é uma capacidade operacional importante, pois permite que os modelos sejam testados e validados em produção sem afetar a experiência do usuário.

Canary Deployments

A plataforma permite a divisão dinâmica de tráfego para rollout controlado de novas versões de modelos, reduzindo o risco de erros e melhorando a estabilidade do sistema. Os Canary Deployments são uma capacidade operacional importante, pois permitem que os modelos sejam implantados em produção de forma controlada e segura.

Rollback Instantâneo

A plataforma oferece a capacidade de reverter tráfego de versões instáveis para estáveis imediatamente, garantindo a disponibilidade e a confiabilidade do sistema. O Rollback Instantâneo é uma capacidade operacional importante, pois permite que os modelos sejam revertidos para versões estáveis em caso de erros ou problemas.

Integração com Endpoints gRPC

A plataforma suporta a integração nativa com a plataforma de experimentação, permitindo a comunicação eficiente e segura entre os componentes do sistema. A integração com Endpoints gRPC é uma capacidade operacional importante, pois permite que os modelos sejam integrados com outras plataformas e sistemas de forma eficiente e segura.

📈 Fluxo de Dados

Input e Feature Computation

O fluxo de dados na plataforma de serving começa com o input, que inclui contexto de requisição (UserId, Country, Device) e contexto de domínio (ex: lista de títulos, transação de pagamento). Em seguida, ocorre a feature computation, onde o modelo define os fatos necessários, e a plataforma de serving orquestra a busca desses dados em microserviços ou no ML Fact Store (para snapshots offline). O fluxo de dados é fundamental para a arquitetura de model serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Orquestração de Dados

A plataforma de serving é responsável por orquestrar a busca de dados em microserviços ou no ML Fact Store. Isso envolve a carga de modelos e dependências no Serving Cluster Shard, bem como a fornecimento de VIPs para o Switchboard. A orquestração de dados é fundamental para a arquitetura de model serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

ML Fact Store

O ML Fact Store é um componente importante na plataforma de serving, pois fornece uma forma eficiente de armazenar e recuperar dados para a feature computation. Isso permite que a plataforma de serving forneça resultados precisos e rápidos, mesmo em grandes volumes de tráfego. O ML Fact Store é uma capacidade operacional importante, pois permite que os modelos sejam servidos de forma eficiente e escalável.

📊 Arquitetura de Model Serving: Switchboard vs. Lightbulb

Visão Geral da Arquitetura

A arquitetura de Model Serving é um componente crítico em sistemas de aprendizado de máquina, responsável por gerenciar o fluxo de trabalho completo que envolve o pré-processamento, a computação de features, a inferência e o pós-processamento. Neste contexto, duas abordagens arquiteturais são comparadas: Switchboard (legado) e Lightbulb (nova arquitetura). A arquitetura de Model Serving é fundamental para a plataforma de serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Switchboard (Legado)

O Switchboard é uma plataforma de roteamento e configuração de modelos que utiliza JavaScript (compilado para JSON) para definir a lógica de roteamento e configuração dos modelos. O fluxo de controle do Switchboard envolve três etapas principais: Assignment, Validation e Mapping. O Switchboard é uma abordagem legada, que apresenta limitações críticas, como single point of failure, latência e acoplamento.




Limitações Críticas do Switchboard

O Switchboard apresenta várias limitações críticas, incluindo single point of failure, latência, acoplamento e custo. Essas limitações tornam a arquitetura de Switchboard inadequada para sistemas de aprendizado de máquina que exigem escalabilidade e flexibilidade. A arquitetura de Switchboard é uma abordagem legada, que não atende às necessidades atuais de sistemas de aprendizado de máquina.

Lightbulb (Nova Arquitetura)

A arquitetura Lightbulb visa desacoplar o roteamento da lógica de execução e remover o serviço de roteamento do caminho crítico da requisição. Ela consiste em dois componentes principais: Envoy e Lightbulb. O Envoy é responsável pelo roteamento de rede (VIPs) baseado em metadados, enquanto o Lightbulb resolve o contexto da requisição e fornece metadados de roteamento. A arquitetura Lightbulb é uma abordagem nova, que apresenta vantagens críticas, como roteamento flexível, isolamento de falhas e escalabilidade.

Separando Configuração e Roteamento

A Lightbulb separa a configuração do modelo e as regras de roteamento, permitindo uma maior flexibilidade e escalabilidade. A configuração do modelo define qual modelo usar e quais metadados são necessários, enquanto as regras de roteamento definem o VIP de destino para o modelo selecionado. A separação de configuração e roteamento é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Mecanismo de Roteamento da Lightbulb

O mecanismo de roteamento da Lightbulb utiliza um routingKey inserido nos headers da requisição para consumo pelo Envoy, e um ObjectiveConfig inserido no corpo da requisição. Isso permite um roteamento eficiente com overhead mínimo e isolamento de falhas por tenant. O mecanismo de roteamento da Lightbulb é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Vantagens da Lightbulb

A arquitetura Lightbulb oferece várias vantagens em relação ao Switchboard, incluindo roteamento flexível, isolamento de falhas, escalabilidade e separação clara entre configuração do modelo e regras de roteamento. A arquitetura Lightbulb é uma abordagem nova, que atende às necessidades atuais de sistemas de aprendizado de máquina que exigem escalabilidade e flexibilidade.

🔍 Separação de Configuração e Mecanismo de Roteamento

Visão Geral da Separação de Configuração

A nova arquitetura Lightbulb introduz uma separação clara entre a configuração do model serving e as regras de roteamento. Isso permite uma maior flexibilidade e escalabilidade, pois as configurações de modelo e roteamento podem ser gerenciadas independentemente. A separação de configuração é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Papel do Envoy

O Envoy desempenha um papel fundamental no mecanismo de roteamento da arquitetura Lightbulb. Ele é responsável pelo roteamento de rede baseado em metadados, o que permite uma separação clara entre a lógica de execução e o roteamento. O Envoy recebe as requisições e as redireciona para os modelos apropriados com base nos metadados fornecidos. O papel do Envoy é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Inserção de Metadados de Roteamento

A inserção de metadados de roteamento é feita de duas maneiras: routingKey e ObjectiveConfig. O routingKey é inserido nos headers da requisição para consumo pelo Envoy, enquanto o ObjectiveConfig é inserido no corpo da requisição. Isso permite um roteamento eficiente com overhead mínimo e isolamento de falhas por tenant. A inserção de metadados de roteamento é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Vantagens da Abordagem

A separação de configuração e o mecanismo de roteamento na arquitetura Lightbulb oferecem várias vantagens, incluindo roteamento flexível, separação clara entre lógica de execução e roteamento, redução do overhead de processamento e melhoria na gestão de falhas e escalabilidade. A abordagem de separação de configuração é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

📊 Métricas e Especificações Técnicas

Linguagem de Configuração e Tipos de Modelo

A nova arquitetura utiliza JavaScript como linguagem de configuração, compilada para JSON. Isso permite uma grande flexibilidade e facilidade de uso para os administradores do sistema. Além disso, a arquitetura suporta vários tipos de modelo, incluindo o tipo SCORER, que é um exemplo de como a plataforma pode ser personalizada para atender às necessidades específicas dos clientes. A linguagem de configuração e os tipos de modelo são fundamentais para a arquitetura de Model Serving, pois permitem que os modelos sejam servidos de forma eficiente e escalável.

Input Type e Infraestrutura de Suporte

O sistema utiliza o tipo de entrada constants.TITLE_INPUT_TYPE, que é uma constante pré-definida para garantir a consistência e a integridade dos dados de entrada. A infraestrutura de suporte inclui o uso do Gutenberg, um sistema de pub-sub para versionamento e carregamento dinâmico de regras, e o Envoy, um proxy para comunicação egressa e roteamento baseado em metadados. Isso permite que o sistema seja escalável e flexível, suportando mais de 30 serviços clientes. A infraestrutura de suporte é fundamental para a arquitetura de Model Serving, pois permite que os modelos sejam servidos de forma eficiente e escalável.

Especificações Técnicas e Escalabilidade

A arquitetura é projetada para ser escalável e pode suportar um grande volume de tráfego e requisições. As especificações técnicas incluem o uso de JavaScript como linguagem de configuração, o tipo de modelo SCORER e o tipo de entrada constants.TITLE_INPUT_TYPE. Além disso, a infraestrutura de suporte inclui o uso do Gutenberg e do Envoy, que permitem que o sistema seja flexível e escalável. Com essas especificações técnicas, a arquitetura pode suportar mais de 30 serviços clientes e garantir a entrega de serviços de alta qualidade e confiabilidade. As especificações técnicas e a escalabilidade são fundamentais para a arquitetura de Model Serving, pois permitem que os modelos sejam servidos de forma eficiente e escalável.

JavaScript
// Exemplo de configuração de modelo
const modelConfig = {
  // Configurações do modelo
};

// Exemplo de regras de roteamento
const routingRules = {
  // Regras de roteamento
};


Fonte: netflixtechblog.com.
Curadoria e Insights: Redação YTI&W (Developers).



Redação YTI&W-News

Developers | Yassutaro TI & Web

Notícias do universo do Desenvolvimento Web, dicas e tutoriais para Webmasters.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Publicado em:Desenvolvimento de Software,Engenharia de Software,Inteligência Artificial,Performance & Otimização
Fale Conosco
×

Inscreva-se em nossa Newsletter!


Receba nossos lançamentos e artigos em primera mão!