Articulo de referencia

Apache SystemDS

Apache SystemDS (anteriormente, Apache SystemML) es un sistema de aprendizaje automático de código abierto para el ciclo de vida completo de la ciencia de datos. Las característ...

Apache SystemDS (anteriormente, Apache SystemML) es un sistema de aprendizaje automático de código abierto para el ciclo de vida completo de la ciencia de datos.

Las características distintivas de SystemDS son:

  1. Personalización de algoritmos mediante lenguajes similares a R y Python.
  2. Múltiples modos de ejecución, incluidos Standalone, Spark Batch, Spark MLContext, Hadoop Batch y JMLC.
  3. Optimización automática basada en las características de los datos y del clúster para garantizar tanto la eficiencia como la escalabilidad.

Historia

SystemML fue creado en 2010 por investigadores del Centro de Investigación IBM Almaden, liderados por Shivakumar Vaithyanathan, miembro de IBM. Se observó que los científicos de datos escribían algoritmos de aprendizaje automático en lenguajes como R y Python para conjuntos de datos pequeños. Al escalar a grandes conjuntos de datos, se requería un programador de sistemas para adaptar el algoritmo a un lenguaje como Scala . Este proceso solía implicar días o semanas por iteración, y se producían errores al traducir los algoritmos para que operaran con grandes conjuntos de datos. SystemML busca simplificar este proceso. Un objetivo principal de SystemML es escalar automáticamente un algoritmo escrito en un lenguaje similar a R o Python para que opere con grandes conjuntos de datos, generando la misma respuesta sin el enfoque de traducción iterativa y propensa a errores.

El 15 de junio de 2015, durante la Cumbre Spark en San Francisco, Beth Smith, Directora General de IBM Analytics, anunció que IBM liberaría el código fuente de SystemML como parte de su importante compromiso con Apache Spark y proyectos relacionados. SystemML se publicó en GitHub el 27 de agosto de 2015 y se convirtió en un proyecto de Apache Incubator el 2 de noviembre de 2015. El 17 de mayo de 2017, la Junta Directiva de la Fundación de Software Apache aprobó que Apache SystemML pasara a ser un proyecto de nivel superior de Apache.

Tecnologías clave

A continuación se describen algunas de las tecnologías integradas en el motor SystemDS.

  • Álgebra lineal comprimida para el aprendizaje automático a gran escala
  • Lenguaje de aprendizaje automático declarativo

Ejemplos

Análisis de componentes principales

El siguiente fragmento de código [ 1 ] realiza el análisis de componentes principales de la matriz de entrada.A{\displaystyle A}, que devuelve elmiigramominortevmidotors{\displaystyle vectores propios}y elmiigramominortevalmis{\textstyle valores propios}.

# PCA.dml# Referencia: https://github.com/apache/systemds/blob/master/scripts/algorithms/PCA.dml#L61N = fila n ( A );D = ncol ( A );# Realizar puntuación Z (centrado y escalado)A = escala ( A , centro == 1 , escala == 1 );# matriz de covarianzamu = sumasdecolumnas ( A ) / N ;C = ( t ( A ) %*% A ) / ( N -1 ) - ( N / ( N -1 )) * t ( mu ) %*% mu ;# Calcular vectores y valores propios[ evaluaciones , evectores ] = eigen ( C );

Script de invocación

spark-submit SystemDS.jar -f PCA.dml -nvargs INPUT=INPUT_DIR/pca-1000x1000 \  OUTPUT=OUTPUT_DIR/pca-1000x1000-model PROJDATA=1 CENTER=1 SCALE=1

Funciones de base de datos

Algoritmo de agrupamiento DBSCAN con distancia euclidiana .

X = rand ( filas = 1780 , columnas = 180 , mín = 1 , máx = 20 )[ índices , modelo ] = dbscan ( X = X , eps = 2.5 , minPts = 360 )

mejoras

SystemDS 2.0.0 es la primera versión principal bajo el nuevo nombre. Esta versión incluye una importante refactorización, nuevas funcionalidades, numerosas mejoras y correcciones, así como algunas funciones experimentales para optimizar el ciclo de vida completo de la ciencia de datos. Además, se eliminan varias funcionalidades obsoletas.

  • Nuevo mecanismo para funciones con cuerpo DML (a nivel de script) builtiny una gran cantidad de nuevas funciones integradas para el preprocesamiento de datos, que incluyen técnicas de limpieza, aumento e ingeniería de características de datos, nuevos algoritmos de aprendizaje automático y depuración de modelos.
  • Se han implementado varios métodos para la limpieza de datos, incluyendo imputaciones múltiples con imputación multivariante por ecuaciones encadenadas (MICE) y otras técnicas, SMOTE, una técnica de sobremuestreo para el desequilibrio de clases, relleno de NA hacia adelante y hacia atrás, limpieza utilizando información de esquema y longitud, soporte para la detección de valores atípicos utilizando la desviación estándar y el rango intercuartil, y descubrimiento de dependencias funcionales.
  • Un marco completo para el rastreo y la reutilización de código, que incluye soporte para la deduplicación de bucles, reutilización total y parcial, reutilización asistida por el compilador y varias reescrituras nuevas para facilitar la reutilización.
  • Nuevo backend de tiempo de ejecución federado que incluye soporte para matrices y marcos federados, builtins federados ( transform-encode, decodeetc.).
  • Refactorizar el paquete de compresión y añadir funcionalidades que incluyan cuantización para compresión con pérdida, operaciones con celdas binarias y multiplicación de matrices por la izquierda. [experimental]
  • Nuevas bibliotecas de Python con soporte para varias builtinfunciones, operaciones matriciales, tensores federados y trazas de linaje.
  • Implementación en CUDA de operadores de agregación acumulativa ( cumsum, cumprodetc.)
  • Nueva técnica de depuración de modelos con buscador de segmentos.
  • Nuevo modelo de datos tensoriales (tensores básicos de diferentes tipos de valores, tensores de datos con esquema) [experimental]
  • Scripts de implementación en la nube para AWS y scripts para configurar e iniciar operaciones federadas.
  • Mejoras de rendimiento con parallel sort, gpu cum agg, append cbindetc.
  • Diversas mejoras en el compilador y el entorno de ejecución, incluyendo reescrituras nuevas y mejoradas, reducción de la creación de contexto de Spark, nuevo evalmarco de trabajo, operaciones de lista y bibliotecas del kernel nativas actualizadas, entre otras.
  • Nuevo lector/escritor de datos para jsonmarcos y compatibilidad con sqlcomo fuente de datos.
  • Mejoras diversas: documentación mejorada, mejores pruebas, scripts de ejecución/lanzamiento, empaquetado mejorado, contenedor Docker para systemds, compatibilidad con expresiones lambda, corrección de errores.
  • Se eliminaron el compilador y el backend de tiempo de ejecución de MapReduce, pydmlel analizador sintáctico, el marco de trabajo Java-UDF y el depurador a nivel de script.
  • Obsoleto ./scripts/algorithms, ya que esos algoritmos se integrarán gradualmente en SystemDS builtin.

[ 2 ]

Contribuciones

Apache SystemDS agradece las contribuciones en código, preguntas y respuestas, creación de comunidad o difusión de información. La guía para colaboradores está disponible en https://github.com/apache/systemds/blob/main/CONTRIBUTING.md

Véase también

Referencias

  1. Apache SystemDS , The Apache Software Foundation, 24 de febrero de 2022 , consultado el 6 de marzo de 2022.
  2. SystemDS, Apache. "Notas de la versión SystemML 1.2.0" . systemds.apache.org . Consultado el 26 de febrero de 2021 .
  • Sitio web de Apache SystemML
  • IBM Research - SystemML
  • Sesión de preguntas y respuestas con Shiv Vaithyanathan, creador de SystemML e IBM Fellow.
  • Un traductor universal para macrodatos y aprendizaje automático.
  • SystemML: Presentación de Fred Reiss sobre aprendizaje automático declarativo a gran escala.
  • SystemML: Aprendizaje automático declarativo en MapReduce. Archivado el 10 de marzo de 2016 en Wayback Machine.
  • Estrategias de paralelización híbrida para el aprendizaje automático a gran escala en SystemML
  • Optimizador de SystemML: Generación de planes para programas de aprendizaje automático a gran escala.
  • El sistema de aprendizaje automático SystemML de IBM se convierte en un proyecto de Apache Incubator.
  • IBM dona tecnología de aprendizaje automático a la comunidad de código abierto Apache Spark.
  • SystemML de IBM avanza como proyecto incubador de Apache.