Apache SystemML

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 01:41, 2 октября 2018.
Apache SystemML
SystemML-Logo-Black.png
Создатели: Shivakumar Vaithyanathan
Разработчики: Apache Software Foundation, IBM
Выпущена: 02.11.2015
Операционная система: Linux, macOS, Windows
Локализация: Java
Лицензия: Apache License 2.0
Веб-сайт systemml.apache.org

SystemML - это гибкая, масштабируемая система машинного обучения. Отличительными характеристиками SystemML являются:

  • Алгоритмическая настраиваемость через R-подобные и Python-подобные языки.
  • Несколько режимов выполнения, включая Apache Spark MLContext API, Spark Batch, Hadoop Batch, Standalone и JMLC.
  • Автоматическая оптимизация на основе данных и характеристик кластера для обеспечения эффективности и масштабируемости.
  • Последняя версия SystemML поддерживает: Java 8+, Scala 2.11+, Python 2.7 / 3.5 +, Hadoop 2.6+ и Spark 2.1+.

Алгоритмы ML в SystemML указаны на языке высокоуровневого декларативного машинного обучения (DML). Алгоритмы могут быть выражены либо в синтаксисе R-типа, либо в синтаксисе типа Python. DML включает примитивы линейной алгебры, статистические функции и дополнительные конструкции. Этот высокоуровневый язык значительно повышает производительность ученых - исследователей данных, поскольку он обеспечивает полную гибкость в выражении пользовательской аналитики и независимость данных от базовых форматов ввода и представления физических данных. Алгоритмы, заданные в DML, динамически компилируются и оптимизируются на основе данных и характеристик кластера с использованием методов оптимизации на основе правил и затрат. Оптимизатор автоматически генерирует гибридные планы исполнения во время выполнения, начиная с внутриузлового, одноузлового исполнения и распределенных вычислений на Spark или Hadoop. Это обеспечивает как эффективность, так и масштабируемость. Автоматическая оптимизация уменьшает или устраняет необходимость ручной настройки распределенных планов выполнения во время выполнения и системных конфигураций.[Источник 1]

Режимы выполнения

Вычисления SystemML могут выполняться в различных режимах. Начнем с того, что SystemML может работать в автономном режиме на одной машине, что позволяет ученым разрабатывать алгоритмы локально без необходимости распределенного кластера. Для масштабирования алгоритмы также могут быть распределены по кластеру с использованием Spark или Hadoop. Такая гибкость позволяет использовать существующие ресурсы и опыт организации. Кроме того, SystemML имеет API-интерфейс Spark MLContext, который позволяет осуществлять программное взаимодействие через Scala, Python и Java. SystemML также имеет встроенный API для оценки моделей.

ML-алгоритмы

SystemML содержит набор примеров уровня производства, которые можно сгруппировать по шести широким категориям: описательная статистика, классификация, кластеризация, регрессия, матричная факторизация и анализ выживания. Подробное описание этих алгоритмов можно найти в Справочнике алгоритмов SystemML. Цель этих предоставленных алгоритмов - служить примерами уровня производства, которые могут быть модифицированы или использованы в качестве примера для нового пользовательского алгоритма.

Поддерживаемые алгоритмы

  • Описательной статистики:
  1. Единая статистика;
  2. Бивариантная статистика;
  3. Стратифицированная бивариантная статистика.
  • Классификации:
  1. Многолинейная логистическая регрессия;
  2. Методы опорных векторов:
    1. Векторные машины поддержки двоичного класса;
    2. Многоуровневая поддержка векторных машин;
  3. Наивный байесовский классификатор;
  4. Деревья принятия решений;
  5. Лесов деревьев принятия решений;
  • Кластеризации:
  1. Метод k-средних;
  • Регрессии:
  1. Линейная регрессия;
  2. Постепенная линейная регрессия;
  3. Обобщенные линейные модели;
  4. Пошаговая обобщенная линейная регрессия;
  5. Регрессионный подсчет и прогноз;
  • Матричной факторизации:
  1. Анализ главных компонентов;
  2. Завершение матрицы через чередование;
  • Анализа выживаемости:
  1. Анализ выживаемости Каплан-Мейер;
  2. Модель регрессии пропорциональной опасности Кокса.

[Источник 2]

Загрузка и установка

Прежде чем приступать к работе с SystemML, убедитесь, что ваша среда настроена и готова к работе.

Установите Java (требуется Java 8) и Apache Spark Если у вас уже установлена Apache Spark, вы можете пропустить этот шаг.

Для Linux

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
brew tap caskroom/cask
brew install Caskroom/cask/java
brew tap homebrew/versions
brew install apache-spark16

Для OSX

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap caskroom/cask
brew install Caskroom/cask/java
brew tap homebrew/versions
brew install apache-spark16

Установка SystemML

Чтобы установить выпущенный SystemML, используйте следующие команды:[Источник 3]

Для Python 2

pip install systemml

Для Python 3

pip3 install systemml

Если вы хотите опробовать версию для самого передового технологического развития, используйте следующие команды:

Для Python 2

git checkout https://github.com/apache/systemml.git
cd systemml
mvn clean package -P distribution
pip install target/systemml-1.0.0-SNAPSHOT-python.tar.gz

Для Python 3

git checkout https://github.com/apache/systemml.git
cd systemml
mvn clean package -P distribution
pip3 install target/systemml-1.0.0-SNAPSHOT-python.tar.gz

Удалить SystemML

Чтобы удалить SystemML, используйте следующую команду:

Для Python 2

pip uninstall systemml

Для Python 3

pip3 uninstall systemml

Запустить оболочку Pyspark

Для Python 2

pyspark

Для Python 3

PYSPARK_PYTHON=python3 pyspark


Источники

  1. Apache SystemML // GitHub. [2015-2017]. URL: https://github.com/pentoo/pentoo-overlay (дата обращения: 10.01.2018)
  2. SystemML Algorithms Reference // Apache SystemML URL: http://apache.github.io/systemml/algorithms-reference (Дата обращения: 05.01.2018)
  3. Beginner's Guide for Python Users // Apache SystemML. [2015-2017]. URL: http://apache.github.io/systemml/beginners-guide-python (дата обращения: 10.01.2018)