Skip to content

playa69/MAS_AutoML

Repository files navigation

Мультиагентный прототип для оркестрации AutoML

Описание

Репозиторий содержит прототип мультиагентной системы (МАС), предназначенной для построения гибридных пайплайнов машинного обучения на основе нескольких AutoML-фреймворков. Система поддерживает сценарии:

  • базовый: оркестрация существующих AutoML-фреймворков (AutoGluon, Auto-sklearn 2.0, FEDOT и т.д.) через промпты и function calling;
  • продвинутый: расширение пайплайнов за счёт поиска новых моделей в научных публикациях, их кодовой реализации и интеграции в выбранные AutoML-инструменты;
  • мета-оптимизация: динамическая комбинация сильных сторон разных AutoML-фреймворков и сравнение результатов гибридного пайплайна с индивидуальными решениями.

В качестве эталонных датасетов для проверки качества предлагается использовать AMLB: an AutoML Benchmark.

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

├── data/                     # Заготовленные каталоги для датасетов
├── docs/                     # Документация и дизайн-артефакты
├── experiments/notebooks/    # Исследовательские ноутбуки
├── scripts/                  # CLI-скрипты для запуска пайплайнов
├── src/mas_automl/           # Исходный код МАС
│   ├── agents/               # Агент-планировщик, исследователь, исполнитель
│   ├── config/               # Конфигурационные схемы и настройки
│   ├── integrations/         # Адаптеры к AutoML-фреймворкам и сторонним сервисам
│   ├── pipelines/            # Регистры и описание гибридных пайплайнов
│   └── services/             # Оркестраторы, вспомогательные сервисы
└── tests/                    # Автоматические проверки и smokе-тесты

Быстрый старт

  1. Установите uv (если ещё не установлен).
  2. Создайте и активируйте виртуальное окружение (Python 3.11):
    uv venv --python 3.11
  3. Синхронизируйте зависимости (базовый набор):
    uv sync
  4. Для добавления тяжёлых AutoML-фреймворков установите дополнительный набор:
    uv sync --extra automl

    Примечание: auto-sklearn доступен только в Linux окружениях. Установите его вручную при необходимости:

    uv pip install "auto-sklearn<0.15" --python 3.10
  5. Установите dev-зависимости для тестирования и линтинга:
    uv sync --extra dev
  6. Запустите демонстрационный скрипт/CLI:
    uv run aetherml --help
    # Альтернатива (если по каким-то причинам не сработал entry point):
    uv run -m mas_automl --help

Основные компоненты

  • PlannerAgent — отвечает за анализ задачи и формирование плана пайплайна.
  • ResearchAgent — выполняет анализ литературы и веб-источников для поиска новых моделей.
  • ExecutorAgent — оркестрирует запуск выбранных AutoML-фреймворков и сбор результатов.
  • HybridPipeline — объект-описание пайплайна, объединяющего шаги из разных фреймворков.
  • BenchmarkRunner — сервис, обеспечивающий сравнение гибридных решений с базовыми.

Как запускать тесты

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

    uv run -m pytest
  • Запуск тестов интеграций (smoke) для адаптеров:

    uv run -m pytest tests/test_integrations_baseline.py -q

    Если нету dev-зависимостей, установите:

    uv sync --extra dev

  • На Windows отсутствие auto-sklearn не приведёт к падению: в тестах используется pytest.importorskip, и соответствующие сценарии будут пропущены, если фреймворк не установлен.

  • Полезные флаги:

    • -k "<substr>" — отфильтровать тесты по подстроке;
    • -vv — подробный вывод;
    • -s — не захватывать stdout/stderr (удобно для отладки);
    • --maxfail=1 — остановиться на первом падении.

Пример запуска одного теста с подробным выводом:

uv run -m pytest tests/test_integrations_baseline.py::test_autogluon_adapter_runs_on_synthetic_data -vv -s

Как запускать сервис/CLI

CLI уже экспортирован как консольная команда aetherml:

uv run aetherml --help
  • Показать список зарегистрированных пайплайнов:

    uv run aetherml list-pipelines
  • Запустить пайплайн (по умолчанию default из pipelines/registry.py):

    uv run aetherml run --name default

Примечание: адаптеры ожидают в параметрах шага params['dataset'] словарь вида:

{
  "train": pd.DataFrame,  # обучающая выборка с колонкой таргета
  "test": pd.DataFrame,   # тестовая выборка с колонкой таргета
  "label": "target",      # имя колонки таргета
  "problem_type": "classification" | "regression",  # опционально
}

В демонстрационном CLI данные не подгружаются автоматически — он показывает каркас оркестрации и агрегации метрик.

Отладка и дебаг

  • Быстрая локальная проверка адаптера на синтетике — см. тесты в tests/test_integrations_baseline.py. Их удобно использовать как живые примеры входного формата.
  • Если нужно посмотреть метрики и трассировку:
    • добавьте временные print() или rich.print() в адаптер;
    • запустите один тест с флагами -vv -s.
  • Линтинг и типизация:
    uv run ruff check .
    uv run mypy src
  • Работа с тяжелыми фреймворками:
    • Устанавливайте через uv sync --extras automl. На Windows некоторые пакеты (например, auto-sklearn) недоступны — соответствующие тесты будут пропущены.
    • Для экономии времени подберите минимальные значения time_limit/timeout в step.params для адаптеров.

Дальнейшие шаги

  • Добавить реальные промпты и подключение LLM API для агентов.
  • Реализовать адаптеры к выбранным AutoML-фреймворкам (AutoGluon, Auto-sklearn 2.0, FEDOT и др.).
  • Настроить автоматический веб-скрейпинг и извлечение новых моделей из научных статей.
  • Подготовить набор сценариев на базовых датасетах AMLB для воспроизводимых экспериментов.

Лицензия

Добавьте выбранную лицензию в файл LICENSE при необходимости.

About

MAS for AUTOML - мультиагентная система на базе AMLB бенчмарка для сравнения Tier1 фреймворков и их ансамблирования (https://openml.github.io/automlbenchmark/papers.html)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors