Skip to content

Latest commit

 

History

History
298 lines (208 loc) · 21.6 KB

README.rst

File metadata and controls

298 lines (208 loc) · 21.6 KB

Logo of FEDOT framework

package
tests
docs Documentation Status
license
Supported Python Versions
stats
downloads_stats
support
languages
mirror
GitLab mirror for this repository
funding

FEDOT - это open-source фреймворк для решения задач из области автоматизированного моделирования и машинного обучения (AutoML). Фреймворк распространяется под лицензией 3-Clause BSD.

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

Реализация процесса автоматического машинного обучения в FEDOT

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

Проект поддерживается исследовательской группой Natural Systems Simulation Lab, которая является частью Национального центра когнитивных разработок Университета ИТМО.

Более подробная информация о FEDOT доступна в следующем видео:

Introducing Fedot

Концепции FEDOT'а

Установка

  • Cистема управления пакетами pip

Самый простой способ установить FEDOT - это использовать pip:

$ pip install fedot

Установка с дополнительными зависимостями для обработки изображений и текста, а также для DNN:

$ pip install fedot[extra]
  • Контенер Docker

Информацию по доступным образам можно посмотреть здесь.

Как использовать

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

Чтобы использовать API, выполните следующие действия:

  1. Импортируйте класс Fedot
from fedot.api.main import Fedot
  1. Инициализируйте объект FEDOT и задайте тип задачи моделирования. Объект предоставит интерфейс fit/predict:
  • Fedot.fit() запускает оптимизацию и возвращает получившийся составной пайплайн;
  • Fedot.predict() прогнозирует целевые значения для заданных входных данных, используя уже полученный пайплайн;
  • Fedot.get_metrics() оценивает качество предсказаний с использованием выбранных показателей.

В качестве источников входных данных могут использоваться массивы NumPy, датафреймы Pandas и путь к файлу. В приведенном ниже примере x_train, y_train и x_test являются numpy.ndarray():

model = Fedot(problem='classification', timeout=5, preset='best_quality', n_jobs=-1)
model.fit(features=x_train, target=y_train)
prediction = model.predict(features=x_test)
metrics = model.get_metrics(target=y_test)

Более подробная информация об API доступна в документации, а более сложные примеры показаны в этом разделе.

Примеры

Jupyter ноутбуки с примерами находятся в репозитории fedot-examples. Там вы можете найти следующие руководства:

Версии ноутбуков выпускаются в соответствии с версиями релизов (версия по умолчанию - "latest").

Также доступны примеры на внешних платформах:

Расширенные примеры:

Также доступно несколько видео уроков (на русском).

Публикации о FEDOT

Мы опубликовали несколько постов о различных аспектах фреймворка:

На английском:

На русском:

  • Как AutoML помогает создавать модели композитного ИИ — говорим о структурном обучении и фреймворке FEDOT - habr.com
  • Прогнозирование временных рядов с помощью AutoML - habr.com
  • Как мы “повернули реки вспять” на Emergency DataHack 2021, объединив гидрологию и AutoML - habr.com
  • Чистый AutoML для “грязных” данных: как и зачем автоматизировать предобработку таблиц в машинном обучении - ODS blog
  • Фреймворк автоматического машинного обучения FEDOT (Конференция Highload++ 2022) - presentation
  • Про настройку гиперпараметров ансамблей моделей машинного обучения - habr.com

На китайском:

  • 生成式自动机器学习系统 (презентация на конференции "Open Innovations 2.0") - youtube.com

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

Последняя стабильная версия FEDOT находится в ветке master.

Репозиторий включает в себя следующие директории:

  • В пакете core находятся основные классы и скрипты. Это ядро фреймворка FEDOT.
  • В пакете examples собраны несколько примеров использования, с которых можно начать знакомство с FEDOT.
  • Все тесты (unit и интеграционные) находятся в папке test.
  • Документация находится в папке docs.

Текущие исследования/разработки и планы на будущее

В настоящее время мы работаем над новыми функциями и пытаемся улучшить производительность и удобство использования FEDOT. Основные текущие задачи и планы:

  • Реализация большой языковой модели для задач автоматического машинного обучения в FEDOT.LLM.
  • Реализация методов и алгоритмов мета-обучения в GAMLET.
  • Повышение эффективности оптимизационного ядра GOLEM.
  • Поддержка более сложных вариантов пайплайнов, особенно для задач прогнозирования временных рядов.

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

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

Документация

Подробное описание FEDOT API доступно в разделе Read the Docs.

Как участвовать

  • Инструкция для добавления изменений находится в репозитории.

Благодарности

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

Дополнительные проекты

  • Оптимизационное ядро, вынесенное в библиотеку GOLEM.
  • Прототип web-GUI для FEDOT доступен в FEDOT.WEB репозитории.
  • Прототип реализации Meta-AutoML - MetaFEDOT.
  • Прототип реализации LLM для AutoML - FEDOT.LLM.

Контакты

Разработка ведётся при поддержке

Цитирование

@article{nikitin2021automated,
title = {Automated evolutionary approach for the design of composite machine learning pipelines}, author = {Nikolay O. Nikitin and Pavel Vychuzhanin and Mikhail Sarafanov and Iana S. Polonskaia and Ilia Revin and Irina V. Barabanova and Gleb Maximov and Anna V. Kalyuzhnaya and Alexander Boukhanovsky}, journal = {Future Generation Computer Systems}, year = {2021}, issn = {0167-739X}, doi = {https://doi.org/10.1016/j.future.2021.08.022}}
@inproceedings{polonskaia2021multi,
title={Multi-Objective Evolutionary Design of Composite Data-Driven Models}, author={Polonskaia, Iana S. and Nikitin, Nikolay O. and Revin, Ilia and Vychuzhanin, Pavel and Kalyuzhnaya, Anna V.}, booktitle={2021 IEEE Congress on Evolutionary Computation (CEC)}, year={2021}, pages={926-933}, doi={10.1109/CEC45853.2021.9504773}}