Velox: Motor de ejecución unificado de código abierto

Meta presenta Velox, un motor de ejecución unificado de código abierto destinado a acelerar los sistemas de gestión de datos y optimizar su desarrollo.Velox está en desarrollo activo. Los resultados experimentales de nuestro artículo publicado en la Conferencia internacional sobre bases de datos muy grandes (VLDB) 2022 muestran cómo Velox mejora la eficiencia y la coherencia en los sistemas de gestión de datos.Velox ayuda a consolidar y unificar los sistemas de administración de datos de una manera que creemos beneficiará a la industria. Esperamos que la comunidad de código abierto más grande se una a nosotros para contribuir al proyecto.La infraestructura de Meta juega un papel importante en el soporte de nuestros productos y servicios. El ecosistema de infraestructura de datos está compuesto por docenas de motores de computación de datos especializados, todos enfocados en diferentes cargas de trabajo para una variedad de casos de uso que van desde análisis de SQL (por lotes e interactivo) hasta cargas de trabajo transaccionales, procesamiento de flujo, ingesta de datos y más.Recientemente, el rápido crecimiento de los casos de uso de inteligencia artificial (IA) y aprendizaje automático (ML) dentro de la infraestructura de Meta ha llevado a motores y bibliotecas adicionales dirigidos a la ingeniería de funciones, el preprocesamiento de datos y otras cargas de trabajo para la formación de ML y canalizaciones de servicio.Para abordar estos desafíos y crear una infraestructura de datos más sólida y eficiente para nuestros propios productos y el mundo, Meta ha creado y abierto Velox . Es un motor de ejecución unificado novedoso y de última generación que tiene como objetivo acelerar los sistemas de gestión de datos y optimizar su desarrollo.Velox unifica los componentes comunes de uso intensivo de datos de los motores de computación de datos sin dejar de ser extensible y adaptable a diferentes motores de computación.Democratiza las optimizaciones que anteriormente solo se implementaban en motores individuales, proporcionando un marco en el que se puede implementar una semántica coherente. Esto reduce la duplicación del trabajo, promueve la reutilización y mejora la eficiencia y la coherencia generales.  Velox está en desarrollo activo, pero ya se encuentra en varias etapas de integración con más de una docena de sistemas de datos en Meta, incluidos Presto, Spark y PyTorch (este último a través de una biblioteca de preprocesamiento de datos llamada TorchArrow), así como otros procesos de flujo interno. plataformas, motores transaccionales, sistemas e infraestructura de ingesta de datos, sistemas ML para ingeniería de características y otros. Desde que se cargó por primera vez en GitHub , el proyecto de código abierto Velox ha atraído a más de 150 colaboradores de código, incluidos colaboradores clave como Ahana, Intel y Voltron Data, así como varias instituciones académicas.Al abrir el código fuente y fomentar una comunidad para Velox, creemos que podemos acelerar el ritmo de la innovación en la industria de desarrollo del sistema de administración de datos. Esperamos que más personas y empresas se unan a nosotros en este esfuerzo. 

? CÓDIGO FUENTE DEL NUEVO MOTOR VELOX

Descripción general de Velox

Si bien los motores de computación de datos pueden parecer distintos al principio, todos están compuestos por un conjunto similar de componentes lógicos: Una interfaz de lenguaje, una representación intermedia (IR), un optimizador, un tiempo de ejecución de ejecución y un motor de ejecución. Velox proporciona los componentes básicos necesarios para implementar motores de ejecución, que consisten en todas las operaciones de uso intensivo de datos ejecutadas dentro de un solo host, como evaluación de expresiones, agregación, clasificación, unión y más.Por lo tanto, Velox espera un plan optimizado como entrada y lo ejecuta de manera eficiente utilizando los recursos disponibles en el host local.Velox aprovecha numerosas optimizaciones de tiempo de ejecución, como el reordenamiento de filtros y conjuntos, la normalización de claves para agregaciones y uniones basadas en arreglos y hash, la inserción de filtros dinámicos y la captación previa de columnas adaptativas.Estas optimizaciones brindan una eficiencia local óptima dado el conocimiento disponible y las estadísticas extraídas de los lotes de datos entrantes.Velox también está diseñado desde cero para admitir tipos de datos complejos de manera eficiente debido a su ubicuidad en las cargas de trabajo modernas y, por lo tanto, se basa en gran medida en la codificación de diccionario para operaciones de aumento y reducción de cardinalidad, como uniones y filtrado, al tiempo que proporciona rutas rápidas para tipos de datos primitivos.Los principales componentes proporcionados por Velox son:

  • Tipo: un sistema de tipo genérico que permite a los desarrolladores representar tipos de datos escalares, complejos y anidados, incluidas estructuras, mapas, matrices, funciones (lambdas), decimales, tensores y más.
  • Vector: un módulo de diseño de memoria en columnas compatible con Apache Arrow que admite múltiples codificaciones, como plana, diccionario, constante, secuencia/RLE y marco de referencia, además de un patrón de materialización perezoso y soporte para relleno de búfer de resultados fuera de orden .
  • Expression Eval: un motor de evaluación de expresiones vectorizadas de última generación basado en datos codificados por vectores, que aprovecha técnicas como la eliminación de subexpresiones comunes, el plegamiento constante, la propagación nula eficiente, la evaluación consciente de la codificación, el pelado de diccionarios y la memorización.
  • Funciones: API que los desarrolladores pueden usar para crear funciones personalizadas, proporcionando una interfaz simple (fila por fila) y vectorizada (lote por lote) para funciones escalares y una API para funciones agregadas. 
    • También se proporciona como parte de la biblioteca un paquete de funciones compatible con el popular dialecto PrestoSQL.
  • Operadores: implementación de operadores SQL comunes como TableScan, Project, Filter, Aggregation, Exchange/Merge, OrderBy, TopN, HashJoin, MergeJoin, Unnest y más.
  • I/O: un conjunto de API que permite que Velox se integre en el contexto de otros motores y tiempos de ejecución, como:
    • Conectores: permite a los desarrolladores especializar las fuentes y receptores de datos para los operadores de TableScan y TableWrite.
    • DWIO: una interfaz extensible que brinda soporte para codificar/descodificar formatos de archivo populares como Parquet, ORC y DWRF.
    • Adaptadores de almacenamiento: una interfaz extensible basada en bytes que permite que Velox se conecte a sistemas de almacenamiento como Tectonic , S3, HDFS y más. 
    • Serializadores: una interfaz de serialización dirigida a la comunicación de red donde se pueden implementar diferentes protocolos de conexión, que admite los formatos PrestoPage y UnsafeRow de Spark.
  • Gestión de recursos: una colección de primitivas para manejar recursos computacionales, como la gestión de CPU y memoria, el derrame y el almacenamiento en caché de memoria y SSD.

Spark: Gluten

Velox también se está integrando en Spark como parte del proyecto Gluten creado por Intel. Gluten permite que los motores de ejecución de C++ (como Velox) se utilicen dentro del entorno Spark mientras se ejecutan consultas Spark SQL.Gluten desacopla la JVM de Spark y el motor de ejecución mediante la creación de una API JNI basada en el formato de datos Apache Arrow y los planes de consulta de Substrait, lo que permite que Velox se use dentro de Spark simplemente integrándose con la API JNI de Gluten.El código base de Gluten está disponible en GitHub.

TorchArrow

TorchArrow es una biblioteca de marcos de datos de Python para el preprocesamiento de datos en el aprendizaje profundo y parte del proyecto PyTorch. TorchArrow traduce internamente la representación del marco de datos en un plan de Velox y lo delega a Velox para su ejecución.Además de hacer converger el espacio fragmentado de las bibliotecas de preprocesamiento de datos de ML, esta integración permite que Meta consolide el código del motor de ejecución entre los motores analíticos y la infraestructura de ML.Brinda una experiencia más consistente para los usuarios finales de ML, que comúnmente deben interactuar con diferentes motores de cómputo para completar una tarea en particular, al exponer el mismo conjunto de funciones/UDF y garantizar un comportamiento consistente en todos los motores.TorchArrow se lanzó recientemente en modo beta en GitHub.

El futuro del desarrollo de sistemas de bases de datos

Velox demuestra que es posible hacer que los sistemas de computación de datos sean más adaptables al consolidar sus motores de ejecución en una sola biblioteca unificada.A medida que continuamos integrando Velox en nuestros propios sistemas, nos comprometemos a construir una comunidad de código abierto sostenible para respaldar el proyecto y acelerar el desarrollo de bibliotecas y la adopción de la industria.También estamos interesados ​​en seguir desdibujando los límites entre la infraestructura de ML y los sistemas de gestión de datos tradicionales al unificar los paquetes de funciones y la semántica entre estos silos.

Relacionado

ForEach de Javascript: Array para bucles

Como una de las estructuras de control básicas en la programación, los bucles son casi una adición diaria al código que escribimos. El bucle forEach clásico es uno de los primeros fragmentos de código que aprendemos a escribir como programadores. Si fueras un desarrollador de Javascript, sabrías que Javascript no es ajeno a la iteración a través de los elementos de una matriz o un mapa ¡SEGUIR LEYENDO!

10 Mejores alternativas de Sci-hub para descargar artículos de investigación gratis

Como sabemos, Sci-hub es un sitio web increíble con millones de artículos de investigación para todos los estudiantes universitarios y académicos. El sitio web de Sci-Hub se encarga de obtener los artículos de investigación y artículos de pago utilizando las credenciales que se filtran. La fuente de credenciales utilizada por este sitio web no está clara. Sin embargo, se supone que muchas de ellas son donadas, ¡SEGUIR LEYENDO!

10 Características Sorprendentes de Windows que Deberías Conocer en 2024

Aunque haya sido usuario de Windows durante décadas, el sistema operativo es tan amplio y complejo que siempre existen características útiles, pero menos conocidas, que podrían sorprenderte. En este sentido, he identificado diez funciones poco conocidas de Windows que pueden potenciar su eficiencia, comodidad e incluso su experiencia de uso lúdico en su PC.

¡REBAJADO!
Microsoft Surface Go 2 - Portátil 2 en 1 de 10.5 pulgadas Full HD, Wifi, Intel...
  • Procesador Dual-Core Intel Pentium Gold 4425Y (2...
  • Memoria RAM de 8 GB LPDDR3
  • Disco SSD de 128 GB
Todas estas características deberían ser compatibles tanto con Windows 10 ¡SEGUIR LEYENDO!
10 Criptomonedas con Potencial de Crecimiento de Futuro

El rumor en torno a las criptomonedas no se desvanece por mucho que existan grandes pesimistas alrededor de los malos rumores. Entonces, si consideras invertir en el mundo de las criptomonedas, deberías estar atento a las criptomonedas que se espera que tengan un buen desempeño para el resto de 2021. En los últimos tiempos, los tokens DeFi están recibiendo toda la atención y es más que ¡SEGUIR LEYENDO!

10 Empresas de robótica más importantes del mundo

Los cambios de paradigma revolucionarios debido a los desarrollos de la robótica en todo el mundo están generando nuevos puntos de vista en muchos sectores, entre ellos en los de la industria y la tecnología. Con la ayuda de la Inteligencia Artificial, la tecnología produce resultados innovadores cada segundo y el campo de la robótica define y reconfigura su uso a cada instante. Cada día que ¡SEGUIR LEYENDO!

10 Frameworks que los Desarrolladores de Software deberían Aprender 2024

Bienvenidos desarrolladores web y de software, estamos en los inicios de 2023 y es posible que muchos se esten planteado sus objetivos para lo largo del año. Con anterioridad ya he compartidos las rutas de aprendizaje para un desarrollador front-end, un desarrollador full-stack o un desarrollador back-end entre otros muchos contenidos más. En este artículo, me gustaría compartir algunos de los mejores frameworks y bibliotecas para ¡SEGUIR LEYENDO!

10 Repositorio de GitHub que todo Desarrollador Web debería conocer

GitHub es el lugar que debes buscar cuando intentas mejorar como desarrollador, toda la información que necesitas está disponible en algún repositorio que alguien ya se ha molestado en indexar. Sin embargo, la parte complicado es encontrar el repositorio más adecuado. Es fácil sentirse perdido en todos los repositorios disponibles dentro de GitHub. Para ayudarte, he elaborado una lista de 10 repositorios de GitHub que pueden ¡SEGUIR LEYENDO!

Deja un comentario

Salir de la versión móvil