Ir para o conteúdo principal
Voltar aos artigos

Recomendação mais fresca sem inferência em cada requisição

O caso do Airbnb ilustra como avaliar atualizações assíncronas de embeddings sem copiar uma plataforma inteira antes de medir a necessidade.

·3 min de leitura·6 visualizações

O Airbnb estendeu o Chronon com Push Mode e Near Real-Time Model Transform para atualizar embeddings de recomendação após a atividade do usuário.[10] A defasagem relatada caiu de quase dois dias para menos de um minuto, tipicamente entre 10 e 30 segundos, sem colocar o encoder Transformer no caminho da requisição interativa.[10]

O ponto relevante não é perseguir tempo real a qualquer custo. É separar o momento em que uma previsão é produzida do momento em que ela é consumida. Essa distinção merece ser avaliada antes de acrescentar inferência síncrona ao atendimento.

O que muda para quem desenvolve

No desenho anterior, o histórico do hóspede era representado por um encoder baseado no JourneyFormer em processamento diário, e os embeddings eram servidos por um armazenamento de baixa latência.[10] Com os novos recursos, a confirmação de uma feature pode disparar inferência e gravar um novo embedding no armazenamento já utilizado pelo sistema.[10]

O mesmo encoder é reaproveitado, sem uma implementação específica de inferência para streaming.[10] Minha leitura é que o valor do desenho está em melhorar o frescor preservando o contrato de leitura, em vez de exigir que toda requisição espere o modelo.

O Airbnb relata melhora de 1,67% em NDCG offline e aproximadamente 0,33% em reservas não canceladas no teste A/B.[10] Esses resultados pertencem ao sistema avaliado pela empresa, não são uma estimativa transferível para outro recomendador.

Como aplicar

Comece medindo quanto a defasagem atual prejudica o produto. Em um protótipo de recomendação de conteúdo, registre o horário da última atividade considerada e o horário em que o resultado ficou disponível. Relacione essa demora com uma métrica de utilidade, não apenas com a velocidade do pipeline.

Depois, teste uma atualização assíncrona simples: um evento solicita recomputação e o resultado é gravado para leitura posterior. Mantenha a última versão válida enquanto a nova está sendo preparada.

Defina como lidar com eventos repetidos, chegada fora de ordem e falhas de processamento. Use um número de versão ou horário de referência para impedir que uma atualização antiga sobrescreva uma mais recente. Isso é uma recomendação de implementação para o experimento, não uma descrição adicional do sistema do Airbnb.

Compare frescor, custo de recomputação, volume de escritas e latência de leitura com o fluxo anterior. Só acrescente infraestrutura mais complexa se esses dados justificarem.

Cuidados e limites

A troca destacada na reportagem é mais escrita e complexidade de pipeline em busca de menor latência de atendimento.[10] Menor defasagem não deve ser tratada como benefício gratuito.

Avalie também o comportamento durante atrasos prolongados. A aplicação precisa ter uma resposta aceitável quando a recomputação não termina a tempo.

A lição reutilizável é atualizar previsões conforme a necessidade do produto. Adotar toda a plataforma antes de provar o problema seria copiar a operação de outra empresa, não aproveitar sua decisão de arquitetura.

Fonte

[10] Fonte: InfoQ

Continue lendo