What ML feature stores require and how ScyllaDB fits in as fast, scalable online feature store Nesta postagem de blog, vamos explorar o papel das lojas de recursos em aplicativos de aprendizado de máquina (ML) em tempo real e por que o ScyllaDB é uma escolha forte para o serviço de recursos on-line. Vamos cobrir os fundamentos dos recursos, como as lojas de recursos funcionam, seus benefícios, os diferentes requisitos de carga de trabalho e como a latência desempenha um papel crítico em aplicativos de ML. Vamos envolver olhando para frameworks de lojas de recursos populares como o Feast e como começar com o ScyllaDB como sua loja de recursos on-line. O que é uma função no Machine Learning? Um recurso é uma propriedade mensurável usada para treinar ou servir um modelo de aprendizagem de máquina. Os recursos podem ser pontos de dados brutos ou valores de engenharia derivados dos dados brutos. Por exemplo, em um aplicativo de mídia social como ShareChat, recursos podem incluir: Número de gostos nos últimos 10 minutos Número de ações nos últimos 7 dias Tema do post Crédito da imagem: Ivan Burmistrov e Andrei Manakov (ShareChat) Estes pontos de dados ajudam a prever resultados, como engajamento do usuário ou recomendação de conteúdo. Um vetor de recursos é simplesmente uma coleção de recursos relacionados a uma tarefa de previsão específica. Por exemplo, isso é o que um vetor de recursos pode parecer para um aplicativo de pontuação de crédito. Selecionar pontos de dados relevantes e transformá-los em recursos ocupa uma parte significativa do trabalho em projetos de aprendizado de máquina.É também um processo contínuo para refinar e otimizar recursos para que o modelo sendo treinado se torne mais preciso ao longo do tempo. Conheça as grandes arquiteturas Para trabalhar de forma eficiente com recursos, você pode criar um local central para gerenciar os recursos disponíveis na sua organização. Um processo padrão para criar novos recursos Armazenamento de recursos para acesso simplificado Descoberta e reutilização de recursos em equipes Servindo características para treinamento de modelo e inferência A maioria das arquiteturas distingue entre duas lojas / bancos de dados: Loja Offline para treinamento de modelos (bulk writes/reads) Loja on-line para inferência (tempo real, baixa latência escreve/leia) Um pipeline típico de lojas de recursos começa com a ingestão de dados brutos (de lagos de dados ou fluxos), executando engenharia de recursos, guardando recursos em ambas as lojas e, em seguida, servindo-os através de dois pipelines separados: um para treinamento e um para inferência. Vantagens de uma loja de recursos centralizada As lojas de recursos centralizadas oferecem várias vantagens: Evite duplicações: as equipes podem reutilizar recursos existentes Acesso autosservido: os cientistas de dados podem gerar e consultar recursos de forma independente Pipelines unificados: embora as cargas de trabalho de treinamento e de inferência sejam muito diferentes, elas ainda podem ser consultadas usando a mesma camada de abstração Isso resulta em iterações mais rápidas, mais consistência e melhor colaboração em fluxos de trabalho ML. Diferentes cargas de trabalho em lojas de funcionalidades Vamos quebrar os dois requisitos de carga de trabalho muito diferentes que existem dentro de uma loja de recursos: treinamento de modelo e inferência em tempo real. Treinamento de modelos (loja offline) Para fazer previsões, você precisa treinar um modelo de aprendizagem de máquina primeiro. O treinamento requer um conjunto de dados grande e de alta qualidade. Você pode armazenar esse conjunto de dados em uma loja de recursos offline. Aqui está um resumo do que as características mais importam para as cargas de trabalho de treinamento de modelo: Lentidão: não é uma prioridade Volume: Alto (de milhões a bilhões de registros) Frequência: Trabalhos pouco frequentes e agendados Finalidade: recuperar um grande pedaço de dados históricos Basicamente, as lojas offline precisam armazenar enormes conjuntos de dados de forma eficiente. Inferência em tempo real (loja online) Uma vez que você tenha um modelo pronto, você pode executar a inferência em tempo real. A inferência em tempo real leva a entrada fornecida pelo usuário e a transforma em uma previsão. Latency: alta prioridade Volume: baixo por pedido, mas alta capacidade de transmissão (até milhões de operações por segundo) Frequência: constante, desencadeada por ações do usuário (por exemplo, encomendar comida) Finalidade: Servir recursos atualizados para fazer previsões rapidamente Os conteúdos recentes do carrinho, idade e localização do usuário podem ser convertidos em recursos e usados instantaneamente para recomendar outros itens para compra. Por que a latência é importante A latência (no contexto deste artigo) refere-se ao tempo entre o envio de uma consulta e a recepção da resposta da loja de recursos.Para aplicações ML em tempo real – especialmente aquelas orientadas para o usuário – a baixa latência é crítica para o sucesso. Imagine um usuário no check-out sendo mostrado itens de alimentos relacionados. Se esta sugestão demorar muito tempo para carregar devido a uma loja on-line lenta, a oportunidade é perdida. Insira os dados mais recentes Buscando características relevantes Corrida de inferência Voltar para Previsão deve ocorrer em milissegundos. Escolhendo uma solução de lojas Uma vez que você decida construir uma loja de recursos, você rapidamente descobrirá que há dezenas de frameworks e provedores, tanto de código aberto quanto comerciais, para escolher: Feast (código aberto): Fornece suporte de banco de dados flexível (por exemplo, Postgres, Redis, Cassandra, ScyllaDB) Hopsworks: estreitamente ligado ao seu próprio ecossistema AWS SageMaker: ligado à pilha AWS (por exemplo, S3, DynamoDB) E muitos outros Fatores como a experiência técnica da sua equipe, os requisitos de latência e as integrações necessárias com a sua pilha existente desempenham um papel. Se você está preocupado com a escalabilidade e o desempenho de sua loja de recursos on-line, então a flexibilidade da base de dados deve ser uma consideração chave. Existem lojas de recursos (por exemplo, AWS SageMaker, GCP Vertex, Hopsworks, etc.) que fornecem sua própria tecnologia de banco de dados como a loja on-line. Por um lado, isso pode ser conveniente para começar porque tudo é gerenciado por um provedor. Imagine escolher um fornecedor como este com um rigoroso requisito de latência P99 (por exemplo, <15ms P99). O requisito é cumprido com sucesso durante a prova de conceito (POC).Mas mais tarde você experimenta picos de latência – talvez porque seus requisitos mudam ou há um aumento de novos usuários em seu aplicativo ou alguma outra razão imprevisível. O problema é que você não pode... pelo menos não facilmente. Você está preso com a solução incorporada. É impossível migrar apenas a parte da loja online de sua arquitetura porque tudo está trancado. Se você quiser evitar essas situações, você pode olhar para ferramentas que são flexíveis em relação ao backend da loja offline e on-line. Ferramentas como Feast ou FeatureForm permitem que você traga seu próprio backend de banco de dados, tanto para as lojas on-line quanto off-line. Esta é uma ótima maneira de evitar o bloqueio do fornecedor e tornar futuras migrações de banco de dados menos dolorosas no caso de picos de latência ocorrerem ou custos aumentarem. ScyllaDB como uma loja de recursos online ScyllaDB é um banco de dados NoSQL de alto desempenho que é API compatível com Apache Cassandra e DynamoDB API. e inclui , tornando-o ideal para aplicações de lojas de recursos de baixa latência e alta transmissão. Arquitetura Shard-per-Core Um sistema de cache integrado Why ScyllaDB? Baixa latência (desempenho de milissegundos de um dígito P99) Alta disponibilidade e resiliência Alto desempenho em escala (implementação em escala de petabytes) Nenhum vendor lock-in (executa on-prem ou em qualquer nuvem) Substituição de Drop-in para configurações Cassandra/DynamoDB existentes Migração fácil de outros bancos de dados NoSQL (Cassandra, DynamoDB, MongoDB, etc.) Integration with the feature store framework Feast O ScyllaDB brilha em casos de uso da loja de recursos on-line onde o desempenho em tempo real, a disponibilidade e a previsibilidade de latência são críticos. Integração com o ScyllaDB + Feast Feast é um popular framework de loja de recursos de código aberto que suporta lojas on-line e off-line. Um de seus pontos fortes é a capacidade de conectar suas próprias fontes de banco de dados, incluindo ScyllaDB. . ScyllaDB + Feast integration in the docs Comece com um tutorial Quer tentar usar o ScyllaDB como sua loja de recursos on-line? confira nossos tutoriais que o guiam pelo processo de criar um cluster ScyllaDB e construir um aplicativo de inferência em tempo real. Tutorial: Aplicação de inferência de previsão de preços com ScyllaDB Tutorial: aplicativo em tempo real com Feast & ScyllaDB Integração Feast + ScyllaDB GitHub: ScyllaDB como uma loja de recursos exemplos de código Tem perguntas ou quer ajuda para configurá-lo? ! Um post no fórum Acabei de concluir um workshop de desenvolvedores com o mantenedor do Feast, Francisco Javier Arceo: Você pode assisti-lo a pedido agora. Update: Construa aplicativos ML em tempo real com Python, Feast e NoSQL