База данных, разработанная и оптимизированная для программ машинного обучения.

Решения машинного обучения в реальном мире редко сводятся только к построению и тестированию моделей. Управление и автоматизация жизненного цикла моделей машинного обучения от обучения до оптимизации - безусловно, самая сложная проблема для решения в решениях машинного обучения. Чтобы контролировать жизненный цикл модели, специалисты по обработке данных должны иметь возможность сохранять и запрашивать ее состояние в любом масштабе. Эта проблема может показаться тривиальной, пока вы не примете во внимание, что любая средняя модель глубокого обучения может включать сотни скрытых слоев и миллионы взаимосвязанных узлов;) Хранение и доступ к большим графам вычислений далеко не тривиально. В большинстве случаев группы по анализу данных тратят много времени, пытаясь адаптировать стандартные базы данных NOSQL к моделям машинного обучения, прежде чем прийти к не столь очевидному выводу: Решениям машинного обучения нужен новый тип базы данных .

MLDB - это база данных, созданная для эпохи машинного обучения. Платформа оптимизирована для хранения, преобразования и навигации по графу вычислений, который представляет структуру машинного обучения, такую ​​как глубокая нейронная сеть. Я знаю, о чем вы думаете 😉 Платформы облачного машинного обучения, такие как AWS SageMaker или Azure ML, уже включают модели персистентности для графов машинного обучения, так зачем нам другое решение? Что ж, оказывается, что существует довольно много требований к реальным решениям для машинного обучения, которые могут извлечь выгоду из реальной базы данных:

Введите MLDB

MLDB предоставляет собственную базу данных с открытым исходным кодом для хранения и запроса модели машинного обучения. Платформа была впервые инкубирована в Datacratic и недавно была приобретена компанией Elementai, специализирующейся на искусственном интеллекте, в качестве подтверждения актуальности механизма базы данных в современных проектах машинного обучения. MLDB доступен в различных формах, таких как облачная служба, виртуальная машина VirtualBox или экземпляр Docker, который можно развернуть на любой контейнерной платформе.

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

Файлы

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

Наборы данных

Набор данных MLDB представляет собой основную единицу данных, используемую процедурами и моделями машинного обучения. Структурно наборы данных представляют собой именованные наборы точек данных без схемы и только для добавления, которые содержатся в ячейках, которые находятся на пересечении строк и столбцы. Точки данных состоят из значения и отметки времени. Таким образом, каждая точка данных может быть представлена ​​как кортеж (строка, столбец, отметка времени, значение), а наборы данных можно рассматривать как разреженные 3-мерные матрицы. Можно создавать наборы данных и добавлять к ним данные через REST API MLDB, а также их можно загружать из файлов или сохранять в них с помощью процедур.

Процедуры

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

Функции

Функции MLDB абстрактные процедуры вычисления данных, используемые в процедурах. Функции - это именованные программы многократного использования, используемые для реализации потоковых вычислений, которые могут принимать входные значения и возвращать выходные значения. Обычно функции MLDB инкапсулируют выражения SQL, которые выражают конкретное вычисление.

Запросы

Одним из основных преимуществ MLDB является то, что он использует SQL как механизм для запроса данных, хранящихся в базе данных. Платформа поддерживает довольно полную грамматику на основе SQL, которая включает знакомые конструкции, такие как SELECT, WHERE, FROM, GROUP BY, ORDER BY и многие другие. Например, в MLDB мы можем использовать SQL-запрос для подготовки обучающего набора данных для модели классификации изображений:

mldb.query("SELECT * FROM images LIMIT 3000")

API и Pymldb

Все возможности MLDB доступны через простой REST API. Платформа также включает pymldb, библиотеку Python, которая абстрагирует возможности API в очень удобном синтаксисе. В следующем коде показано, как использовать pymldb для создания и запроса набора данных.

from pymldb import Connection
mldb = Connection("http://localhost")
mldb.put( "/v1/datasets/demo",      {"type":"sparse.mutable"})
mldb.post("/v1/datasets/demo/rows", {"rowName": "first", "columns":[["a",1,0],["b",2,0]]})
mldb.post("/v1/datasets/demo/rows", {"rowName": "second", "columns":[["a",3,0],["b",4,0]]})
mldb.post("/v1/datasets/demo/commit")
df = mldb.query("select * from demo")
print type(df)

Поддержка алгоритмов машинного обучения

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

Собираем все вместе

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

  1. Процесс начинается с файла, полного обучающих данных, который загружается в обучающий набор данных.
  2. Запускается процедура обучения для создания файла модели.
  3. Файл модели используется для параметризации функции оценки.
  4. Эта функция оценки сразу же доступна через конечную точку REST для оценки в реальном времени.
  5. Функция подсчета очков также доступна сразу через SQL-запрос.
  6. Процедура пакетной оценки использует SQL для применения функции оценки к набору данных без оценки в пакетном режиме, создавая набор данных с оценкой.

Заключение

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