True ML Talks #3 - Plataforma de Machine Learning @ Facebook

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
Estamos de volta com mais um episódio do True ML Talks. Neste, vamos aprofundar na plataforma do Facebook, FBLearner Flow, a espinha dorsal de IA do Facebook, e vamos conversar com Aditya Kalro.
Aditya é atualmente Gerente Sênior de Engenharia no Google, na equipe de Identidade, e antes disso, Aditya estava no Facebook, onde liderou o desenvolvimento de toda a plataforma de gerenciamento de fluxo de trabalho de ML no Facebook, chamada FBLearner Flow. E falaremos sobre isso em mais detalhes na conversa de hoje.
📌
Nossas conversas com Aditya abordarão os seguintes aspectos:
- Visão geral do FBLearner Flow.
- Testes A/B e Testes de Sombra em sistemas de larga escala.
- Preenchendo a lacuna entre Pesquisa e Produção.
- Otimizando custo e latência na Inferência de IA.
- Arquitetura do FBLearner Flow.
- Preenchendo a Lacuna Entre Plataformas de Implantação de Software e ML.
- Importância do Monitoramento e do treinamento distribuído.
- Princípios fundamentais para construir um sistema de ML em escala.
Assista ao episódio completo abaixo:
Dimensionando fluxos de trabalho de IA
FBLearner Flow é uma plataforma de gestão de fluxo de trabalho de machine learning que foi construída pelo Facebook para gerir a sua infraestrutura de ML. Aditya liderou o desenvolvimento da plataforma e supervisionou o seu crescimento para suportar milhares de treinamentos por dia em 700-800 equipas.
- O FBLearner flow foi inicialmente desenvolvido como um mecanismo de fluxo de trabalho para ML, mas evoluiu para um mecanismo de fluxo de trabalho genérico que podia lidar com uma variedade de tarefas, incluindo compilações de aplicações móveis.
- A plataforma suportava milhares de treinamentos por dia e implementava centenas de milhares de modelos ao mesmo tempo.
- O FBLearner flow foi conectado a uma plataforma de inferência e escalou para centenas e milhares de máquinas ao longo do tempo.
- A plataforma foi projetada para ser genérica o suficiente para ser aplicada a qualquer domínio, tornando-a uma ferramenta versátil para gerir fluxos de trabalho de ML.
Evolução do FBLearner Flow: Uma Jornada para Tornar os Engenheiros de ML Mais Produtivos
Abaixo estão três aspetos únicos e relevantes da evolução do FBLearner Flow:
- Filosofia: O objetivo principal do FB Learner era tornar os engenheiros de ML mais produtivos. Para conseguir isso, a plataforma foi desenvolvida em Python, embora a linguagem não fosse bem suportada no Facebook na altura. A santidade da experiência também foi enfatizada, o que significava que a experiência tinha de ser completamente preditiva. Para conseguir isso, a plataforma alocou a mesma quantidade de memória e CPU a cada fluxo de trabalho ou operador.
- Fluxo de Trabalho e Operadores FBLearner Flow começou com o conceito de fluxo de trabalho, que é como um engenheiro de ML expressaria tudo o que precisa acontecer. O fluxo de trabalho é um conceito único que combina vários operadores. Cada componente do fluxo de trabalho foi dividido em operadores, que podiam ser distribuídos por diferentes máquinas, facilitando aos utilizadores a sua conexão e a movimentação de dados de uma máquina para outra.
- Gestão de Experiências: A plataforma também oferece ferramentas de gestão de experiências que permitem aos utilizadores gerir as suas experiências e depurar quaisquer erros. A interface do utilizador do FBLearner Flow facilitou aos utilizadores ver onde o erro ocorreu e forneceu os registos necessários para os ajudar a descobrir por que o erro aconteceu. Esta abordagem também ajudou os utilizadores a gerir um grande número de experiências.

Sistema de Avaliação
Os modelos de machine learning precisam ser avaliados para determinar a sua capacidade de generalizar bem em dados não vistos. É aqui que entra o sistema de avaliação. Existem duas partes no sistema de avaliação: avaliação em lote e avaliação online.
- Avaliação em Lote: A avaliação em lote também é conhecida como avaliação offline. Envolve a leitura de dados, o seu processamento e, em seguida, a sua reinserção noutra entidade. Esta abordagem é bem compreendida e é ideal para modelos com poucos parâmetros. No entanto, pode não ser eficaz ao lidar com milhares de parâmetros e características.
- Avaliação Online: O sistema de avaliação online, por outro lado, é um pouco mais complexo e permite aos utilizadores acompanhar a implementação de um determinado modelo de ML e enviar um exemplo para o modelo para obter resultados imediatos. Isso torna-o uma ótima ferramenta para os profissionais de ML testarem os seus modelos rapidamente, mesmo modelos experimentais. A equipa de Anúncios do Facebook tinha um sistema de inferência que era muito específico para eles. Para o tornar disponível para o resto do Facebook, criaram a primeira versão da plataforma de inferência, que estava intimamente ligada ao FBLearner flow.
Construindo uma Estrutura Eficaz de Teste A/B para Modelos de Machine Learning
A implantação de modelos de machine learning em cenários do mundo real pode ser desafiadora, especialmente ao lidar com sistemas de grande escala como o Facebook, onde mesmo um pequeno erro pode ter consequências significativas. Nesse sentido, a construção de uma estrutura eficaz de teste A/B é crucial para garantir o desempenho ideal dos modelos de machine learning.
Dois componentes essenciais da plataforma FB Learner que ajudaram a alcançar esse objetivo foram o teste A/B e o shadow testing. O teste A/B permitiu a comparação de duas versões do sistema ou modelo para determinar qual delas tem melhor desempenho, enquanto o shadow testing permitiu implantar o novo modelo em paralelo com o existente para avaliar seu desempenho sem afetar a experiência do usuário. Ao fazer isso, ajudou a mitigar o risco de implantar um modelo defeituoso em produção.
Outra característica única da plataforma FBLearner foi sua capacidade de facilitar a troca de modelos entre profissionais de ML e desenvolvedores. Isso permitiu que os desenvolvedores implantassem facilmente os modelos em produção e os testassem usando a infraestrutura de experimento rápido existente. Isso lhes permitiu comparar rapidamente o desempenho de seu sistema existente com o modelo de ML recém-implantado, garantindo o desempenho ideal do sistema.
Como o Facebook Preencheu a Lacuna entre Pesquisa e Produção usando o FBLearner Flow
A equipe de pesquisa de IA do Facebook enfrentou um grande desafio ao preencher a lacuna entre as necessidades dos pesquisadores e da equipe de produção. Enquanto os pesquisadores precisavam de um sistema rápido e que lhes permitisse implantar novos modelos rapidamente, a equipe de produção exigia estabilidade, confiabilidade e previsibilidade.
👉
Para enfrentar esse desafio, o Facebook construiu uma interface semelhante ao Slurm em sua plataforma de machine learning.
Slurm é uma interface de linha de comando amplamente utilizada na academia para gerenciamento de experimentos. Ao criar uma interface de linha de comando semelhante para a plataforma, o Facebook facilitou o uso da plataforma pelos pesquisadores.
Apesar das diferenças fundamentais nos requisitos de ambas as equipes, ter uma interface comum facilitou a migração de seus modelos para o FBLearner Flow para produção pelos pesquisadores. O sistema lhes deu acesso a um grande fluxo de máquinas, diferente do Slurm, que foi projetado para rodar em um pequeno conjunto de máquinas.
A interface semelhante ao Slurm na plataforma permitiu que os pesquisadores experimentassem diferentes modelos rapidamente e os migrassem para o ambiente de produção quando estivessem satisfeitos com os resultados.
Otimizando Custo e Latência na Inferência de IA: O Papel da Contentorização e Microsserviços
No campo da IA, alcançar a otimização de custos sem comprometer a latência é um desafio perpétuo. No entanto, com o advento de novas tecnologias e designs arquitetônicos, soluções foram desenvolvidas para abordar essa questão.
👉
Contentorização e microsserviços têm se mostrado eficazes na otimização de custos e na redução da latência na inferência de IA.
Conteinerização é um método de empacotar código de software juntamente com suas dependências em uma única unidade, conhecida como contêiner. Este contêiner pode ser movido facilmente de um ambiente de computação para outro, tornando-o altamente escalável e flexível. Ao usar a conteinerização, as organizações podem empacotar múltiplos modelos de IA em um único contêiner, permitindo que sejam implantados e escalados de forma rápida e eficiente.
Além disso, a conteinerização também permite o empacotamento de bins (bin packing), que otimiza a alocação de recursos ao colocar múltiplos contêineres em uma única máquina física. Isso permite que as organizações aproveitem ao máximo seus recursos disponíveis e reduzam custos. Adicionalmente, com o autoescalonamento, as organizações podem escalar para cima ou para baixo rapidamente com base na demanda, otimizando ainda mais os custos.
Além disso, microsserviços, que são componentes pequenos e independentes de uma aplicação, podem ser usados para criar uma plataforma de inferência eficiente e ágil. Ao dividir aplicações complexas em serviços menores e modulares, cada serviço pode ser escalado, gerenciado e atualizado independentemente. Isso não só torna a plataforma mais resiliente, mas também ajuda a reduzir a latência.
Compreendendo a Arquitetura do FBLearner Flow: Uma Análise Detalhada
Construir um sistema de IA robusto e escalável requer uma infraestrutura sólida. Nesse sentido, o FBLearner Flow do Facebook tem estado na vanguarda da inovação em IA, fornecendo uma solução única para treinar e implantar modelos de IA em escala.
A arquitetura do FBLearner Flow foi em grande parte construída internamente, aproveitando a infraestrutura existente do Facebook. Eles começaram com o Kronos, um agendador interno, mas tiveram que migrar para a conteinerização para resolver problemas de "stampeding herd" e "noisy neighbor". O sistema foi então construído em torno da ideia de operadores e fluxos de trabalho, com tabelas Hive sendo inicialmente usadas como canais para dados estruturados, mas clusters de arquivos e armazenamento Blob sendo eventualmente usados para dados não estruturados como imagens.
O mecanismo de execução do sistema era autocontido e versionado, permitindo comparações entre diferentes versões do modelo. O gerenciamento de experimentos foi facilitado pela capacidade do sistema de alterar recursos, versões de modelos ou paradigmas de treinamento, mantendo as métricas de saída e os conjuntos de avaliação os mesmos.
Se o FBLearner Flow fosse reconstruído hoje, Kubernetes e Kubeflow seriam as soluções preferidas. O Kubeflow oferece um paradigma mais autocontido, tornando-o mais fácil de implantar, e pode usar outros conectores para se conectar a diferentes partes da infraestrutura.
A plataforma de inferência foi construída sobre o Tupperware, a infraestrutura de serviços do Facebook, com cada modelo sendo seu próprio contêiner. O recurso de autoescalonamento foi emprestado do Kubernetes para garantir que a plataforma pudesse escalar para cima e para baixo conforme necessário.
No geral, a arquitetura do FBLearner Flow oferece uma solução única para a construção de sistemas de IA em escala. É um testemunho da importância da infraestrutura na construção de sistemas de IA robustos e escaláveis.
Preenchendo a Lacuna Entre Engenharia de Software e Plataformas de Implantação de Machine Learning
À medida que o campo do machine learning continua a crescer e evoluir, há uma necessidade crescente de desenvolver plataformas e processos para implantar modelos de machine learning em ambientes de produção. No entanto, muitas empresas veem as plataformas de machine learning como separadas das plataformas de engenharia de software, o que pode levar a confusão e ineficiências.
👉
Embora existam algumas diferenças nas ferramentas utilizadas, os processos para desenvolver e implantar modelos de ML podem ser muito semelhantes aos usados na engenharia de software.
Um dos aspectos chave é a importância de ter uma abordagem definida sobre como os modelos de ML são desenvolvidos e implantados. Ao introduzir conceitos como testes e etapas obrigatórias, como a divisão treino-teste, as empresas podem otimizar o processo de desenvolvimento de ML e garantir que os modelos sejam implantados de forma consistente e eficaz.
Outra semelhança é a necessidade de monitoramento e telemetria tanto em engenharia de software quanto em plataformas de implantação de ML. Assim como os desenvolvedores monitoram o desempenho de suas aplicações e microsserviços, desenvolvedores de ML e engenheiros de MLOps precisam monitorar o desempenho de seus modelos e infraestrutura.
Ao reconhecer as semelhanças entre os dois e desenvolver processos e ferramentas consistentes em ambos, as empresas podem otimizar seus processos de desenvolvimento e implantação, reduzir erros e ineficiências, e garantir que seus modelos de ML sejam implantados de forma consistente e eficaz.
A Importância do Monitoramento na Implantação de ML
O monitoramento é um aspecto crítico de qualquer processo de implantação de ML. Ele ajuda a garantir que os modelos estejam funcionando como esperado e entregando os resultados desejados. Monitorar a infraestrutura e a saída das previsões é crucial para garantir que o sistema esteja funcionando corretamente. A parte de geração de métricas do sistema FBLearner, que gerava automaticamente métricas para monitorar o desempenho dos modelos.
Há uma necessidade de métricas personalizáveis que permitam aos desenvolvedores monitorar o desempenho de seus modelos de forma eficaz. Com o monitoramento em vigor, os desenvolvedores podem identificar e corrigir rapidamente quaisquer problemas que possam surgir durante o processo de implantação, levando a um melhor desempenho e previsões mais precisas.
Em conclusão, o monitoramento é uma parte essencial da implantação de ML, e é crucial ter um sistema em vigor que permita aos desenvolvedores monitorar seus modelos de forma eficaz. Métricas personalizáveis e um monitoramento rigoroso da infraestrutura e da saída das previsões podem ajudar a garantir que os modelos de ML estejam funcionando como esperado, levando a um melhor desempenho e previsões mais precisas.
Treinamento Distribuído e seu Impacto na Arquitetura de Fluxo de Trabalho
O treinamento distribuído e a inferência distribuída foram grandes mudanças de paradigma para o sistema FBLearners Flow. Inicialmente, o sistema foi projetado para funcionar em uma única máquina, e o treinamento deveria ocorrer na mesma máquina. No entanto, à medida que mais dados eram adicionados ao sistema, tornou-se necessário reestruturar o sistema para suportar o treinamento distribuído.
O maior desafio a esse respeito estava relacionado à estrutura beta. A equipe teve que empregar treinamento paralelo de modelo e paralelo de dados para dados estruturados e não estruturados, respectivamente. Eles também tiveram que adicionar regras especiais para servidores de parâmetros, que eram tratados de forma diferente em comparação com o próprio treinamento. Os servidores de parâmetros coletariam todas as saídas de cada uma das instâncias de treinamento e as reuniriam. A equipe experimentou vários paradigmas diferentes, eventualmente optando por um paradigma de servidor de parâmetros que permitia o checkpointing.
A confiabilidade tornou-se uma grande preocupação com o treinamento distribuído, pois mesmo que uma máquina falhasse, todo o fluxo de trabalho falharia. A equipe teve que construir APIs para permitir o checkpointing, pois não era totalmente automatizado. Eles também tiveram que escrever um mecanismo de reinício para garantir que o fluxo de trabalho pudesse ser reiniciado a partir do checkpoint apropriado em caso de falha.
Embora o treinamento distribuído tenha possibilitado treinar modelos mais complexos, também tornou as coisas mais difíceis para a equipe, pois o treinamento agora levava de 5 a 6 vezes mais tempo do que no passado. No entanto, a equipe conseguiu se adaptar a essas mudanças e garantir que o sistema continuasse a funcionar de forma confiável.
Construindo um sistema de ML em escala: Princípios fundamentais para o sucesso
- Feedback contínuo e auto-disrupção: Para construir um sistema de ML bem-sucedido, o feedback contínuo dos usuários é essencial. A equipe de Aditya tinha uma vantagem, pois seus clientes estavam dentro da mesma empresa, permitindo-lhes receber feedback e se auto-disruptar. Assim, construir um sistema de ML em escala requer engajamento contínuo com os usuários, permitindo que eles forneçam feedback e se ajustem de acordo.
- Orientação para o atendimento ao cliente: Um componente essencial para construir um sistema de ML em escala é garantir que as perguntas dos usuários sejam respondidas prontamente para desbloqueá-los. A equipe de Aditya adotou uma orientação de atendimento ao cliente, o que lhes permitiu resolver quaisquer problemas e receber feedback rapidamente. Essa abordagem é crítica, pois promove a confiança com os usuários e aprimora sua experiência.
- Evolução e adaptação: Finalmente, construir um sistema de ML em escala requer a disposição de evoluir e se adaptar, pois o ML é um campo que muda rapidamente. A equipe de Aditya reconheceu que não poderiam projetar tudo em um dia e que a evolução do sistema seria contínua. Portanto, as organizações devem estar abertas a mudanças e abraçar novas tecnologias à medida que surgem.
Abaixo estão algumas leituras interessantes sobre Machine Learning do Facebook:
- Apresentando FBLearner Flow: a espinha dorsal de IA do Facebook
- Podcast TWIML com Aditya Kalro
- Palestra de Aditya & Pierre sobre Machine Learning Aplicado em escala
Leia nossa publicação anterior da série.
Continue assistindo a TrueML série do YouTube e lendo todas as TrueML séries de blog.
TrueFoundry é uma PaaS de Implantação de ML sobre Kubernetes para acelerar os fluxos de trabalho dos desenvolvedores, ao mesmo tempo que lhes permite total flexibilidade no teste e implantação de modelos, garantindo total segurança e controle para a equipe de Infraestrutura. Através da nossa plataforma, capacitamos as Equipes de Machine Learning a implantar e monitorar modelos em 15 minutos com 100% de confiabilidade, escalabilidade e a capacidade de reverter em segundos – permitindo-lhes economizar custos e lançar Modelos em produção mais rapidamente, possibilitando a concretização de valor de negócio real.
Tópicos: FBLearner Flow, Plataforma de ML no Facebook
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI














.webp)






.webp)

.webp)
.webp)





.png)



