Апач SystemDS
![]() | |
Разработчик(и) | Фонд программного обеспечения Apache , IBM |
---|---|
Первоначальный выпуск | 2 ноября 2015 г |
Стабильная версия | 3.0.0
/ 5 июля 2022 г |
Репозиторий | Репозиторий SystemDS |
Написано в | Java , Python , DML , C |
Операционная система | Linux , MacOS , Windows |
Тип | Машинное обучение , Глубокое обучение , Наука о данных |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | системные файлы |
Apache SystemDS (ранее Apache SystemML) — это система машинного обучения с открытым исходным кодом для сквозного жизненного цикла обработки данных.
Отличительными характеристиками SystemDS являются:
- Возможность настройки алгоритма с помощью R-подобных и Python-подобных языков.
- Несколько режимов выполнения, включая автономный, Spark Batch, Spark MLContext, Hadoop Batch и JMLC.
- Автоматическая оптимизация на основе данных и характеристик кластера для обеспечения эффективности и масштабируемости.
История [ править ]
SystemML была создана в 2010 году исследователями из Исследовательского центра IBM в Альмадене под руководством научного сотрудника IBM Шивакумара Вайтьянатана. Было замечено, что ученые, работающие с данными, пишут алгоритмы машинного обучения на таких языках, как R и Python, для небольших данных. Когда пришло время масштабировать большие данные, потребовался системный программист, который мог бы масштабировать алгоритм на таком языке, как Scala . Этот процесс обычно занимал дни или недели на итерацию, и при переводе алгоритмов для работы с большими данными возникали ошибки. SystemML стремится упростить этот процесс. Основная цель SystemML — автоматическое масштабирование алгоритма, написанного на R-подобном или Python-подобном языке, для работы с большими данными, генерируя один и тот же ответ без подверженного ошибкам многоитеративного подхода к переводу.
15 июня 2015 года на саммите Spark в Сан-Франциско Бет Смит, генеральный директор IBM Analytics, объявила, что IBM открыла исходный код SystemML в рамках основного обязательства IBM по Apache Spark и проектам, связанным со Spark. SystemML стал общедоступным на GitHub 27 августа 2015 г. и стал проектом инкубатора Apache 2 ноября 2015 г. 17 мая 2017 г. Совет Apache Software Foundation утвердил присвоение Apache SystemML статуса проекта высшего уровня Apache.
Ключевые технологии [ править ]
Ниже приведены некоторые технологии, встроенные в механизм SystemDS.
- Сжатая линейная алгебра для крупномасштабного машинного обучения
- Декларативный язык машинного обучения
Примеры [ править ]
Анализ компонентов главных
Следующий фрагмент кода [1] выполняет анализ главных компонентов входной матрицы , который возвращает и .
# 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);
Скрипт вызова [ править ]
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
Функции базы данных [ править ]
Алгоритм кластеризации DBSCAN с евклидовым расстоянием .
X = rand(rows=1780, cols=180, min=1, max=20)
[indices, model] = dbscan(X = X, eps = 2.5, minPts = 360)
Улучшения [ править ]
SystemDS 2.0.0 — первый крупный выпуск под новым названием. Этот выпуск содержит серьезный рефакторинг, несколько основных функций, большое количество улучшений и исправлений, а также некоторые экспериментальные функции для лучшей поддержки сквозного жизненного цикла обработки данных. Кроме того, в этом выпуске также удалено несколько устаревших и устаревших функций.
- Новый механизм для DML (уровень сценария)
builtin
функций, а также множество новых встроенных функций для предварительной обработки данных, включая методы очистки, увеличения и проектирования функций, новые алгоритмы машинного обучения и отладку моделей. - Было реализовано несколько методов очистки данных, включая множественное вменение с многомерным вменением с помощью цепных уравнений (MICE) и другие методы, SMOTE, метод передискретизации для дисбаланса классов, прямое и обратное заполнение NA, очистку с использованием информации о схеме и длине, поддержку обнаружения выбросов. использование стандартного отклонения и межквартильного диапазона, а также обнаружение функциональных зависимостей.
- Полная платформа для отслеживания происхождения и повторного использования, включая поддержку дедупликации циклов, полного и частичного повторного использования, повторного использования с помощью компилятора, а также несколько новых перезаписей для облегчения повторного использования.
- Новый интегрированный бэкэнд среды выполнения, включая поддержку объединенных матриц и кадров.
builtin
с (transform-encode
,decode
и т. д.). - Рефакторинг пакета сжатия и добавление функций, включая квантование для сжатия с потерями, операции с двоичными ячейками, умножение левой матрицы. [экспериментальный]
- Новые привязки Python с поддержкой нескольких
builtin
s, матричные операции, объединенные тензоры и трассировки происхождения. - Cuda реализация кумулятивных агрегатных операторов (
cumsum
,cumprod
и т. д.) - Новая техника отладки модели с поиском срезов.
- Новая тензорная модель данных (базовые тензоры разных типов значений, тензоры данных со схемой) [экспериментальный]
- Сценарии облачного развертывания для AWS и сценарии для настройки и запуска федеративных операций.
- Улучшение производительности с
parallel sort
,gpu cum agg
,append cbind
и т. д. - Различные улучшения компилятора и среды выполнения, включая новые и улучшенные перезаписи, сокращение создания контекста Spark, новые
eval
framework, операции со списками, обновленные собственные библиотеки ядра и многое другое. - Новое устройство чтения/записи данных для
json
рамки и поддержкаsql
в качестве источника данных. - Различные улучшения: улучшенная документация, лучшее тестирование, сценарии запуска/выпуска, улучшенная упаковка, контейнер Docker для systemds, поддержка лямбда-выражений, исправления ошибок.
- Удален компилятор MapReduce и серверная часть среды выполнения,
pydml
парсер, платформа Java-UDF, отладчик уровня скрипта. - Устарело
./scripts/algorithms
, поскольку эти алгоритмы постепенно станут частью SystemDSbuiltin
с.
Взносы [ править ]
Apache SystemDS приветствует вклад в кодирование, вопросы и ответы, создание сообщества или распространение информации. Руководство для участников доступно по адресу https://github.com/apache/systemds/blob/main/CONTRIBUTING.md.
См. также [ править ]
Ссылки [ править ]
- ^ Apache SystemDS , Apache Software Foundation, 24 февраля 2022 г. , получено 6 марта 2022 г.
- ^ СистемДС, Апач. «Примечания к выпуску SystemML 1.2.0» . systemds.apache.org . Проверено 26 февраля 2021 г.
Внешние ссылки [ править ]
- Веб-сайт Apache SystemML
- Исследования IBM — SystemML
- Вопросы и ответы с Шивом Вайтьянатаном, создателем SystemML и научным сотрудником IBM
- Универсальный переводчик больших данных и машинного обучения
- Презентация SystemML: декларативное машинное обучение в масштабе Фреда Рейсса
- SystemML: декларативное машинное обучение на MapReduce. Архивировано 10 марта 2016 г. на Wayback Machine.
- Стратегии гибридного распараллеливания для крупномасштабного машинного обучения в SystemML
- Оптимизатор SystemML: создание планов для крупномасштабных программ машинного обучения
- Система машинного обучения IBM SystemML становится проектом Apache Incubator
- IBM передает технологию машинного обучения сообществу открытого исходного кода Apache Spark
- IBM SystemML продвигается вперед как проект инкубатора Apache