Gigantes da internet entregam conteúdo Algorítmico em Escala

Gigantes da internet entregam conteúdo Algorítmico em Escala

Você já se perguntou como as maiores empresas de internet e mídia social do mundo conseguem entregar conteúdo algorítmico para tantos usuários tão rápido? Considere o que o TikTok precisa fazer para fornecer às pessoas um fluxo infinito de videoclipes personalizados para os telefones das pessoas. Eles têm algum modelo representando o usuário e precisam usar isso para encontrar os clipes mais adequados para mostrar a esse usuário em particular entre bilhões de alternativas. E como eles também têm bilhões de usuários, eles precisam fazer isso milhões de vezes por segundo.

Soluções Tradicionais

A maneira ingênua de resolver o problema do TikTok é comparar o modelo do usuário a cada videoclipe para determinar o quão bem cada um se encaixa naquele usuário. É amplamente compreendido que essa abordagem de força bruta não é escalável — com um bilhão de vídeos e um milhão de solicitações por segundo, isso se torna um quatrilhão de comparações por segundo!

A solução óbvia para isso é a indexação: manter uma estrutura de dados que possibilite encontrar videoclipes adequados do modelo do usuário sem ter que considerar cada clipe. Por exemplo, se o modelo do usuário notar uma preferência por vídeos em inglês, os vídeos podem ser indexados com uma árvore B que aponta diretamente para vídeos em inglês para que o restante possa ser ignorado. Ou, se o usuário for representado como um vetor de interesse incorporado, um índice de vetor como o algoritmo Hierarchical Navigable Small World (HNSW) pode ser usado para encontrar vídeos com vetores semelhantes sem considerar o restante.

Sistemas reais usarão uma combinação desses índices. Agora, os índices apenas dão uma indicação aproximada de quais vídeos podem ser adequados para o usuário. Para realmente trazer à tona o conteúdo que os usuários acham mais interessante ou útil, você precisa fazer uma comparação mais precisa entre o modelo do usuário e cada item candidato — atualmente, geralmente feito usando redes neurais. É aqui que fica interessante.

Escalando sem comprometer a qualidade

A maneira comum de repontuar é passar os itens candidatos recuperados dos índices para outro componente em sua arquitetura, fazendo a pontuação detalhada de cada um. Quantos devem ser repontuados dessa forma? Deve ser uma certa fração de todos os candidatos.

Para ver isso, considere que a recuperação indexada mais a rescoring é uma aproximação da pontuação de força bruta de todos os candidatos, e o que precisamos considerar é a perda de qualidade dessa otimização. Isso pode ser expresso em termos da probabilidade de que um determinado vídeo que seria mostrado ao usuário com avaliação de força bruta esteja presente no conjunto a ser reclassificado.

Essa probabilidade tende a zero à medida que o tamanho desse conjunto em relação ao conjunto completo de candidatos diminui. A perda de qualidade aumentará à medida que a fração a ser repontuada diminui, e também aumentará à medida que seu algoritmo de pontuação completo se torna melhor, pois há mais a perder.

Vamos ser concretos e dizer que queremos reavaliar 1% dos candidatos, e que cada item contém 2kb de dados úteis para a pontuação final (aproximadamente um vetor e cem propriedades). Com um bilhão de itens, isso se torna 10 milhões de itens para reavaliar por solicitação, e com um milhão de solicitações por segundo, isso significa que precisamos mover 20 petabytes de dados por segundo para reclassificação! Mesmo essa pequena fração está claramente muito longe de ser viável, então o que os grandes jogadores estão fazendo?

A inversão da arquitetura está chegando para o resto de nós

A resposta é que eles não estão movendo os dados para os nós de computação de pontuação, mas sim movendo a computação de pontuação para o índice para ser feita localmente onde os dados residem, contornando assim todo o problema.

Agora, por que o resto de nós deveria se importar, abençoados como somos com a ausência da maioria dos bilhões de usuários com os quais o TikTok, o Google e similares são sobrecarregados? Vários fatores estão se tornando relevantes:

  • Os algoritmos de ML estão melhorando, assim como a capacidade de computação local, o que significa que a pontuação completa dos itens proporciona um aumento maior na qualidade e, em última análise, no lucro do que costumava ser o caso.
  • Com o advento dos embeddings vetoriais, os sinais consumidos por tais algoritmos aumentaram em uma a duas ordens de magnitude, tornando o gargalo da rede mais severo.
  • Aplicar cada vez mais dados para resolver problemas é cada vez mais econômico, o que significa que mais dados precisam ser recalculados para manter uma perda de qualidade constante.
  • À medida que os consumidores de dados desses sistemas deixam de ser majoritariamente humanos para se tornarem majoritariamente LLMs em soluções RAG, torna-se benéfico entregar maiores quantidades de dados pontuados mais rapidamente em mais aplicações do que antes. Isso culminará na maioria das aplicações sendo sobre entregar dados de alta qualidade para LLMs para raciocinar em longas cadeias para tomar decisões de negócios de alta qualidade em um ritmo desumanamente rápido.

Por essas razões, os truques de dimensionamento dos maiores players estão se tornando cada vez mais relevantes para o resto de nós, o que levou à atual proliferação da inversão de arquitetura, passando de sistemas tradicionais de duas camadas, onde os dados são pesquisados ​​em um mecanismo de busca ou banco de dados e enviados para uma camada de computação sem estado, para inserir essa computação nos próprios dados.

Agora, para realmente fazer isso, você também precisa de uma plataforma que possa realmente gerenciar seus dados, indexar e computar dessa forma. Isso levou à crescente popularidade do Vespa.ai, a plataforma que começou como a solução do Yahoo para inversão de arquitetura quando era um dos grandes players. Desde então, a tecnologia se tornou de código aberto.

O Vespa.ai permite que você armazene e indexe dados estruturados, vetores/tensores e texto completo juntos em qualquer número de máquinas e faça qualquer tipo de computação de tensor e inferência aprendida por máquina localmente onde os dados estão armazenados.

Conteúdo Relacionado

O Rails 8 sempre foi um divisor de águas...
Na era do declínio do império dos Estados Unidos...
Os aplicativos da Web são uma pedra fundamental da...
O mundo da tecnologia tem estado agitado com discussões...
Os desenvolvedores Java enfrentam uma variedade de erros relacionados...
Com várias décadas de experiência, adoro criar aplicativos corporativos...
A escalabilidade é um fator crítico quando se trata...
Ao trabalhar em um projeto de código aberto no...
A Inteligência Artificial (IA) tem se tornado cada vez...
A maioria das organizações enfrenta desafios ao se adaptar...
Quando nós, desenvolvedores, encontramos alguns bugs em nossos logs,...
A cibersegurança é um tópico cada vez mais importante...
A experiência do desenvolvedor (DX) é um tópico cada...
Ao relatar estatísticas resumidas para resultados de testes de...
Explorando as Engrenagens do Kernel Semântico Falei um pouco...
Bloga dön

Yorum yapın

Yorumların yayınlanabilmesi için onaylanması gerektiğini lütfen unutmayın.