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 подходит для вычислительных задач, которые:
|
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
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
Данные передаются на вход и выход пайплайна, а также между его отдельными этапами через *переменные*. Эти переменные используются в нескольких частях работы пайплайна:
|
Данные передаются на вход и выход пайплайна, а также между его отдельными этапами через *переменные*. Эти переменные используются в нескольких частях работы пайплайна:
|
||||||
|
|
||||||
- Внутри контейнера эти переменные доступны как переменные окружения.
|
- Внутри контейнера эти переменные доступны как переменные окружения.
|
||||||
|
|
Loading…
Reference in a new issue