What ML feature stores require and how ScyllaDB fits in as fast, scalable online feature store En este blog, exploraremos el papel de las tiendas de características en las aplicaciones de aprendizaje automático en tiempo real (ML) y por qué ScyllaDB es una buena opción para el servicio de características en línea. Cubriremos los fundamentos de las características, cómo funcionan las tiendas de características, sus beneficios, los diferentes requisitos de carga de trabajo y cómo la latencia juega un papel crítico en las aplicaciones de ML. ¿Qué es una función en el aprendizaje automático? Una característica es una propiedad mensurable utilizada para entrenar o servir a un modelo de aprendizaje automático. Las características pueden ser puntos de datos crudos o valores de ingeniería derivados de los datos crudos. Por ejemplo, en una aplicación de redes sociales como ShareChat, las características pueden incluir: Número de likes en los últimos 10 minutos Número de acciones en los últimos 7 días Tema del post Crédito de la imagen: Ivan Burmistrov y Andrei Manakov (ShareChat) Estos puntos de datos ayudan a predecir resultados como el compromiso del usuario o la recomendación de contenido. Un vector de características es simplemente una colección de características relacionadas con una tarea de predicción específica. Por ejemplo, esto es lo que un vector de características podría parecer para una aplicación de puntuación de crédito. Seleccionar puntos de datos relevantes y transformarlos en características ocupa una parte significativa del trabajo en proyectos de aprendizaje automático. También es un proceso continuo para refinar y optimizar características para que el modelo siendo entrenado se vuelva más preciso con el tiempo. Características de las grandes arquitecturas Para trabajar con funciones de manera eficiente, puede crear un lugar central para gestionar las funciones que están disponibles dentro de su organización. Un proceso estándar para crear nuevas características Almacenamiento de características para el acceso simplificado Descubrimiento y reutilización de características en equipos Servir características para el entrenamiento del modelo y la inferencia La mayoría de las arquitecturas distinguen entre dos almacenes / bases de datos: Tienda fuera de línea para el entrenamiento de modelos (bulk writes/reads) Tienda en línea para inferencias (en tiempo real, escribe / lee con baja latencia) Una tubería típica de tiendas de características comienza con la ingestión de datos crudos (de lagos de datos o flujos), la realización de ingeniería de características, guardar características en ambas tiendas, y luego servirlos a través de dos tuberías separadas: una para la formación y una para la inferencia. Ventajas de una tienda centralizada Las tiendas centralizadas ofrecen varias ventajas: Evitar la duplicación: los equipos pueden reutilizar las características existentes Acceso autosuficiente: los científicos de datos pueden generar y consultar características de forma independiente Pipelines unificados: aunque las cargas de trabajo de entrenamiento e inferencia son muy diferentes, aún pueden ser consultadas usando la misma capa de abstracción Esto resulta en una iteración más rápida, una mayor coherencia y una mejor colaboración en los flujos de trabajo de ML. Diferentes cargas de trabajo en tiendas de características Rompamos los dos requisitos de carga de trabajo muy distintos que existen dentro de una tienda de características: capacitación de modelos y inferencia en tiempo real. Formación de modelos (la tienda offline) Para hacer predicciones, necesitas entrenar primero un modelo de aprendizaje automático. El entrenamiento requiere un conjunto de datos grande y de alta calidad. Puedes almacenar este conjunto de datos en una tienda de características offline. Lentitud: no es una prioridad Volumen: Alto (de millones a miles de millones de discos) Frecuencia: Trabajos poco frecuentes y programados Objetivo: Recuperar una gran cantidad de datos históricos Básicamente, las tiendas offline necesitan almacenar de manera eficiente enormes conjuntos de datos. Inferencia en tiempo real (tarjeta en línea) Una vez que tengas un modelo listo, puedes ejecutar la inferencia en tiempo real. La inferencia en tiempo real toma la entrada proporcionada por el usuario y la convierte en una predicción. Latencia: alta prioridad Volumen: Bajo por solicitud pero alto rendimiento (hasta millones de operaciones por segundo) Frecuencia: constante, desencadenada por las acciones del usuario (por ejemplo, ordenar comida) Finalidad: Servir características actualizadas para hacer predicciones rápidamente Por ejemplo, considere una aplicación de entrega de alimentos.El contenido reciente del carrito, la edad y la ubicación del usuario pueden ser convertidos en características y utilizados instantáneamente para recomendar otros artículos para comprar.Esto requeriría inferencia en tiempo real - y la latencia hace o rompe la experiencia del usuario. Por qué es importante la latencia La latencia (en el contexto de este artículo) se refiere al tiempo entre el envío de una consulta y la recepción de la respuesta de la tienda de características. Imagínese a un usuario en el checkout que se muestran artículos de alimentos relacionados.Si esta sugerencia tarda demasiado en cargarse debido a una tienda en línea lenta, se pierde la oportunidad. Inserir los últimos datos Buscando características relevantes Correr la inferencia Volver a la predicción Esto debe ocurrir en milisegundos. Elegir una solución de tienda de características Una vez que decida construir una tienda de características, rápidamente encontrará que hay docenas de marcos y proveedores, tanto de código abierto como comercial, para elegir entre: Feast (código abierto): proporciona soporte de bases de datos flexibles (por ejemplo, Postgres, Redis, Cassandra, ScyllaDB) Hopsworks: estrechamente unido a su propio ecosistema AWS SageMaker: vinculado a la pila de AWS (por ejemplo, S3, DynamoDB) Y muchos otros Factores como la experiencia técnica de su equipo, los requisitos de latencia y las integraciones requeridas con su pila existente juegan un papel. Si usted está preocupado por la escalabilidad y el rendimiento de su tienda de características en línea, entonces la flexibilidad de la base de datos debe ser una consideración clave. Hay tiendas de características (por ejemplo, AWS SageMaker, GCP Vertex, Hopsworks, etc.) que ofrecen su propia tecnología de base de datos como la tienda en línea. Imagínese elegir un proveedor como este con un requisito de latencia P99 estricto (por ejemplo, <15ms P99).El requisito se cumple con éxito durante la prueba de concepto (POC).Pero más tarde experimenta picos de latencia - tal vez porque sus requisitos cambian o hay un aumento de nuevos usuarios en su aplicación o alguna otra razón impredecible. El problema es que no puedes... al menos no fácilmente.Estás atrapado con la solución integrada.Es imposible migrar sólo la parte de la tienda en línea de tu arquitectura porque todo está bloqueado. Si desea evitar estas situaciones, puede buscar herramientas que sean flexibles con respecto al backend de la tienda fuera de línea y en línea. Herramientas como Feast o FeatureForm le permiten traer su propio backend de la base de datos, tanto para las tiendas en línea como fuera de línea. Esta es una gran manera de evitar el bloqueo del vendedor y hacer futuras migraciones de bases de datos menos dolorosas en caso de que ocurran picos de latencia o aumenten los costes. ScyllaDB como una tienda de características en línea ScyllaDB es una base de datos NoSQL de alto rendimiento que es API compatible con Apache Cassandra y DynamoDB API. , y incluye , lo que lo convierte en ideal para aplicaciones de almacenamiento de características de baja latencia y alta rendimiento. Arquitectura Shard-per-Core Un sistema de cache integrado ¿Por qué ScyllaDB? Latencia baja (desempeño de milisegundos de un solo dígito P99) Alta disponibilidad y resiliencia Alto rendimiento a escala (despliegue a escala de petabytes) No hay bloqueo de vendedores (se ejecuta on-prem o en cualquier nube) Sustitución de las configuraciones Cassandra/DynamoDB existentes Migración fácil de otras bases de datos NoSQL (Cassandra, DynamoDB, MongoDB, etc.) Integración con el framework Feast ScyllaDB brilla en los casos de uso de la tienda de características en línea donde el rendimiento en tiempo real, la disponibilidad y la predictibilidad de la latencia son críticos. Integración con ScyllaDB + Feast Feast es un popular framework de tienda de características de código abierto que admite tanto tiendas en línea como fuera de línea. Uno de sus puntos fuertes es la capacidad de conectar sus propias fuentes de bases de datos, incluyendo ScyllaDB. . ScyllaDB + Integración de Feast en los documentos Comience con un tutorial de tienda de características ¿Quieres probar el uso de ScyllaDB como tu tienda de características en línea? Compruebe nuestros tutoriales que te guían por el proceso de crear un clúster ScyllaDB y construir una aplicación de inferencia en tiempo real. Tutorial: Aplicación de inferencia de predicción de precios con ScyllaDB Aplicación en tiempo real con Feast & ScyllaDB Integración de Feast + ScyllaDB GitHub: ScyllaDB como una tienda de características ejemplos de código ¿Tienes alguna pregunta o quieres ayudar a configurarlo? ! Un post en el foro Acabo de completar un taller de desarrollador con el mantenedor de Feast, Francisco Javier Arceo: Ya se puede ver a petición. Update: Crea aplicaciones ML en tiempo real con Python, Feast y NoSQL