Arquitetura real · Pleno
Netflix Metaflow
Arquitetura real em produção. Pontos centrais: orquestração de workflows de ML e versionamento.
Resposta curta
Arquitetura real em produção. Pontos centrais: orquestração de workflows de ML e versionamento. O Netflix aplica ciência de dados em centenas de casos de uso. Quando a equipe de infraestrutura de machine learning perguntou aos cientistas qual era a coisa mais difícil do trabalho, esperava ouvir sobre dados e modelos em grande escala.
01 · CONTEXTO
Por que um framework centrado no cientista de dados
O Netflix aplica ciência de dados em centenas de casos de uso. Quando a equipe de infraestrutura de machine learning perguntou aos cientistas qual era a coisa mais difícil do trabalho, esperava ouvir sobre dados e modelos em grande escala.
O que ouviu foram histórias de projetos em que levar a primeira versão à produção demorou surpreendentemente, principalmente por razões banais de engenharia de software. Também ouviu sobre dificuldades com acesso a dados e processamento básico, e participou de reuniões em que cientistas discutiam com stakeholders como versionar modelos sem impactar a produção.
A conclusão da equipe foi que quase tudo o que os cientistas queriam fazer já era tecnicamente possível, mas nada era fácil o bastante. O trabalho passou a ser tornar operações comuns tão fáceis que o cientista nem perceba que eram difíceis.
Os cientistas querem controlar as entradas do modelo e a lógica de engenharia de features, e poucos têm opinião forte sobre o data warehouse, a plataforma de computação ou o agendador de workflows. Eles também querem escrever Python idiomático.
02 · MODELO DE PROGRAMAÇÃO
Um DAG de passos em Python comum
No Metaflow o cientista estrutura o workflow de dados como um grafo acíclico dirigido de passos, e cada passo pode ser código Python arbitrário. No exemplo hipotético do post, o fluxo treina duas versões de um modelo em paralelo e escolhe a de maior pontuação.
O post reconhece que Airflow e Luigi também executam DAGs de código Python arbitrário, e diz que o diferencial está em muitos detalhes cuidadosamente desenhados. Um deles: dados e modelos são variáveis de instância Python comuns, que funcionam mesmo em plataforma distribuída graças ao armazenamento de artefatos endereçado por conteúdo embutido. Em muitos outros frameworks, carregar e guardar artefatos fica a cargo do usuário.
O cientista escreve o fluxo como código Python, com liberdade para usar Python idiomático.
O fluxo é um grafo acíclico dirigido de passos, e cada passo é código arbitrário.
Dados e modelos aparecem como variáveis de instância Python comuns e continuam funcionando em plataforma distribuída graças ao armazenamento de artefatos endereçado por conteúdo.
Para inspecionar resultados, o cientista usa um notebook que busca artefatos do Metaflow, em vez de uma interface única para todos.
03 · VERSIONAMENTO E REPRODUTIBILIDADE
O que a plataforma resolve sozinha
O Metaflow vem com a capacidade de fazer snapshot automático de todo o código e dados na Amazon S3, o que dá versionamento e rastreio de experimentos sem intervenção do usuário. Para o ambiente de execução, o decorador @conda o congela, com boas garantias de reprodutibilidade tanto local quanto na nuvem.
| Preocupação | Como o post descreve o tratamento |
|---|---|
| Estado entre passos | Variáveis de instância Python comuns, guardadas no armazenamento de artefatos endereçado por conteúdo. |
| Versionamento e experimentos | Snapshot automático de todo o código e dados na Amazon S3, sem intervenção do usuário. |
| Dependências | O decorador @conda congela o ambiente de execução. |
| Computação | Integração com o AWS Batch, ativada com uma única linha: @batch. |
| Carga de dados | Cliente S3 embutido que carrega dados a até 10Gbps. |
04 · DO PROTÓTIPO À PRODUÇÃO
Do laptop ao agendador
O Metaflow permite desenvolver e testar código rapidamente no laptop, com uma experiência de desenvolvimento local de primeira classe, e a Netflix incentiva levar os workflows à produção o quanto antes. Rodar cedo com dados atualizados é descrito como forma muito eficaz de expor bugs e problemas do modelo.
O cientista desenvolve e testa o código localmente, no próprio computador, com a experiência de desenvolvimento local de primeira classe do Metaflow.
Para processamento pesado, o fluxo usa a computação gerenciada em contêineres da AWS, ativada com uma única linha de código.
O Metaflow faz snapshot de código e dados no armazenamento de objetos da AWS, o que dá versionamento sem intervenção do usuário.
Na Netflix, produção é um agendador de DAG centralizado e altamente disponível, o Meson, para onde o usuário exporta a execução com um único comando.
Os resultados costumam ser gravados numa tabela consumida por um dashboard, e às vezes o modelo vira um microsserviço para inferência em tempo real.
Também é comum encadear workflows, de modo que o resultado de um seja consumido por outro. Como o Meson não é código aberto, a equipe trabalhava numa integração parecida com o AWS Step Functions, e alguns desses modos de consumo ainda não estavam disponíveis na versão de código aberto.
05 · ESCALA E LIÇÕES
Escala dos dados e perguntas para treinar
O data warehouse da Netflix tem centenas de petabytes. Um workflow típico do Metaflow toca só uma pequena fração dele, mas ainda pode processar terabytes.
Perguntas frequentes
O que é Netflix Metaflow?
Arquitetura real em produção. Pontos centrais: orquestração de workflows de ML e versionamento.
O que o design de Netflix Metaflow cobre?
Ele está organizado nestas seções: Por que um framework centrado no cientista de dados, Um DAG de passos em Python comum, O que a plataforma resolve sozinha, Do laptop ao agendador e Escala dos dados e perguntas para treinar.
Quanto tempo leva Netflix Metaflow e qual é o nível?
Leva cerca de 15 minutos para ler e tem nível Pleno.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.