Update pipeline page
This commit is contained in:
parent
09df14d929
commit
e233cb6fc1
1 changed files with 61 additions and 6 deletions
|
@ -11,28 +11,83 @@
|
|||
|
||||
Компонент ExperimentPipeline позволяет создать сервис для асинхронной обработки запросов пользователей.
|
||||
|
||||
ExperimentPipeline подходит для вычислительных задач, которые:
|
||||
ExperimentPipeline подходит для вычислительных задач, для которых выполняется хотя бы один из критериев:
|
||||
|
||||
- Требуют много вычислительных ресурсов (от нескольких секунд времени и больше, большие объёмы данных)
|
||||
- Не могут быть оформлены как Python-функция
|
||||
- Используют MLOps-модули
|
||||
|
||||
Если хотя бы один их этих критериев выполнен, задачу скорее всего лучше оформить как ExperimentPipeline.
|
||||
|
||||
При получении запроса от пользователя, на основе образов Docker, указанных в манифесте ExperimentPipeline, создаются контейнеры. Указанные входные и выходные переменные становятся переменными окружения при запуске контейнера, и соответствуют определённым путям в файловом хранилище. Запускается расчёт, в ходе которого предполагается работа с файлами и папками из переменных окружения. Результаты расчёта записываются в папки, пути к которым были переданы в контейнер.
|
||||
|
||||
Для добавления ExperimentPipeline к модулю разработчику нужно:
|
||||
|
||||
- Добавить в модуль манифест компонента ExperimentPipeline
|
||||
- Добавить в модуль манифест компонента APIComponent для обращения к ExperimentPipeline
|
||||
- Добавить в модуль манифест компонента 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
|
||||
|
||||
```
|
||||
|
||||
Данные передаются на вход и выход пайплайна, а также между его отдельными этапами через *переменные*. Эти переменные используются в нескольких частях работы пайплайна:
|
||||
|
||||
- Внутри контейнера эти переменные доступны как переменные окружения.
|
||||
|
|
Loading…
Reference in a new issue