• 5 min read

Feathr: El almacén de características de LinkedIn ya está disponible en Azure

Con el avance de la inteligencia artificial y el aprendizaje automático, las empresas empiezan a usar canalizaciones complejas de aprendizaje automático en diversas aplicaciones, como sistemas de recomendaciones, detección de fraudes, etc. Estos sistemas complejos normalmente requieren de cientos a miles de características para admitir aplicaciones empresariales en las que el factor tiempo es importante, y las canalizaciones de características las mantienen distintos miembros del equipo de varios grupos empresariales.

Esta entrada de blog está coescrita por David Stein, Senior Staff Software Engineer, Jinghui Mo, Staff Software Engineer, y Hangfei Lin, Staff Software Engineer, todos del equipo de Feathr.

Motivación del almacén de características

Con el avance de la inteligencia artificial y el aprendizaje automático, las empresas empiezan a usar canalizaciones complejas de aprendizaje automático en diversas aplicaciones, como sistemas de recomendaciones, detección de fraudes, etc. Estos sistemas complejos normalmente requieren de cientos a miles de características para admitir aplicaciones empresariales en las que el factor tiempo es importante, y las canalizaciones de características las mantienen distintos miembros del equipo de varios grupos empresariales.

En estos sistemas de aprendizaje automático, vemos muchos problemas que consumen mucha energía de los ingenieros de aprendizaje automático y científicos de datos, en particular la ingeniería de características duplicadas, la distorsión sin conexión-en línea, y el servicio de características con baja latencia.

Figura 1: Ilustración sobre los problemas que resuelve el almacén de características

Figura 1: Ilustración sobre los problemas que resuelve el almacén de características.

Ingeniería de características duplicadas

  • En una organización, miles de características están enterradas en scripts diferentes y en formatos diferentes. No se capturan, organizan ni conservan y, por tanto, no pueden reutilizarse ni aprovecharse por equipos distintos de los que los generaron.
  • Dado que la ingeniería de características es tan importante para los modelos de aprendizaje automático y las características no se pueden compartir, los científicos de datos deben duplicar sus esfuerzos de ingeniería de características entre los equipos.

Distorsión sin conexión-en línea

  • Para las características, el entrenamiento sin conexión y la inferencia en línea normalmente requieren canalizaciones de servicio de datos diferentes, lo que causa que las características coherentes en distintos entornos sean costosas.
  • Los equipos no pueden usar datos en tiempo real para la inferencia debido a la dificultad de ofrecer los datos correctos.
  • Proporcionar una manera cómoda de garantizar la corrección a un momento dado de los datos es clave para evitar la pérdida de etiquetas.

Servicio de características con baja latencia

  • Para las aplicaciones en tiempo real, obtener búsquedas de características de la base de datos para la inferencia en tiempo real sin poner en peligro la latencia de respuesta y con un alto rendimiento puede ser un desafío.
  • El acceso sencillo a características con una latencia muy baja es clave en muchos escenarios de aprendizaje automático y es necesario realizar optimizaciones para combinar diferentes llamadas API de REST a las características.

Para resolver esos problemas, se desarrolló un sistema denominado almacén de características, de modo que:

  • Las características están centralizadas en una organización y se pueden reutilizar
  • Las características se pueden servir de forma sincrónica entre el entorno sin conexión y el entorno en línea
  • Las características se pueden servir en tiempo real con baja latencia

Presentación de Feathr, un almacén de características probado

Desarrollar un almacén de características desde cero lleva tiempo, y lleva mucho más tiempo hacerlo estable, escalable y fácil de usar. Feathr es el almacén de características que se ha usado en producción y probado en LinkedIn durante más de 6 años, y sirve a toda la plataforma de características de aprendizaje automático de LinkedIn con miles de características en producción.

En Microsoft, el equipo de LinkedIn y el equipo de Azure han trabajado muy estrechamente para hacer que Feathr sea de código abierto y extensible y para crear la integración nativa con Azure. Está disponible en este repositorio de GitHub y puede leer más sobre Feathr en el blog de ingeniería de LinkedIn.

Algunos de los aspectos destacados de Feathr son los siguientes:

  • Escalable con optimizaciones integradas. Por ejemplo, en función de algún caso de uso interno, Feathr puede procesar miles de millones de filas y datos de escalado de PB con optimizaciones integradas, como filtros de Bloom y combinaciones con sal.
  • Amplia compatibilidad con combinaciones y agregaciones a un momento dado: Feathr tiene operadores integrados de alto rendimiento diseñados para el almacén de características, como la agregación basada en el tiempo, combinaciones de ventanas deslizantes y características de búsqueda; todo ello con corrección a un momento dado.
  • Funciones definidas por el usuario (UDF) altamente personalizables con compatibilidad nativa con PySpark y Spark SQL para reducir la curva de aprendizaje para los científicos de datos.
  • API pythónicas para acceder a todo con curva de aprendizaje baja. Están integradas con la creación de modelos para que los científicos de datos puedan ser productivos desde el primer día.
  • Sistema de tipos enriquecidos, como la compatibilidad con inserciones para escenarios avanzados de aprendizaje automático y aprendizaje profundo. Uno de los casos de uso comunes es crear inserciones para perfiles de cliente, y esas inserciones se pueden reutilizar en una organización en todas las aplicaciones de aprendizaje automático.
  • Integración nativa en la nube con una arquitectura simplificada y escalable, que se muestra en la sección siguiente.
  • El uso compartido y la reutilización de características son fáciles: Feathr tiene un registro de características integrado para que las características se puedan compartir fácilmente entre distintos equipos y aumentar la productividad del equipo.

Arquitectura de Feathr en Azure

En el diagrama de arquitectura de alto nivel siguiente se explica cómo interactúa un usuario con Feathr en Azure:

Arquitectura de Feathr en Azure

Figura 2: Arquitectura de Feathr en Azure.

  1. Un ingeniero de datos o aprendizaje automático crea características con sus herramientas preferidas (como Pandas, Azure Machine Learning, Azure Databricks, etc.). Estas características se ingieren en almacenes sin conexión, que pueden ser:
    • Azure SQL Database (incluido sin servidor), Grupo de SQL dedicado de Azure Synapse (anteriormente SQL DW).
    • Almacenamiento de objetos, como Azure Blob Storage, Azure Data Lake Storage, etc. El formato puede ser Parquet, Avro o Delta Lake.
  2. El ingeniero de datos o aprendizaje automático puede conservar las definiciones de características en un registro central, que se compila con Azure Purview.
  3. El ingeniero de datos o aprendizaje automático puede unirse a todo el conjunto de datos de características de forma correcta a un momento dado, con el SDK de Python para Feathr y con motores de Spark, como Azure Synapse o Databricks.
  4. El ingeniero de datos o aprendizaje automático puede materializar características en un almacén en línea, como Azure Cache for Redis con Active-Active, lo que permite una arquitectura principal y de escritura múltiple que garantiza la coherencia final entre clústeres.
  5. Los científicos de datos o los ingenieros de aprendizaje automático consumen características sin conexión con sus bibliotecas favoritas de aprendizaje automático, por ejemplo, scikit-learn, PyTorch o TensorFlow para entrenar un modelo en su plataforma de aprendizaje automático favorita, como Azure Machine Learning, y, a continuación, implementar los modelos en su entorno favorito con servicios como el punto de conexión de Azure Machine Learning.
  6. El sistema de back-end realiza una solicitud al modelo implementado, que realiza una solicitud a Azure Cache for Redis para obtener las características en línea con el SDK de Python para Feathr.

Un cuaderno de ejemplo que contiene todo el flujo anterior se encuentra en el repositorio de Feathr para obtener más referencias.

Feathr tiene integración nativa con Azure y otros servicios en la nube. En la tabla siguiente se muestran estas integraciones:

Componente de Feathr

Cloud Integrations

Almacén sin conexión: almacén de objetos

Azure Blob Storage
Azure ADLS Gen2
AWS S3

 

Tienda sin conexión: SQL

Azure SQL DB
Grupos de SQL dedicado en Azure Synapse (anteriormente SQL DW)
Azure SQL en VM
Snowflake

Almacén en línea

Azure Cache for Redis

Registro de características

Ámbito de Azure

Motor de proceso

Grupos de Spark de Azure Synapse
Databricks

Plataforma de Machine Learning

Azure Machine Learning
Jupyter Notebook

Formato de archivo

Parquet
ORC
Avro
Delta Lake

Tabla 1: Integración de Feathr en Azure con servicios de Azure.

Instalación e introducción

Feathr tiene una interfaz pythónica para acceder a todos los componentes de Feathr, incluida la definición de características y las interacciones en la nube, y su código abierto se encuentra aquí. El cliente de Python de Feathr se puede instalar fácilmente con pip:

pip install -U feathr

Para obtener más información sobre cómo empezar, consulte la guía de inicio rápido de Feathr. También se puede contactar con el equipo de Feathr en la comunidad de Feathr.

De cara al futuro

En este blog, hemos presentado un almacén de características de pruebas, denominado Feathr, que es escalable y listo para la empresa, con integraciones nativas de Azure. Estamos comprometidos con incorporar más funcionalidades en Feathr y en las integraciones de Feathr en Azure, y no dude en enviar comentarios con problemas en el repositorio de GitHub de Feathr.