Apache SystemDS - Apache SystemDS

Apache SystemDS
Logotipo de Apache SystemML
Desarrollador (es) Fundación de software Apache , IBM
Versión inicial 2 de noviembre de 2015 ; Hace 5 años ( 02-11-2015 )
Lanzamiento estable
2.0.0 / 22 de octubre de 2020 ; hace 8 meses ( 2020-10-22 )
Repositorio Repositorio SystemDS
Escrito en Java , Python , aprendizaje automático descriptivo, C
Sistema operativo Linux , macOS , Windows
Tipo Aprendizaje automático , aprendizaje profundo , ciencia de datos
Licencia Licencia Apache 2.0
Sitio web systemds .apache .org

Apache SystemDS (anteriormente, Apache SystemML) es un sistema de aprendizaje automático flexible que escala automáticamente a los clústeres Spark y Hadoop . Las características distintivas de SystemDS son:

  1. Personalización de algoritmos a través de 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 datos y características del clúster para garantizar tanto la eficiencia como la escalabilidad.

Historia

SystemML fue creado en 2010 por investigadores del IBM Almaden Research Center dirigido por IBM Fellow Shivakumar Vaithyanathan. Se observó que los científicos de datos escribirían algoritmos de aprendizaje automático en lenguajes como R y Python para datos pequeños. Cuando llegara el momento de escalar a big data, se necesitaría un programador de sistemas para escalar el algoritmo en un lenguaje como Scala . Este proceso generalmente implicaba días o semanas por iteración, y se producirían errores al traducir los algoritmos para operar en big data. 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 operar en big data, generando la misma respuesta sin el enfoque de traducción multi-iterativo, propenso a errores.

El 15 de junio de 2015, en la Spark Summit en San Francisco, Beth Smith, Gerente General de IBM Analytics, anunció que IBM estaba utilizando SystemML de código abierto como parte del principal compromiso de IBM con Apache Spark y proyectos relacionados con Spark. SystemML se puso a disposición del público 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 de Apache Software Foundation aprobó la graduación de Apache SystemML como un proyecto de nivel superior de Apache.

Tecnologías clave

Las siguientes son algunas de las tecnologías integradas en el motor SystemDS.

Ejemplos de

El siguiente fragmento de código realiza el análisis del componente principal de la matriz de entrada , que devuelve el y el .

# PCA.dml
# Refer: https://github.com/apache/systemds/blob/master/scripts/algorithms/PCA.dml#L61

N = nrow(A);
D = ncol(A);

# perform z-scoring (centering and scaling)
A = scale(A, center==1, scale==1);

# co-variance matrix 
mu = colSums(A)/N;
C = (t(A) %*% A)/(N-1) - (N/(N-1))*t(mu) %*% mu;


# compute eigen vectors and values
[evalues, evectors] = eigen(C);

Guión 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

Mejoras

SystemDS 2.0.0 es la primera versión importante con el nuevo nombre. Esta versión contiene una refactorización importante, algunas características importantes, una gran cantidad de mejoras y correcciones, y algunas características experimentales para respaldar mejor el ciclo de vida de la ciencia de datos de un extremo a otro. Además de eso, esta versión también elimina varias características que no están actualizadas y desactualizadas.

  • Nuevo mecanismo para builtinfunciones de DML (nivel de script) y 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 ML y depuración de modelos.
  • Se han implementado varios métodos para la limpieza de datos que incluyen múltiples imputaciones con imputación multivariante por ecuaciones encadenadas (MICE) y otras técnicas, SMOTE, una técnica de sobremuestreo para desequilibrio de clases, llenado de NA hacia adelante y hacia atrás, limpieza usando información de esquema y longitud, soporte para detección de valores atípicos utilizando la desviación estándar y el rango intercuartil, y el descubrimiento de dependencia funcional.
  • Un marco completo para el rastreo y la reutilización del linaje que incluye soporte para la deduplicación de bucles, reutilización total y parcial, reutilización asistida por el compilador, 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.).
  • Refactorice el paquete de compresión y agregue funcionalidades, incluida la cuantificación para compresión con pérdida, operaciones de celda binaria, multiplicación de matriz izquierda. [experimental]
  • Nuevos enlaces de Python con soporte para varios builtincorreos electrónicos, operaciones matriciales, tensores federados y trazas de linaje.
  • Implementación Cuda de operadores agregados acumulativos ( cumsum, cumprodetc.)
  • Nueva técnica de depuración de modelos con buscador de cortes.
  • Nuevo modelo de datos de tensor (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 en el rendimiento con parallel sort, gpu cum agg, append cbindetc.
  • Varias mejoras en el tiempo de ejecución y el compilador que incluyen reescrituras nuevas y mejoradas, creación de contexto Spark reducida, nuevo evalmarco, operaciones de lista, bibliotecas de kernel nativas actualizadas, por nombrar algunas.
  • Nuevo lector / escritor de datos para jsonmarcos y soporte sqlcomo fuente de datos.
  • Varias mejoras: documentación mejorada, mejores pruebas, ejecución / lanzamiento de scripts, empaquetado mejorado, contenedor Docker para systemds, soporte para expresiones lambda, corrección de errores.
  • Se eliminó el compilador MapReduce y el backend en tiempo de ejecución, el pydmlanalizador, el marco Java-UDF y el depurador a nivel de script.
  • En desuso ./scripts/algorithms, ya que esos algoritmos gradualmente serán parte de SystemDS builtins.

Contribuciones

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

Ver también

Referencias

enlaces externos