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

Что такое MindsDB

MindsDB — это инструмент автоматизированного машинного обучения (AutoML) с открытым исходным кодом, который упрощает внедрение и использование моделей искусственного интеллекта. Ориентируясь на расширение возможностей пользователей, практически не имеющих опыта в области искусственного интеллекта, MindsDB использует автоматический анализ данных и алгоритмы машинного обучения для создания прогнозных моделей.

Как это делается?

Пользователи могут создавать модели и использовать их с помощью языка SQL аналогично созданию таблиц. Например, создать модель для прогнозирования цен на аренду жилья так же просто, как использовать код SQL, представленный в кратком руководстве MindsDB:

CREATE MODEL mindsdb.home_rentals_model
FROM example_data
  (SELECT * FROM demo_data.home_rentals)
PREDICT rental_price;

Использовать эту модель так же просто, как отправить запрос SELECT:

SELECT rental_price
FROM mindsdb.home_rentals_model
WHERE number_of_bathrooms = 2
AND sqft = 1000;

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

SELECT m.rental_price, m.rental_price_explain
FROM mindsdb.home_rentals_model AS m
JOIN example_data.demo_data.home_rentals_to_predict AS d

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

Таблица ИИ

Ядро системы MindsDB лежит в таблицах ИИ, которые служат таблицами виртуальной базы данных, представляющими модели ИИ. Эта уникальная функция позволяет пользователям беспрепятственно взаимодействовать с моделями, как если бы они были обычными таблицами, будь то индивидуальные прогнозы или пакетная обработка (как было продемонстрировано ранее с помощью JOIN). Ранее я сталкивался с подобной концепцией, просматривая BigQuery ML от Google Cloud. Однако между BigQuery ML и MindsDB есть два ключевых различия:

  1. BigQuery ML ограничен работой только с данными, хранящимися в BigQuery, включая данные из внешних источников, подключенных к BigQuery, таких как файлы Google Cloud Storage (хранилище объектов, аналогичное S3) и Google Sheets. Напротив, MindsDB спроектирован так, чтобы быть независимым от облачных технологий, что позволяет ему работать с базами данных различных поставщиков. Такая гибкость делает MindsDB идеальным выбором для сценариев, где приоритетом является избежание блокировки поставщика.
  2. BigQuery использует комбинацию слотов BigQuery и дополнительных вычислительных мощностей для обучения моделей и прогнозирования, обеспечивая масштабирование по мере необходимости. MindsDB управляет масштабированием невидимым для пользователей способом, что упрощает задачу, но оставляет у пользователей некоторые основные вопросы о процессе масштабирования. В отдельном разделе ниже подробно обсуждается масштабирование.

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

Обработчики данных

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

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

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

MindsDB предлагает поддержку широкого спектра механизмов машинного обучения, которые можно использовать для обучения и прогнозирования данных. В их список входят механизмы AutoML, LLM и Time Series. Кроме того, пользователи имеют возможность использовать свою собственную модель, развернув ее в MLFlow, Ray Serve или BYOM и подключив ее к MindsDB.

Рассмотрение производства

При рассмотрении системы машинного обучения для производства и крупномасштабного моделирования важно уделять внимание различным областям.

Управляемый или самостоятельный хостинг?

MindsDB предлагает два варианта работы: управляемый сервис и самостоятельное размещение. Я обсужу оба этих варианта в следующих разделах.

Монтаж

Для варианта управляемого обслуживания это так же просто, как создать учетную запись у любого поставщика услуг. Единственное требование — предоставить сведения о базе данных и убедиться, что ваша база данных доступна для серверов MindsDB.

Что касается самостоятельного варианта размещения, я нашел документацию о том, как установить MindsDB на любой компьютер, будь то локальный или облачный (AWS и GCP). Опция Docker не работала на моем Mac M1, но опция Python работала хорошо. Также есть страница со ссылками на статьи об установке MindsDB на другие платформы.

Масштабирование

При оценке системы машинного обучения масштабирование является серьезной проблемой. Эффективное управление масштабируемостью обеспечивает оптимальное время отклика для пользователей и при этом является экономически эффективным. Обычно при рассмотрении масштабируемости учитываются следующие факторы:

  1. В реальных случаях использования разные модели требуют разных ресурсов. Например, некоторым моделям может потребоваться 4 ядра и 16 ГБ ОЗУ, а другим — 64 ядра и 256 ГБ ОЗУ. Некоторые модели также могут использовать ускорение графического процессора.
  2. Выделение отдельных ресурсов для обучения и прогнозирования. Чтобы гарантировать низкую задержку во время прогнозирования, желательно выделить отдельные ресурсы для прогнозирования. Таким образом, даже если система занимается обучением больших моделей, процесс прогнозирования может оставаться быстрым и отзывчивым.
  3. Экономическая эффективность — раскручивайте машины только при необходимости. Например, когда делается запрос на обучение, выделенные машины должны быть запущены для выполнения запроса, а затем отключены после завершения задачи. Такой подход гарантирует, что машины будут активны только тогда, когда они действительно необходимы, что сводит к минимуму ненужные затраты.

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

Независимо от того, находитесь ли вы в своем частном облаке или используете управляемый сервис MindsDB, MindsDB позволяет вам эффективно обрабатывать крупномасштабные рабочие нагрузки AI/ML. MindsDB может масштабироваться в соответствии с требованиями вашего варианта использования, обеспечивая оптимальную производительность и скорость реагирования.

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

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

API

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

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

Документация по различным параметрам API превосходна, и кажется, что работать с ними очень просто.

Прогнозы – это не конец пути

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

Системы с низким кодом

MindsDB — это система с низким уровнем кода, которая упрощает процесс создания и использования моделей. Однако недостатком сокрытия сложности является потенциальная ограниченная гибкость. Хотя пользователи имеют возможность указывать параметры использования модели, они не могут напрямую влиять на преобразование данных до их приема в модель. В таких случаях становится необходимым полагаться на систему для принятия соответствующих решений от имени пользователей. Это поднимает вопросы о практичности систем low-code в реальных сценариях, где задействованы высокие финансовые последствия.

Заключение

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

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