documentation/pages/introduction.md

58 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Введение в работу с фреймворком
## Список терминов
**Базовый модуль** - приложение, развёрнутое на фреймворке, и решающее прикладную задачу.
**MLOps модуль** - элемент фреймворка, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
**Разработчик** - разработчик *модулей*, размещающий свои модули на фреймворке.
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
**Пайплайн** - pipeline, сквозной процесс программной обработки набора данных несколькими программными модулями. Во фреймворке создаётся с помощью компонента ExperimentPipeline.
**ML-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов.
## Работа с фреймворком
Фреймворк позволяет создать на основе Git-репозитория веб-сервис для синхронных и асинхронных вычислений. Для этого необходимо создать набор манифестов, соответствующих компонентам фреймворка, и разместить их в репозитории.
Фреймворк предоставляет два варианта организации вычислительных задач:
1. Веб-сервис для быстрых синхронных вычислений - MLComponent
2. Асинхронный запуск вычислительных экспериментов - ExperimentPipeline
Как правило, если вычислительная задача требует доли секунды для выполнения - её уместно организовывать как ML-компонент, иначе - пайплайн.
## Структура базового модуля
Базовый модуль - состоит из нескольких частей, которые вместе складываются в приложение, которое решает прикладную задачу.
- Git-репозиторий
- Программный код, решающий прикладную задачу
- Включая интерфейс взаимодействия с фреймворком
- Компоненты модуля
- MLComponent
- ExperimentPipeline
- APIComponent
- DataBox
- Системные компоненты, подключающие модуль к фреймворку
- Образы Docker
Общий принцип работы следующий:
1. Существует программа, решающая прикладные задачи. Для простоты - проект на Python. Разработчик хочет развернуть эту программу на фреймворке, чтобы через веб-запросы можно было с ней взаимодействовать. Разработчик определяет, какие из элементов программы подходят для такого взаимодействия, и какой из вариантов организации лучше подходит для каждого элемента - ML-компонент или пайплайн. Например, программа распознавания объектов может содержать ML-компонент для работы с отдельными изображениями и пайплайн для работы с видео.
2. Разработчик реализует интерфейс взаимодействия с фреймворком, соответствующий выбранному компоненту.
- Для ML-компонента это функция inference.
- Для пайплайна это организация входных и выходных данных через файлы и переменные окружения.
- В обоих случаях готовится образ Docker с основной программой и интерфейсом взаимодействия с фреймворком.
- Работу интерфейса можно протестировать без подключения модуля к фреймворку, запуская модуль из образа Docker.
3. Разработчик готовит манифесты компонентов модуля и размещает их в репозитории.
4. Приложение подключается к фреймворку с помощью системных компонентов.
5. Разработчик загружает необходимые для работы данные в DataBox приложения, если нужно.
6. Приложение готово к использованию.
При создании приложения через личный кабинет с использованием шаблонов, приложение сразу подключается к фреймворку с базовым набором компонентов. После этого шаблонные компоненты и код необходимо заменить настоящие, соответствующие решению прикладной задачи.