Apache SystemDS (ранее Apache SystemML) — это система машинного обучения с открытым исходным кодом для сквозного жизненного цикла науки о данных.
Отличительные характеристики SystemDS:
SystemML был создан в 2010 году исследователями из исследовательского центра IBM Almaden под руководством сотрудника IBM Шивакумара Вайтьянатана. Было замечено, что специалисты по данным пишут алгоритмы машинного обучения на таких языках, как R и Python, для небольших данных. Когда наступало время масштабирования для больших данных, требовался системный программист для масштабирования алгоритма на таком языке, как Scala . Этот процесс обычно занимал дни или недели на итерацию, и при переводе алгоритмов для работы с большими данными возникали ошибки. SystemML стремится упростить этот процесс. Основной целью SystemML является автоматическое масштабирование алгоритма, написанного на языке, похожем на R или Python, для работы с большими данными, генерируя тот же ответ без подверженного ошибкам многоитеративного подхода к переводу.
15 июня 2015 года на саммите Spark в Сан-Франциско Бет Смит, генеральный менеджер IBM Analytics, объявила, что IBM открывает исходный код SystemML в рамках основных обязательств IBM по Apache Spark и связанным со Spark проектам. SystemML стал общедоступным на GitHub 27 августа 2015 года и стал проектом Apache Incubator 2 ноября 2015 года. 17 мая 2017 года совет Apache Software Foundation одобрил выпуск Apache SystemML в качестве проекта Apache Top Level Project.
Ниже приведены некоторые технологии, встроенные в движок SystemDS.
Следующий фрагмент кода [1] выполняет анализ главных компонентов входной матрицы , который возвращает и .
# PCA.dml# Ссылка: https://github.com/apache/systemds/blob/master/scripts/algorithms/PCA.dml#L61N = nrow ( A ); D = ncol ( A ); # выполнить z-оценку (центрирование и масштабирование)A = масштаб ( A , центр == 1 , масштаб == 1 ); # матрица ковариацииmu = colSums ( A ) / N ; C = ( t ( A ) %*% A ) / ( N -1 ) - ( N / ( N -1 )) * t ( mu ) %*% mu ; # вычислить собственные векторы и значения[ значения , эвекторы ] = собственные ( C );
spark-submit SystemDS.jar -f PCA.dml -nvargs ВХОД=КАТАЛОГ_ВХОДА/pca-1000x1000 \ ВЫХОД=КАТАЛОГ_ВХОДА/pca-1000x1000-model ДАННЫЕ_ПРОЕКТА=1 ЦЕНТР=1 МАСШТАБ=1
Алгоритм кластеризации DBSCAN с евклидовым расстоянием .
X = rand ( строки = 1780 , столбцы = 180 , мин = 1 , макс = 20 ) [ индексы , модель ] = dbscan ( X = X , eps = 2.5 , minPts = 360 )
SystemDS 2.0.0 — первый крупный релиз под новым названием. Этот релиз содержит крупный рефакторинг, несколько крупных функций, большое количество улучшений и исправлений, а также несколько экспериментальных функций для лучшей поддержки сквозного жизненного цикла науки о данных. Кроме того, этот релиз также удаляет несколько функций, которые не являются актуальными и устаревшими.
builtin
и множество новых встроенных функций для предварительной обработки данных, включая методы очистки данных, дополнения и проектирования признаков, новые алгоритмы машинного обучения и отладки моделей.builtin
s ( transform-encode
и decode
т. д.).builtin
s, матричных операций, федеративных тензоров и трассировок родословных.cumsum
и cumprod
т.д.)parallel sort
, gpu cum agg
, append cbind
и т.д.eval
фреймворк, операции со списками, обновленные собственные библиотеки ядра и многое другое.json
фреймов и поддержка sql
в качестве источника данных.pydml
парсер, фреймворк Java-UDF, отладчик уровня скрипта../scripts/algorithms
, поскольку эти алгоритмы постепенно станут частью SystemDS builtin
.[2]
Apache SystemDS приветствует вклад в виде кода, вопросов и ответов, создания сообщества или распространения информации. Руководство для участников доступно по адресу https://github.com/apache/systemds/blob/main/CONTRIBUTING.md