MLflow plugin for Greenplum database support
Project description
MLflow Greenplum Plugin
Плагин для MLflow, который обеспечивает поддержку Greenplum базы данных с кастомными методами создания таблиц и обработки миграций.
Описание
Этот плагин решает проблему работы MLflow с Greenplum, где стандартные миграции PostgreSQL могут не работать корректно. Вместо выполнения пошаговых миграций, плагин:
- Эмулирует миграции - создает записи о выполненных миграциях в таблице
alembic_version - Создает финальные таблицы - сразу создает таблицы в их итоговом виде, минуя промежуточные миграции
- Поддерживает Greenplum - использует специфические для Greenplum функции и ограничения
- Совместимость с 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 для Greenplummigrations.py- управление миграциямиmodels.py- модели данных и DDL запросыutils.py- вспомогательные функцииartifacts.py- repository для артефактов
Разработка
Для разработки установите зависимости:
pip install -r requirements-dev.txt
Запустите тесты:
pytest
Примеры
В директории examples/ находятся примеры использования:
basic_usage.py- базовый пример использования с scikit-learnsetup_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
Устранение неполадок
Ошибки подключения:
- Убедитесь что Greenplum/PostgreSQL сервер запущен и доступен
- Проверьте правильность параметров подключения в URI
- Убедитесь что база данных существует и у пользователя есть права на создание таблиц
Проблемы с миграциями:
Если MLflow сообщает о проблемах со схемой БД, попробуйте:
-- Очистить таблицу миграций (ОСТОРОЖНО: удалит данные о миграциях)
DROP TABLE IF EXISTS alembic_version;
Затем перезапустите приложение - плагин пересоздаст таблицы и миграции.
Примеры
Смотрите директорию examples/ для примеров использования:
basic_usage.py- базовый пример с scikit-learnsetup_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05657a29bd9b6cda0c48492291994c40c1c1fb1314270882c3d14d7667384fe9
|
|
| MD5 |
9907edd390ca2a45b6477be5e97804bb
|
|
| BLAKE2b-256 |
59335ea96fd49365042f7112c713ed934f0530abfb50506f2a39434068caa8af
|
File details
Details for the file mlflow_greenplum_plugin-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mlflow_greenplum_plugin-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
631d072437ebc827568c096ad6ebc4c30a22586f962ee8e274a51f53f11339ec
|
|
| MD5 |
7876163aa9c4446b8f1044597e010f93
|
|
| BLAKE2b-256 |
a347922018feab45670a090bd1a1a75bf460483ba46a0f6af4f23e1fa503560d
|