Apache SystemDS - Apache SystemDS
Разработчики) | Фонд программного обеспечения Apache , IBM |
---|---|
Первый выпуск | 2 ноября 2015 г . |
Стабильный выпуск | 2.0.0 / 22 октября 2020 г .
|
Репозиторий | Репозиторий SystemDS |
Написано в | Java , Python , описательное машинное обучение, C |
Операционная система | Linux , macOS , Windows |
Тип | Машинное обучение , глубокое обучение , наука о данных |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | systemds |
Apache SystemDS (ранее Apache SystemML) - это гибкая система машинного обучения, которая автоматически масштабируется до кластеров Spark и Hadoop . Отличительные характеристики SystemDS:
- Возможность настройки алгоритма с помощью R-подобных и Python-подобных языков.
- Несколько режимов выполнения, включая автономный, Spark Batch, Spark MLContext, Hadoop Batch и JMLC.
- Автоматическая оптимизация на основе данных и характеристик кластера для обеспечения эффективности и масштабируемости.
История
SystemML был создан в 2010 году исследователями из исследовательского центра IBM Almaden во главе с сотрудником IBM Шивакумаром Вайтьянатаном. Было замечено, что специалисты по обработке данных будут писать алгоритмы машинного обучения на таких языках, как R и Python для небольших данных. Когда пришло время масштабировать большие данные, понадобился системный программист для масштабирования алгоритма на таком языке, как Scala . Этот процесс обычно занимал дни или недели на итерацию, и при переводе алгоритмов на работу с большими данными возникали ошибки. SystemML стремится упростить этот процесс. Основная цель SystemML - автоматическое масштабирование алгоритма, написанного на R-подобном или Python-подобном языке, для работы с большими данными, генерируя тот же ответ без подверженного ошибкам многоитеративного подхода к переводу.
15 июня 2015 года на Spark Summit в Сан-Франциско Бет Смит, генеральный менеджер IBM Analytics, объявила, что IBM открывает SystemML в рамках основного обязательства IBM по проектам, связанным с Apache Spark и Spark. SystemML стал общедоступным на GitHub 27 августа 2015 года и 2 ноября 2015 года стал проектом Apache Incubator . 17 мая 2017 года Совет Apache Software Foundation одобрил исключение Apache SystemML как проекта верхнего уровня Apache.
Ключевые технологии
Ниже приведены некоторые технологии, встроенные в движок SystemDS.
- Сжатая линейная алгебра для крупномасштабного машинного обучения
- Декларативный язык машинного обучения
Примеры
Следующий фрагмент кода выполняет анализ основных компонентов входной матрицы , который возвращает значения и .
# 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
Улучшения
SystemDS 2.0.0 - это первый крупный выпуск под новым названием. Этот выпуск содержит значительный рефакторинг, несколько основных функций, большое количество улучшений и исправлений, а также некоторые экспериментальные функции для лучшей поддержки непрерывного жизненного цикла науки о данных. В дополнение к этому, этот выпуск также удаляет несколько устаревших и устаревших функций.
- Новый механизм для
builtin
функций, основанных на DML (на уровне сценария) , и множество новых встроенных функций для предварительной обработки данных, включая очистку данных, расширение и методы разработки функций, новые алгоритмы машинного обучения и отладку модели. - Было реализовано несколько методов очистки данных, включая множественные вменения с многомерным вменением с помощью связанных уравнений (MICE) и другие методы, SMOTE, метод передискретизации для несбалансированности классов, прямое и обратное заполнение NA, очистка с использованием информации о схеме и длине, поддержка обнаружения выбросов с использованием стандартного отклонения и межквартильного диапазона, а также обнаружения функциональных зависимостей.
- Полная структура для отслеживания происхождения и повторного использования, включая поддержку дедупликации циклов, полного и частичного повторного использования, повторного использования с помощью компилятора, несколько новых перезаписей для облегчения повторного использования.
- Новый бэкэнд интегрированной среды выполнения, включая поддержку объединенных матриц и фреймов, федеративных
builtin
(transform-encode
иdecode
т. Д.). - Рефакторинг пакета сжатия и добавление функций, включая квантование для сжатия с потерями, операции с двоичными ячейками, умножение левой матрицы. [экспериментальный]
- Новые привязки Python с поддержкой нескольких
builtin
s, матричных операций, объединенных тензоров и трассировок происхождения. - Cuda реализация кумулятивных агрегатных операторов (
cumsum
иcumprod
т. Д.) - Новая техника отладки модели с помощью средства поиска срезов.
- Новая тензорная модель данных (базовые тензоры разных типов значений, тензоры данных со схемой) [экспериментальная]
- Скрипты облачного развертывания для AWS и скрипты для настройки и запуска федеративных операций.
- Улучшения производительности с помощью
parallel sort
,gpu cum agg
иappend cbind
т. Д. - Различные улучшения компилятора и среды выполнения, включая новые и улучшенные перезаписи, уменьшенное создание контекста Spark, новую
eval
структуру, операции со списком, обновленные собственные библиотеки ядра и многие другие. - Новый модуль чтения / записи данных для
json
фреймов и поддержкаsql
в качестве источника данных. - Прочие улучшения: улучшенная документация, улучшенное тестирование, сценарии запуска / выпуска, улучшенная упаковка, контейнер Docker для systemds, поддержка лямбда-выражений, исправления ошибок.
- Удалены компилятор MapReduce и серверная часть среды выполнения,
pydml
синтаксический анализатор, среда Java-UDF, отладчик уровня сценария. - Устарело
./scripts/algorithms
, поскольку эти алгоритмы постепенно станут частью SystemDSbuiltin
.
Взносы
SystemDS приветствует вклад в код, вопросы и ответы, создание сообщества или распространение информации. Руководство для участников доступно по адресу https://github.com/apache/systemds/blob/master/CONTRIBUTING.md.
Смотрите также
Рекомендации
Внешние ссылки
- Веб-сайт Apache SystemML
- IBM Research - SystemML
- Вопросы и ответы с Шивом Вайтьянатаном, создателем SystemML и сотрудником IBM
- Универсальный переводчик для больших данных и машинного обучения
- SystemML: декларативное машинное обучение в масштабе, презентация Фреда Рейсса
- SystemML: декларативное машинное обучение на MapReduce
- Стратегии гибридного распараллеливания для крупномасштабного машинного обучения в SystemML
- Оптимизатор SystemML: создание планов для крупномасштабных программ машинного обучения
- Система машинного обучения IBM SystemML становится проектом Apache Incubator
- IBM передает технологию машинного обучения сообществу разработчиков открытого исходного кода Apache Spark
- IBM SystemML продвигается вперед как проект инкубатора Apache