Skip to main content

MLflow plugin for Greenplum database support

Project description

MLflow Greenplum Plugin

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

Описание

Этот плагин решает проблему работы MLflow с Greenplum, где стандартные миграции PostgreSQL могут не работать корректно. Вместо выполнения пошаговых миграций, плагин:

  1. Эмулирует миграции - создает записи о выполненных миграциях в таблице alembic_version
  2. Создает финальные таблицы - сразу создает таблицы в их итоговом виде, минуя промежуточные миграции
  3. Поддерживает Greenplum - использует специфические для Greenplum функции и ограничения
  4. Совместимость с PostgreSQL - работает как с Greenplum, так и с обычной PostgreSQL

Установка

pip install -e .

Или установите из репозитория:

pip install git+https://github.com/yourusername/mlflow-greenplum-plugin.git

Конфигурация

Настройте MLflow для использования Greenplum:

import mlflow
mlflow.set_tracking_uri("greenplum://user:password@host:port/database")

Или запустите MLflow сервер:

mlflow server --backend-store-uri "greenplum://gpadmin:gpadmin@localhost:5432/mlflow_ai?schema=public" --default-artifact-root ./mlruns --host 127.0.0.1 --port 5000

Использование

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

Пример базового использования:

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier

# Настройка подключения к Greenplum
mlflow.set_tracking_uri("greenplum://gpadmin:gpadmin@localhost:5432/mlflow_db?options=-csearch_path%3Dmlflow_schema")

# Создание эксперимента
experiment_id = mlflow.create_experiment("my_experiment")

# Запуск эксперимента
with mlflow.start_run(experiment_id=experiment_id):
    # Ваш код машинного обучения
    model = RandomForestClassifier()
    # ... обучение модели ...
    
    # Логирование параметров, метрик и модели
    mlflow.log_param("n_estimators", 100)
    mlflow.log_metric("accuracy", 0.95)
    mlflow.sklearn.log_model(model, "model")

Особенности реализации

Архитектура плагина:

  • GreenplumStore - кастомный tracking store для работы с Greenplum
  • GreenplumMigrationManager - управление миграциями (эмуляция)
  • create_greenplum_tables - создание таблиц в финальном виде
  • Утилиты - вспомогательные функции для работы с Greenplum

Ключевые особенности:

  • Патчинг функций MLflow - перехватывает процесс инициализации и верификации схемы
  • Эмуляция миграций - вместо реального выполнения миграций создает записи в alembic_version
  • Оптимизация для Greenplum - поддержка распределенных таблиц и оптимизация запросов
  • Совместимость - работает с pg8000 драйвером для избежания проблем с psycopg2 на Windows

Особенности Greenplum:

  • Распределенные таблицы - оптимизация таблиц с помощью DISTRIBUTED BY
  • Хеш-объединения - использование хеш-объединений вместо слияния
  • Параллельное выполнение - выполнение запросов на всех сегментах
  • Секционирование - поддержка секционированных таблиц для больших объемов данных

Поддерживаемые драйверы:

  • pg8000 - основной рекомендуемый драйвер (устанавливается автоматически)
  • psycopg2 - поддерживается, но может требовать дополнительной настройки на Windows

Структура проекта

  • mlflow_greenplum/ - основной пакет плагина
    • store.py - кастомный tracking store для Greenplum
    • migrations.py - управление миграциями
    • models.py - модели данных и DDL запросы
    • utils.py - вспомогательные функции
    • artifacts.py - repository для артефактов

Разработка

Для разработки установите зависимости:

pip install -r requirements-dev.txt

Запустите тесты:

pytest

Примеры

В директории examples/ находятся примеры использования:

  • basic_usage.py - базовый пример использования с scikit-learn
  • setup_and_test.py - пример настройки и тестирования соединения с Greenplum

Поддерживаемые версии

  • Python 3.8+
  • MLflow 2.0.0+
  • Greenplum 6+
  • PostgreSQL 10+

Лицензия

Apache License 2.0

Запуск тестов:

pytest tests/

Быстрая проверка установки:

python quick_test.py

Устранение неполадок

Ошибки подключения:

  1. Убедитесь что Greenplum/PostgreSQL сервер запущен и доступен
  2. Проверьте правильность параметров подключения в URI
  3. Убедитесь что база данных существует и у пользователя есть права на создание таблиц

Проблемы с миграциями:

Если MLflow сообщает о проблемах со схемой БД, попробуйте:

-- Очистить таблицу миграций (ОСТОРОЖНО: удалит данные о миграциях)
DROP TABLE IF EXISTS alembic_version;

Затем перезапустите приложение - плагин пересоздаст таблицы и миграции.

Примеры

Смотрите директорию examples/ для примеров использования:

  • basic_usage.py - базовый пример с scikit-learn
  • setup_and_test.py - настройка и тестирование подключения

Технологии

  • MLflow >= 2.0.0 - основной фреймворк
  • SQLAlchemy >= 1.4.0 - ORM и подключение к БД
  • pg8000 >= 1.29.0 - драйвер PostgreSQL/Greenplum
  • Alembic >= 1.7.0 - миграции (для эмуляции)

Лицензия

Apache License 2.0

Поддержка

При возникновении проблем создайте issue в репозитории с подробным описанием проблемы и логами.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlflow-greenplum-plugin-0.1.0.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mlflow_greenplum_plugin-0.1.0-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

Details for the file mlflow-greenplum-plugin-0.1.0.tar.gz.

File metadata

  • Download URL: mlflow-greenplum-plugin-0.1.0.tar.gz
  • Upload date:
  • Size: 28.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for mlflow-greenplum-plugin-0.1.0.tar.gz
Algorithm Hash digest
SHA256 05657a29bd9b6cda0c48492291994c40c1c1fb1314270882c3d14d7667384fe9
MD5 9907edd390ca2a45b6477be5e97804bb
BLAKE2b-256 59335ea96fd49365042f7112c713ed934f0530abfb50506f2a39434068caa8af

See more details on using hashes here.

File details

Details for the file mlflow_greenplum_plugin-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mlflow_greenplum_plugin-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 631d072437ebc827568c096ad6ebc4c30a22586f962ee8e274a51f53f11339ec
MD5 7876163aa9c4446b8f1044597e010f93
BLAKE2b-256 a347922018feab45670a090bd1a1a75bf460483ba46a0f6af4f23e1fa503560d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page