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