Apache SystemDS - Apache SystemDS
Desarrollador (es) | Fundación de software Apache , IBM |
---|---|
Versión inicial | 2 de noviembre de 2015 |
Lanzamiento estable | 2.0.0 / 22 de octubre de 2020
|
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 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:
- Personalización de algoritmos a través de lenguajes similares a R y Python.
- Múltiples modos de ejecución, incluidos Standalone, Spark Batch, Spark MLContext, Hadoop Batch y JMLC.
- 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.
- Álgebra lineal comprimida para el aprendizaje automático a gran escala
- Lenguaje declarativo de aprendizaje automático
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
builtin
funciones 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,
builtin
s federados (transform-encode
,decode
etc.). - 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
builtin
correos electrónicos, operaciones matriciales, tensores federados y trazas de linaje. - Implementación Cuda de operadores agregados acumulativos (
cumsum
,cumprod
etc.) - 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 cbind
etc. - Varias mejoras en el tiempo de ejecución y el compilador que incluyen reescrituras nuevas y mejoradas, creación de contexto Spark reducida, nuevo
eval
marco, operaciones de lista, bibliotecas de kernel nativas actualizadas, por nombrar algunas. - Nuevo lector / escritor de datos para
json
marcos y soportesql
como 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
pydml
analizador, el marco Java-UDF y el depurador a nivel de script. - En desuso
./scripts/algorithms
, ya que esos algoritmos gradualmente serán parte de SystemDSbuiltin
s.
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
- Sitio web de Apache SystemML
- Investigación de IBM - SystemML
- Preguntas y respuestas con Shiv Vaithyanathan, creador de SystemML y miembro de IBM
- Un traductor universal para Big Data y Machine Learning
- Presentación de SystemML: Declarative Machine Learning at Scale por Fred Reiss
- SystemML: aprendizaje automático declarativo en MapReduce
- 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 Apache Incubator
- IBM dona tecnología de aprendizaje automático a la comunidad de código abierto de Apache Spark
- SystemML de IBM avanza como proyecto de incubadora de Apache