Машинное обучение с Greenplum: обзор ML-расширений

машинное обучение Greenplum и PostgreSQL, расширения Greenplum и PostgreSQL, ИИ и векторные СУБД, обучение Data Science примеры курсы обучение, NoSQL векторные базы данных примеры курсы обучение, администратор дата-инженер архитектор больших данных примеры курсы обучение, Школа Больших Данных Учебный Центр Коммерсант

Как использовать Greenplum в проектах машинного обучения: знакомимся с расширением PostgresML и модулем pgvector. Возможности и ограничения плагинов, превращающих MPP-СУБД в полноценный MLOps-инструмент.

Как превратить Greenplum в векторную базу данных с расширением pgvector

Будучи вариацией PostgreSQL с механизмами массово-параллельной загрузки, Greenplum отлично справляется с огромным объемом данных. Однако, к хранилищам данных, используемым в ML-проектах, предъявляются особые требования. В частности, современные ИИ-решения активно используют векторные СУБД для реализации встраиваний, о чем мы подробно рассказывали здесь.

Встраивание в ML представляет собой сложный объект, преобразованный в вектор — список чисел, который отражает семантические и синтаксические отношения данных. Обычно для работы со выстраиваниями используются специализированные векторные СУБД (Pinecone, Milvus, Weaviate, Enterprise-редакция key-value базы Redis, SingleStore, Relevance AI, Qdrant, Vespa и др.), однако, Greenplum тоже можно использовать для этого, если дополнить ее возможности модулем pgvector.

Модуль pgvector предоставляет возможности поиска векторного сходства, которые позволяют искать, хранить и запрашивать встраивания в больших масштабах. Этот модуль для Greenplum эквивалентен версии модуля pgvector 0.5.0, используемого с PostgreSQL. Модуль pgvector предоставляет  тип данных vector и методы доступа к индексу ivfflat и hnsw. Тип, методы, а также вспомогательные функции и операторы, предоставляемые модулем, позволяют выполнять точный и приблизительный поиск соседей и определять L2, внутренний продукт и косинусное расстояние между вложениями. Также можно использовать модуль для хранения и запроса вложений.

Тип данных vector представляет собой n-мерную координату. Каждый vector занимает 4-х кратное измерение (4*dimensions) и 8 байт памяти. Каждый элемент представляет собой число одинарной точности с плавающей запятой аналогично типу real в Greenplum, и все элементы должны быть конечными (без NaN, Infinity или -Infinity). Векторы могут иметь до 16 000 измерений.

Модуль pgvector для Greenplum имеет следующие ограничения:

  • оптимизатор запросов GPORCA не поддерживает методы доступа к индексу ivfflat и hnsw. Запросы к таблицам, использующим эти типы индексов, возвращаются к планировщику на основе PostgreSQL.
  • AO-таблицы, оптимизированные для добавления, не могут использовать векторные индексы;
  • Размер индекса (вектора) может быть больше размера таблицы.

Модуль pgvector устанавливается при установке базы данных Greenplum. Но, прежде чем использовать его типы данных и метод доступа к индексу, надо зарегистрировать расширение vector в каждой базе данных:

CREATE EXTENSION vector;

MLOps с MPP-СУБД: расширение PostgresML

Продолжая разговор про ИИ и машинное обучение при использовании Greenplum также следует сказать про PostgresML — ML-расширение для PostgreSQL, которое позволяет выполнять обучение и вывод текстовых и табличных данных с помощью SQL-запросов. С помощью PostgresML можно интегрировать ML-модели в базу данных VMware Greenplum и использовать возможности передовых алгоритмов для эффективной обработки данных. Модуль postgresml предоставляет функции PostgresML для использования десятков тысяч предварительно обученных ИИ-моделей с открытым исходным кодом, представленные платформой обработки данных Hugging Face AI.

Можно сказать, что PostgresML превращает PostgreSQL и Greenplum в комплексную MLOps-платформу, интегрируя в обработку данных ключевые компоненты рабочего процесса машинного обучения. Без привлечения внешних систем, т.е. не перемещая данные за пределы PostgreSQL и Greenplum, PostgresML позволяет этим СУБД работать как хранилище фичей и/или моделей, а также играть роль механизма машинного обучения и службы вывода. Такая консолидация упрощает создание и развертывание высокопроизводительных ИИ-приложений, работающих в режиме реального времени. PostgresML поддерживает контролируемые и неконтролируемые алгоритмы, такие как регрессия, кластеризация, глубокие нейронные сети и пр.

Можно строить ML-модели, используя SQL на данных, хранящихся в PostgreSQL и Greenplum. Модели сохраняются обратно в исходную базу данных для последующего вывода с малой задержкой. PostgresML также можно применять для работы с большими языковыми моделями, такими как GPT-3 и другими генеративными нейросетями. В частности, всего с помощью нескольких строк SQL-запросов можно использовать современные NLP-технологии для семантического поиска, анализа текста, извлечения информации, обобщения документов, перевода текста и прочих задач обработки естественного языка. PostgresML имеет открытый исходный код, но также предлагается как полностью управляемый облачный сервис. В дополнение к API SQL он предоставляет пакеты SDK для Javascript, Python и Rust для быстрого создания векторного поиска, чат-ботов и других ML-приложений.

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

# Download the dataset from the internet and create table for it
SELECT pgml.load_dataset('tweet_eval', 'sentiment'); 

# Generate an embedding for the text 
SELECT pgml.embed('distilbert-base-uncased', 'Star Wars christmas special is on Disney')::vector AS embedding; 
--------------------------------------------------------------------------------------------- 

SELECT text, pgml.embed('distilbert-base-uncased', text) 
FROM pgml.tweet_eval limit 5; 

--------------------------------------------------------------------------------------------- 
CREATE TABLE tweet_embeddings AS 
SELECT text, pgml.embed('distilbert-base-uncased', text) AS embedding 
FROM pgml.tweet_eval limit 5; 

# Download and run pre-trained models
SELECT pgml.transform( 
    'translation_en_to_fr', 
    inputs => ARRAY[ 
        'Welcome to the future!', 
        'Where have you been all this time?' 
    ] 
) AS french;

Для горизонтального масштабирования PostgresML использует PgCat, усовершенствованный прокси-сервер PostgreSQL и балансировщик нагрузки. PgCat обеспечивает сегментирование, балансировку нагрузки, аварийное переключение и зеркалирование для достижения чрезвычайно высокой пропускной способности и низкой задержки. Сохраняя весь рабочий процесс машинного обучения в Postgres и Greenplum, PostgresML позволяет избежать дорогостоящих сетевых вызовов между разрозненными системами, обрабатывая миллионы запросов в секунду. Репликация PgCat и Postgres обеспечивает плавное масштабирование при сохранении целостности транзакций.

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

CREATE EXTENSION pgml;

Перед регистрацией модуля необходимо установить пакет Data Science для Python 3.9, добавить библиотеку pgml в набор библиотек, загружаемых при запуске сервером VMware Greenplum, и настроить виртуальную среду Python.

В заключение отметим, что расширение postgresml пока поддерживает не все функции PostgresML, а лишь часть из них:

  • load_dataset() – загружает набор данных в таблицы в VMware Greenplum с помощью INSERTкоманды SQL;
  • embed() – создает внедрение для набора данных;
  • transform() – применяет предварительно обученный преобразователь для обработки данных. 

Освойте администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/ref_guide-modules-postgresml.html
  2. https://postgresml.org/docs/guides/
  3. https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/ref_guide-modules-pgvector-pgvector.html
Поиск по сайту