Update pipeline page

This commit is contained in:
Georgii Zhulikov 2025-03-31 10:16:51 +03:00
parent 09df14d929
commit e233cb6fc1

View file

@ -11,28 +11,83 @@
Компонент ExperimentPipeline позволяет создать сервис для асинхронной обработки запросов пользователей. Компонент ExperimentPipeline позволяет создать сервис для асинхронной обработки запросов пользователей.
ExperimentPipeline подходит для вычислительных задач, которые: ExperimentPipeline подходит для вычислительных задач, для которых выполняется хотя бы один из критериев:
- Требуют много вычислительных ресурсов (от нескольких секунд времени и больше, большие объёмы данных) - Требуют много вычислительных ресурсов (от нескольких секунд времени и больше, большие объёмы данных)
- Не могут быть оформлены как Python-функция - Не могут быть оформлены как Python-функция
- Используют MLOps-модули - Используют MLOps-модули
Если хотя бы один их этих критериев выполнен, задачу скорее всего лучше оформить как ExperimentPipeline.
При получении запроса от пользователя, на основе образов Docker, указанных в манифесте ExperimentPipeline, создаются контейнеры. Указанные входные и выходные переменные становятся переменными окружения при запуске контейнера, и соответствуют определённым путям в файловом хранилище. Запускается расчёт, в ходе которого предполагается работа с файлами и папками из переменных окружения. Результаты расчёта записываются в папки, пути к которым были переданы в контейнер.
Для добавления ExperimentPipeline к модулю разработчику нужно: Для добавления ExperimentPipeline к модулю разработчику нужно:
- Добавить в модуль манифест компонента ExperimentPipeline - Добавить в модуль манифест компонента ExperimentPipeline
- Добавить в модуль манифест компонента APIComponent для обращения к ExperimentPipeline - Добавить в модуль манифест компонента APIComponent для обращения к ExperimentPipeline
- Добавить в модуль манифест компонента APIComponent для работы с пайплайнами в целом (один на все пайплайны) - Добавить в модуль манифест компонента APIComponent для работы с пайплайнами в целом (один на все пайплайны)
Также в модуле уже должен присутствовать хотя бы один компонент DataBox и соответствующий ему APIComponent. Также в модуле уже должен присутствовать APIComponent для работы с файлами и хотя бы один компонент DataBox.
Общий принцип работы пайплайнов следующий.
1. Пользователь отправляет запрос с путями ко входным и выходным данным в файловом хранилище.
2. Пользователь получает ответ на запрос с идентификатором запуска, по которому можно отслеживать статус выполнения пайплайна.
3. Создаётся и запускается контейнер Docker
4. Файловое хранилище монтируется к файловой системе контейнера согласно полям манифеста ExperimentPipeline
5. Указанные в запросе пути преобразуются в пути в локальной файловой системе и передаются в контейнер как переменные окружения.
6. Запускается расчёт, который считывает входные данные из локальных путей, переданных в переменных окружения.
7. Результат расчёта записывается в локальный путь, считанный из переменной окружения.
8. Пользователь периодически проверяет статус расчёта. Если расчёт завершён, его результаты можно получить через запросы к файловому хранилищу.
## Переменные ## Переменные
```mermaid
graph TB
request["Запрос"]
S3[("Хранилище S3")]
var1[/"var1"/]
var2[/"var2"/]
request --> var1
request --> var2
S3 --> var1
S3 --> var2
subgraph stage1
UNIP_PIPELINE_VAR1[/"UNIP_PIPELINE_VAR1"/]
UNIP_PIPELINE_VAR2[/"UNIP_PIPELINE_VAR2"/]
UNIP_PIPELINE_VAR3_first[/"UNIP_PIPELINE_VAR3"/]
docker1[/"docker container 1"/]
end
var3[/"var3"/]
subgraph stage2
UNIP_PIPELINE_VAR3[/"UNIP_PIPELINE_VAR3"/]
UNIP_PIPELINE_VAR4[/"UNIP_PIPELINE_VAR4"/]
docker2[/"docker container 2"/]
end
docker1 --> UNIP_PIPELINE_VAR3_first
UNIP_PIPELINE_VAR1 --> docker1
UNIP_PIPELINE_VAR2 --> docker1
UNIP_PIPELINE_VAR3_first --> var3
var4[/"var4"/]
UNIP_PIPELINE_VAR3 --> docker2
docker2 --> UNIP_PIPELINE_VAR4
UNIP_PIPELINE_VAR4 --> var4
var1 --> UNIP_PIPELINE_VAR1
var2 --> UNIP_PIPELINE_VAR2
var3 --> UNIP_PIPELINE_VAR3
```
Данные передаются на вход и выход пайплайна, а также между его отдельными этапами через *переменные*. Эти переменные используются в нескольких частях работы пайплайна: Данные передаются на вход и выход пайплайна, а также между его отдельными этапами через *переменные*. Эти переменные используются в нескольких частях работы пайплайна:
- Внутри контейнера эти переменные доступны как переменные окружения. - Внутри контейнера эти переменные доступны как переменные окружения.