ML Grid — библиотека машинного обучения в Apache Ignite

в 14:37, , рубрики: Apache Ignite, java, Блог компании GridGain, машинное обучение

Возможности новой библиотеки машинного обучения Apache ML Grid

В релиз Apache Ignite 2.0 вошла бета-версия библиотеки машинного обучения Apache Ignite Machine Learning Grid (ML Grid), основанная на высокооптимизированном и масштабируемом API Apache Ignite Memory-Centric Platform.

как работает машинное обучение

Источник: xkcd

О том, на что способна новая библиотека и как с ней работать, наш рассказ под катом.

В релизе 2.0 библиотека включает в себя, в основном, базовую функциональность, такую как локальные и распределенные операции векторной и матричной алгебры с использованием как обычных, так и разреженных структур данных. Сами данные могут храниться в обычной памяти JVM, в off-heap памяти и в распределенном кэше Ignite.

Тем, кто уже использовал другие популярные библиотеки машинного обучения, такие как Apache Mahout или Colt, многие вещи будут знакомыми. Это не случайно — одной из целей при проектировании Apache Ignite ML Grid API была простота использования для тех, кто уже привык к типичным библиотекам машинного обучения.

Многие пользователи уже применяли Ignite для ускорения матричных и векторных операций ещё до появления ML Grid. Ignite позволяет совместное использование Compute- и Data-гридов для высокоэффективной обработки разреженных наборов данных. А с появлением ML Grid делать это будет намного легче.

В следующих релизах планируется дальнейшее расширение функциональности библиотеки, в частности, включение распределенных версий популярных алгоритмов, используемых при решении задач машинного обучения.

Основываясь на алгоритмах распределенной алгебры в релизе 2.0, сообщество Apache Ignite планирует добавить в библиотеку алгоритмы классификации, регрессионного анализа, кластерного анализа по k-средним, деревья принятия решений и др. Многое из этого включено в ближайший следующий релиз 2.1 (в частности, линейная регрессия и k-средние).

В более отдаленных планах обсуждается разработка Python- и R-библиотеки в составе стека Ignite ML.

Возможности, предоставляемые новым модулем, пока что довольно скромные: как уже говорилось, это бета-версия, имеющая, в основном, базовую функциональность. А если вы хотите научиться использовать новый API уже сейчас, не дожидаясь следующих релизов, то для вас — вторая часть нашего поста, под спойлером…

Как работать с ML Grid в Ignite Apache 2.0

Как работать с ML Grid в Ignite Apache 2.0

Наверное, самый быстрый способ начать знакомство и работу с ML Grid — это собрать, прогнать и изучить результаты выполнения и кода примеров, включённых в релиз. Примеры ML можно найти в директории examples дистрибутива Apache Ignite. Можно также получить код примеров по этой ссылке в Github.

Пошаговая инструкция для начала работы с примерами:

  1. Установите Java версии не ниже 8.
  2. Скачайте Apache Ignite 2.0 или более позднюю версию.
  3. Откройте проект examples в IDE — например, IntelliJ IDEA или Eclipse.
  4. Активируйте профиль Maven ml в настройках проекта (в Ignite 2.0 он по умолчанию выключен):

    скриншот — настроить профиль Мавен

  5. Откройте в IDE директорию src/main/ml и запустите примеры ML Grid, как объяснено ниже.
    1. Найдите и запустите интересующий вас пример
      (на скриншоте — SparseDistributedMatrixExample):

      скриншот — найти и запустить пример

    2. Наблюдайте за выполнением примера и за выводом данных в консоль:

      скриншот — вывод примера в консоль

    3. При выполнении примера TracerExample обратите внимание, что будет выводиться в браузере:

      скриншот — вывод примера Tracer в браузере

    4. По желанию, отредактируйте код примера и запускайте его снова, чтобы изучить результат изменений:

      скриншот — исходный код примера

      Скажем, если код примера TracerExample поменять на такой:

      // Code below is based on unit tests in ml module, namely
      // on TracerTest#testHtmlMatrixTracer
      Matrix mtx2 = new DenseLocalOnHeapMatrix(100, 100);
      double MAX = (double)(mtx2.rowSize() * mtx2.columnSize());
      mtx2.assign((x, y) -> (double)(x * y) / MAX);
      Tracer.showHtml(mtx2);

      то при его выполнении будет более эффектный вывод в браузере:

      скриншот — вывод в браузере модифицированного примера

      Так можно получить более предметное представление о том, как в Ignite ML реализованы методы матричной алгебры.

      В этом примере сперва создается матрица размером 100 на 100. Затем её элементы заполняются величинами, пропорциональными произведению их индексов по вертикали и горизонтали. И, наконец, при помощи Tracer API матрица визуализируется в HTML.

Примеры ML Grid не требуют никакой специальной конфигурации. Всех их можно просто запускать, прогонять и останавливать, а результат будет выводиться в консоль автоматически, без какого-либо вмешательства пользователя. В дополнение к сказанному, при выполнении примера Tracer API запускается браузер, в котором дополнительно выводится результирующий HTML.

Также в javadocs вы можете найти документацию об использовании классов и методов ML Grid.

Сборка из исходного кода

Jar-сборка последней версии Apache Ignite ML Grid доступна в репозитории Maven. Можно также самостоятельно собрать библиотеку из исходного кода:

  1. Загрузите версию последнего релиза Apache Ignite с исходным кодом.
  2. Если нужно, очистите локальный репозиторий Maven, чтобы исключить влияние предыдущих сборок.
  3. Удостоверьтесь, что у вас версия Java не ниже 8.
  4. Соберите и инсталлируйте Apache Ignite Memory-Centric Platform из корневой директории проекта:
    mvn clean install -DskipTests -Dmaven.javadoc.skip=true -P java8
  5. Соберите и инсталлируйте ML Grid из корневой директории проекта:
    mvn install -Pml -DskipTests -U -pl modules/ml -am
  6. Найдите jar-сборку ML Grid в локальном репозитории Maven:
    {user_dir}/.m2/repository/org/apache/ignite/ignite-ml/{ignite-version}/ignite-ml-{ignite-version}.jar

  7. Если вам нужно собрать примеры ML Grid из исходного кода, выполните следующие команды из корневой директории проекта:
    cd examples
    mvn clean package -DskipTests -Pml

При необходимости можно обратиться к дополнительной документации в файлах DEVNOTES.txt в корневой директории проекта и README в директории ML-компонента ignite-ml.

Автор: oignatenko

Источник

Поделиться

* - обязательные к заполнению поля