Arquitetura real · Sênior
Instagram Explore
Arquitetura real em produção. Pontos centrais: two towers, ranqueamento early/late stage, ig2vec e filtros de integridade.
Resposta curta
Arquitetura real em produção. Pontos centrais: two towers, ranqueamento early/late stage, ig2vec e filtros de integridade. O Explore é a superfície do Instagram para descobrir fotos, vídeos e Stories relevantes para os interesses de cada pessoa. A Meta diz que mais da metade da comunidade do Instagram o visita todo mês e, em outro texto, que centenas de milhões de…
01 · CONTEXTO E ESCALA
O que é o Explore e por que ele é difícil
O Explore é a superfície do Instagram para descobrir fotos, vídeos e Stories relevantes para os interesses de cada pessoa. A Meta diz que mais da metade da comunidade do Instagram o visita todo mês e, em outro texto, que centenas de milhões de pessoas o visitam por dia.
O desafio central é recomendar o conteúdo mais relevante entre bilhões de opções, em tempo real e em escala, o que traz vários desafios de projeto de sistemas de ML. O post da Meta AI descreve o resultado como um funil de ranqueamento em 3 partes que extrai 65 bilhões de atributos e faz 90 milhões de previsões de modelo a cada segundo.
Este caso usa duas fontes da Meta: o post da Meta AI sobre o Explore e um post de engenharia sobre como o sistema foi escalado. O segundo resume a ideia que atravessa o texto: uso inteligente de cache e de pré-cálculo nas diferentes etapas de ranqueamento, o que permite usar modelos mais pesados em cada etapa.
02 · GERAÇÃO DE CANDIDATOS
Das contas semente a um inventário elegível
O post da Meta AI divide o Explore em duas etapas principais: geração de candidatos (também chamada de sourcing) e ranqueamento.
A geração parte de contas com que a pessoa já interagiu, por exemplo ao curtir ou salvar mídia de uma conta, para achar outras contas de interesse; elas são chamadas de contas semente. Em vez de olhar mídia por mídia, o pipeline de recuperação foca em informação no nível de conta.
Os embeddings de conta vêm do ig2vec, um framework parecido com o word2vec que trata os IDs de conta com que a pessoa interage como uma sequência de palavras numa frase. Uma busca KNN então encontra contas topicamente parecidas com qualquer conta do embedding, e a versão descrita cobre milhões de contas.
As fontes são escritas em IGQL, uma linguagem específica de domínio otimizada para recuperar candidatos. A execução é otimizada em C++ para reduzir latência e uso de computação, e cada tipo de fonte é uma subconsulta IGQL diferente.
A pessoa abre o Explore e o serviço aciona as fontes de candidatos, cada uma uma subconsulta IGQL.
As fontes partem das contas semente: contas com que a pessoa já interagiu.
O índice devolve contas parecidas com as contas semente, por busca de vizinhos mais próximos entre embeddings de conta.
Antes de formar o inventário elegível, os filtros removem o que não pode ser recomendado.
A cada pedido de ranqueamento, 500 candidatos amostrados do inventário elegível seguem para o ranqueamento.
Antes de formar o inventário elegível de cada pessoa, a Meta filtra o conteúdo que identifica como não elegível; além de bloquear conteúdo que provavelmente viola políticas e desinformação, usa sistemas de ML para detectar e filtrar conteúdo como spam. A cada pedido de ranqueamento, são identificadas milhares de mídias elegíveis para uma pessoa média, das quais 500 candidatos são amostrados e enviados à etapa de ranqueamento.
03 · RANQUEAMENTO EM PASSES
Destilação, rede leve e rede profunda
Com 500 candidatos disponíveis, o post da Meta AI usa uma infraestrutura de ranqueamento em três estágios para equilibrar relevância do ranqueamento e eficiência computacional.
O primeiro passe é o modelo de destilação, com atributos mínimos, que fica com 150 dos 500 candidatos.
O segundo passe é uma rede neural leve com o conjunto completo de atributos densos e escolhe 50 candidatos.
O passe final é uma rede neural profunda com atributos densos e esparsos e escolhe 25 candidatos para a primeira página.
| Critério | Primeiro passe | Segundo passe | Passe final |
|---|---|---|---|
| Modelo | Destilação que imita os outros passes | Rede neural leve | Rede neural profunda |
| Atributos | Mínimos | Conjunto completo de atributos densos | Atributos densos e esparsos |
| Candidatos que seguem | 150 de 500 | 50 | 25 |
O primeiro passe é um modelo super leve que aprende a aproximar o máximo possível os modelos principais de ranqueamento. Entradas e saídas dos modelos mais complicados são gravadas, e a perda de ranqueamento NDCG sobre a saída do modelo principal é o objetivo do treino. O ganho descrito é avaliar um conjunto maior de mídias por pedido mantendo os recursos computacionais sob controle.
Uma rede neural multi-tarefa e multi-rótulo (MTML) prevê as ações sobre cada mídia, que incluem ações positivas como curtir e salvar e também ações negativas. As previsões são combinadas por uma fórmula aritmética chamada modelo de valor; se salvar importa mais que curtir, o peso de salvar deve ser maior.
O modelo de valor também recebe uma regra simples de diversidade: posts do mesmo autor ou da mesma conta semente são rebaixados com um fator de penalidade, que cresce ao descer o lote ranqueado e encontrar mais posts do mesmo autor.
04 · RETRIEVAL COM DUAS TORRES
Embeddings offline e busca aproximada
O post de engenharia, de agosto de 2023, descreve uma abordagem de ranqueamento em várias etapas bem definidas, cada uma com objetivos e algoritmos próprios.
No retrieval, a função de uma fonte é escolher centenas de itens relevantes entre bilhões. As fontes podem ser heurísticas, como posts em alta, ou abordagens de ML mais sofisticadas, em tempo real ou pré-geradas. Candidatos de várias fontes são combinados e passados aos modelos de ranqueamento, e os de fontes pré-geradas podem ser gerados offline fora do pico, o que contribui para a escalabilidade.
O modelo Two Tower tem duas redes neurais separadas, uma para o usuário e outra para o item. Cada rede consome só atributos da própria entidade e produz um embedding, e o objetivo é prever eventos de engajamento (como curtir um post) como medida de similaridade entre os embeddings de usuário e de item.
| Critério | ig2vec | Two Tower |
|---|---|---|
| Entrada do treino | IDs de conta com que a pessoa interage, tratados como palavras de uma frase | Atributos arbitrários de usuário e de mídia ou autor |
| Sinal de aprendizado | Prever contas com que a pessoa provavelmente interage numa sessão | Prever eventos de engajamento como similaridade entre embeddings |
O Two Towers estende o algoritmo Word2Vec: aceita atributos arbitrários e várias tarefas ao mesmo tempo, para retrieval multiobjetivo, e mantém a manutenibilidade e o caráter de tempo real do Word2Vec.
Fora do caminho online, a torre de item gera embeddings de itens em um pipeline offline, diariamente.
Os embeddings gerados vão para um serviço de busca aproximada de vizinhos mais próximos, que evita varrer todos os itens.
No pedido, a torre de usuário busca os atributos mais frescos e gera o embedding da pessoa na hora.
Esse embedding consulta o serviço de busca aproximada, que devolve os itens mais parecidos como candidatos.
Há um custo: o modelo não pode consumir atributos de interação usuário-item, porque perderia a capacidade de fornecer embeddings de usuário e item que possam ser cacheados. A vantagem principal é que esses embeddings podem ser guardados em cache, o que torna a inferência do Two Tower extremamente eficiente.
Também é possível usar os embeddings de itens para buscar itens parecidos com os da história de interações da pessoa, o que dá mais controle sobre a troca entre tipos de engajamento. Nesse caso, uma abordagem baseada em regras filtra itens de baixa qualidade dessa história.
05 · RANQUEAMENTO E RERANQUEAMENTO
Duas etapas, modelo de valor e regras finais
O Explore usa duas etapas de ranqueamento. A primeira é um modelo leve, menos preciso e menos custoso, que pode recuperar milhares de candidatos. A segunda é um modelo pesado, mais preciso e intensivo em computação, que opera nos 100 melhores candidatos da primeira. Com duas etapas, mais candidatos são ranqueados mantendo a qualidade das recomendações finais.
Na primeira etapa o Two Tower volta a ser usado, por causa da cacheabilidade. A arquitetura pode ser parecida com a do retrieval, mas o objetivo de aprendizado difere bastante: o ranqueador de primeira etapa é treinado para prever a saída da segunda, uma forma de destilar conhecimento de um modelo maior para um menor.
A primeira etapa usa um modelo leve de duas torres, que reaproveita embeddings em cache.
A segunda etapa recebe só os 100 melhores candidatos da primeira.
O modelo pesado consome os atributos de interação usuário-item mais poderosos.
Para aliviar o pico, parte das recomendações é pré-calculada fora do pico e guardada.
No reranqueamento final, regras de integridade e de diversidade ajustam a lista ordenada.
A segunda etapa prevê a probabilidade de eventos de engajamento com um modelo MTML, muito mais pesado que o Two Towers, mas capaz de consumir os atributos de interação usuário-item mais poderosos. Aplicar um modelo tão pesado no horário de pico pode ser complicado, e por isso as recomendações de alguns usuários são pré-calculadas fora do pico, o que ajuda a garantir a disponibilidade para todo usuário do Explore.
As probabilidades previstas são combinadas com pesos numa fórmula chamada modelo de valor (VM), a aproximação do valor que cada mídia traz ao usuário. Ajustar os pesos do VM explora trocas entre métricas de engajamento online.
No reranqueamento final, devolver os itens ordenados só pela nota do VM pode não ser boa ideia: itens podem ser filtrados ou rebaixados com base em notas de integridade, e regras de negócio podem reordenar para aumentar a diversidade, por exemplo para não mostrar itens do mesmo autor em sequência. Essas regras dão muito mais controle sobre as recomendações finais.
Os modelos podem ser re-treinados (fine-tune) a cada hora assim que há dados novos.
06 · TRADE-OFFS E AJUSTE
O que muda entre as versões e como ajustar
| Critério | Post da Meta AI | Post de engenharia (2023) |
|---|---|---|
| Etapas de ranqueamento | Três passes: destilação, rede leve e rede profunda | Duas etapas, com reranqueamento final por regras |
| Primeira etapa | Modelo de destilação, com atributos mínimos | Modelo de duas torres treinado para prever a saída da segunda etapa |
| Última etapa de previsão | Rede neural profunda com atributos densos e esparsos | Modelo MTML que consome atributos de interação usuário-item |
Há centenas de parâmetros ajustáveis que controlam o comportamento do sistema. O post de engenharia cita duas abordagens populares de ajuste: otimização bayesiana e ajuste offline.
| Critério | Otimização bayesiana online | Ajuste offline |
|---|---|---|
| Vantagem | Só exige o conjunto de parâmetros, a métrica objetivo e os limites de regressão de outras métricas | Monta o experimento em horas em vez de semanas |
| Desvantagem | Costuma demorar para convergir, às vezes mais de um mês | Exige forte correlação entre métricas offline e online |
No texto de engenharia, a Meta aponta que a complexidade crescente do sistema traz desafios de manutenibilidade e de ciclos de feedback, e que investiga consolidar as estratégias de retrieval em menos algoritmos de ML altamente configuráveis.
Perguntas frequentes
O que é Instagram Explore?
Arquitetura real em produção. Pontos centrais: two towers, ranqueamento early/late stage, ig2vec e filtros de integridade.
O que o design de Instagram Explore cobre?
Ele está organizado nestas seções: O que é o Explore e por que ele é difícil, Das contas semente a um inventário elegível, Destilação, rede leve e rede profunda, Embeddings offline e busca aproximada, Duas etapas, modelo de valor e regras finais e O que muda entre as versões e como ajustar.
Quanto tempo leva Instagram Explore e qual é o nível?
Leva cerca de 17 minutos para ler e tem nível Sênior.
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.