Estás leyendo la publicación: Crea tu primera tienda de funciones con Feast
Una tienda de funciones realiza un seguimiento de las funciones utilizadas con frecuencia. Las tiendas de características se han convertido en un componente crítico de la infraestructura de datos para los sistemas de aprendizaje automático. Manejan toda la vida útil de las funciones, desde entrenar múltiples modelos hasta brindar acceso de baja latencia a funciones para la inferencia de modelos mediante aplicaciones en línea. Este artículo presenta Feast, un sistema de administración de datos para administrar y proporcionar funciones de aprendizaje automático. Con las funciones proporcionadas por Feast, cubriremos aquí cómo crear nuestra propia tienda de funciones. Los siguientes son los temas a tratar.
Tabla de contenido
- ¿Qué es una tienda de características?
- ¿Qué tipo de tiendas de características están disponibles?
- ¿Por qué utilizar la tienda de características?
- ¿Hay algún inconveniente en la tienda de funciones?
- Crear una tienda de características usando Feast
Comencemos con una idea de alto nivel de una tienda de funciones.
¿Qué es una tienda de características?
En pocas palabras, una tienda de funciones es una herramienta que se utiliza para almacenar funciones de uso común. Por lo general, cuando los científicos de datos desarrollan funciones para un modelo de aprendizaje automático, esas funciones se pueden agregar al almacén de funciones para que se puedan reutilizar más adelante.
El proceso de desarrollo de características también se conoce como ingeniería de características y es un componente complejo pero necesario de cualquier proceso de aprendizaje automático. Mejores características equivalen a mejores modelos, lo que equivale a un mejor resultado empresarial.
La tienda de características para el aprendizaje automático es un servicio de cálculo y almacenamiento de características que permite registrar, encontrar y utilizar características tanto en canalizaciones de aprendizaje automático como en aplicaciones en línea para la inferencia de modelos. Los Feature Stores suelen necesitar almacenar grandes cantidades de datos de funciones y, al mismo tiempo, proporcionar acceso de baja latencia a funciones para aplicaciones en línea.
Producir una tubería para generar una nueva función es solo un componente del trabajo involucrado en la creación de una nueva función. Para llegar a ese punto, sin duda hay que pasar por un largo proceso de prueba y error con una amplia gama de funciones hasta que sea satisfactoria. Luego, es necesario calcularlo y guardarlo como parte de una canalización operativa, que varía según si la característica está en línea o fuera de línea.
Una tienda de características, por otro lado, es más que una capa de datos; también es un servicio de transformación de datos que permite a los clientes cambiar los datos sin procesar y almacenarlos como características que pueden ser utilizadas por cualquier modelo de aprendizaje automático.
¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.
¿Hay algún tipo de tiendas de funciones?
Un almacén de características a menudo se crea como un sistema de base de datos dual, con un almacén de características en línea de baja latencia (por lo general, un almacén de clave-valor o una base de datos en tiempo real) y una base de datos SQL escalable para almacenar grandes cantidades de datos de características para entrenamiento y aplicaciones por lotes. Hay dos formas en que se puede utilizar una tienda de características.
- Desconectado – Algunas características se calculan fuera de línea como parte de una tarea por lotes. Por ejemplo, el gasto mensual promedio. En su mayoría son empleados por procesos fuera de línea. Debido a su naturaleza, estos rasgos pueden tardar algún tiempo en desarrollarse. Las funciones sin conexión a menudo se generan utilizando marcos como Spark o realizando consultas SQL en una base de datos determinada y luego utilizando un procedimiento de inferencia por lotes.
- En línea – Estas características son un poco más desafiantes ya que deben calcularse rápidamente y con frecuencia se sirven en milisegundos. Calcular un puntaje z, por ejemplo, para la detección de fraude en tiempo real. En este escenario, la canalización se crea en tiempo real calculando la media y la desviación estándar en una ventana deslizante. Estos cálculos son sustancialmente más difíciles y necesitan tanto un cálculo rápido como un acceso rápido a los datos. La información se puede guardar en la memoria o en una base de datos rápida de clave-valor.
¿Por qué utilizar la tienda de características?
Tiempo de desarrollo reducido
Las configuraciones de ingeniería de datos se ven con frecuencia como un proceso derivado. Algunos atributos son difíciles de calcular y requieren la construcción de una agregación, mientras que otros son bastante simples. Como resultado, la idea detrás de un almacén de características es abstraer todas esas capas de ingeniería y simplificar la lectura y escritura de características.
Trabajar con una tienda de funciones abstrae esta capa para que cuando un desarrollador busque una función, pueda usar una API simple para recuperar los datos en lugar de escribir código técnico.
La implementación del modelo en producción es fluida
Uno de los aspectos más difíciles de implementar el aprendizaje automático en producción es que las funciones utilizadas para entrenar un modelo en el entorno de desarrollo no son las mismas que las características en la capa de servicio de producción. Como resultado, el establecimiento de un conjunto de características consistentes en las capas de capacitación y servicio permite un proceso de implementación más fluido, lo que garantiza que el modelo capacitado refleje con precisión cómo funcionarán las cosas en producción.
Mejor rendimiento del modelo
La tienda de funciones almacena metadatos adicionales para cada función además de las funciones reales. Por ejemplo, una estadística que demuestra la influencia de una característica en el modelo con el que se relaciona. Esta información puede ser de gran ayuda para los científicos de datos a la hora de elegir las características de un nuevo modelo, permitiéndoles centrarse en aquellas que han tenido la mayor influencia en modelos actuales similares.
Rastree el linaje y aborde el cumplimiento normativo
Es fundamental rastrear el linaje de los algoritmos que se construyen para seguir las reglas y las leyes, especialmente cuando los modelos de IA que se generan sirven a áreas como la atención médica, los servicios financieros y la seguridad. Para hacer esto, se requiere una visión del flujo de datos completo de extremo a extremo para comprender mejor cómo el modelo genera sus resultados. Debido a que las funciones se crean como parte del proceso, es necesario seguir el flujo del proceso de creación de funciones. El linaje de la característica podría conservarse en una tienda de características. Esto ofrece la información de seguimiento esencial, capturando cómo se desarrolló la función, así como la información y los informes necesarios para el cumplimiento normativo.
¿Hay algún inconveniente en la tienda de funciones?
Hay ciertos inconvenientes de la tienda de funciones que se enumeran a continuación.
- Hay una inflexibilidad potencial en la tienda de funciones. Las organizaciones requieren una tienda de funciones única para cada tipo de entidad.
- La integración compleja puede requerir la integración de muchas tecnologías, como almacenes de datos, canalizaciones de transmisión y motores de procesamiento.
- Limita la personalización del modelo: varias aplicaciones pueden beneficiarse de diferentes codificaciones de funciones que pasarían desapercibidas si todas usaran el mismo almacén de funciones.
Crear una tienda de características usando Feast
Comencemos con la instalación del paquete Feast. Si usa el cuaderno de Google Colab, primero instale la dependencia que se menciona a continuación.
! pip install tf-estimator-nightly==2.8.0.dev2021122109 %%sh pip install banquete -U -q pip install Pygments -q
El ‘%%sh’ es un intérprete de línea de comando de shell que interpretará la línea de comando como lo fue en el sistema operativo Linux.
Crear el repositorio de características
! fiesta init feature_repo


Este comando inicializará el repositorio de funciones, que es un directorio que contiene la configuración del almacén de funciones, así como funciones individuales. Esta configuración está escrita en Python/YAML.
En este artículo, utilizaremos un repositorio de demostración de Feast. Inspeccionemos el contenido del repositorio.
%cd feature_repo !ls -R
‘%cd’ cambiará el directorio al repositorio creado.


Echemos un vistazo a la configuración del proyecto.
! pigmentar feature_store.yaml


Ahora se crea el repositorio de funciones y se configura el proyecto. Los datos deben cargarse y la función debe definirse.
importar pandas como pd desde fechahora importar fechahora, timedelta importar sqlite3 desde fiesta importar FeatureStore raw_df=pd.read_parquet(“data/driver_stats.parquet”) raw_df.head()


En este repositorio de demostración, ya hay un archivo predefinido que contiene funciones, por lo que es necesario definir las funciones. Echemos un vistazo a esas características.
! pygmentize -f terminal16m ejemplo.py


Ahora las características están definidas y deben aplicarse a los datos.
! fiesta aplicar


Las funciones se han aplicado y los datos están listos para dividirse en conjuntos de entrenamiento y prueba.
dict_df = pd.DataFrame.from_dict( { “driver_id”: [1001, 1002, 1003]”label_driver_reported_satisfaction”: [1, 5, 3]”evento_marca de tiempo”: [
datetime.now() – timedelta(minutes=11),
datetime.now() – timedelta(minutes=36),
datetime.now() – timedelta(minutes=73),
]} ) store = FeatureStore(repo_path=”.”) training_data = store.get_historical_features(entity_df=dict_df, features=[
“driver_hourly_stats:conv_rate”,
“driver_hourly_stats:acc_rate”,
“driver_hourly_stats:avg_daily_trips”,
]).to_df()


Carguemos estas funciones en la tienda en línea para que puedan utilizarse globalmente en el hub.
! fiesta materializar-incremental {datetime.now().isoformat()}


Una vez que las características se cargan en la base de datos, debe formarse algún directorio. Revisemos esos directorios e intentemos extraer las características recién cargadas de la base de datos usando SQL.
print(“— Directorio de datos —“) !ls datos


Hay tres directorios, uno con los datos sin procesar, el otro con las funciones actualizadas y la implementación de esas funciones en los datos (datos actualizados).
con_online = sqlite3.connect(“data/online_store.db”) print(“\n— Esquema de la tienda en línea —“) print( pd.read_sql_query( “SELECT * FROM feature_repo_driver_hourly_stats”, con_online).columns.tolist ()) con_online.cerrar()


El ‘sqlite3’ hará una conexión con la base de datos y los datos podrían extraerse simplemente escribiendo la consulta SQL.
Conclusión
Las tiendas de características son la herramienta que las organizaciones pueden utilizar para generar varios modelos basados en una o varias entidades. La principal ventaja de un almacén de características es que contiene la lógica de las transformaciones de características, lo que le permite transformar automáticamente datos nuevos y proporcionar ejemplos para entrenamiento o inferencia. Con este artículo práctico, hemos entendido las tiendas de características y su importancia para un proyecto de ciencia de datos.