Initial version
This commit is contained in:
parent
16952354bf
commit
8bf8d90389
5 changed files with 93 additions and 16 deletions
|
@ -1,6 +1,6 @@
|
|||
# MLOps Платформа
|
||||
|
||||
- [Словарь терминов](./pages/term-list.md)
|
||||
- [Введение](./pages/introduction.md)
|
||||
- [API модулей](./pages/introduction.md)
|
||||
- [Компонент DataBox](./pages/databox.md)
|
||||
- [Компонент DataBox](./pages/databox.md)
|
||||
- [Компонент MLComponent](./pages/mlcmp.md)
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
[Главная страница](./README.md)
|
||||
|
||||
# Взаимодействие с модулем через API
|
||||
|
||||
Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала.
|
||||
|
||||
- Файловый API
|
||||
- ML-компонент
|
||||
- Общая работа с пайплайнами
|
||||
- Отдельный пайплайн
|
||||
|
||||
Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/<api>`.
|
||||
|
||||
Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения.
|
||||
|
||||
## Авторизация
|
||||
|
||||
|
||||
|
||||
## Файловый API
|
||||
|
||||
### Работа с файловым API
|
||||
|
||||
URL запросов к файловому API имеют вид `https://platform.stratpro.hse.ru/app-name/files/box-name/<path>`.
|
||||
|
||||
Здесь `box-name` - это имя компонента DataBox, к которому обращается запрос.
|
||||
|
||||
Файловый API позволяет загружать файлы в файловое хранилище и получать уже загруженные файлы. Загрузка папок со всем содержимым не предусмотрена, в таких случаях предполагается автоматизация запросов на загрузку отдельных файлов.
|
||||
|
||||
|
||||
#### Пример загрузки и скачивания файла через сервис `files`.
|
||||
|
||||
Для загрузки файла можно использовать следующий запрос `PUT`:
|
||||
|
||||
```sh
|
||||
curl -X PUT https://https://platform.stratpro.hse.ru/app-name/files/box-name/my_dir/my_file.txt -H "Content-Type: application/json" -u "developer:<password>"
|
||||
```
|
||||
|
||||
Это запрос:
|
||||
|
||||
1. К приложению `app-name`.
|
||||
2. К файловому API (у которого endpoint всегда `files`).
|
||||
3. К ящику `box-name`.
|
||||
4. К пути `my_dir/my_file.txt` внутри ящика.
|
||||
5. От имени пользователя модуля `developer`, пароль которого - `<password>`.
|
||||
|
||||
Даже если запрос верный, сам файл на данном этапе не создаётся. Вместо этого должен прийти ответ в формате JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "app-name/files/box-name/my_dir/my_file.txt",
|
||||
"presigned_put_url": "<Длинная pre-signed ссылка загрузки>"
|
||||
}
|
||||
```
|
||||
|
||||
С помощью pre-signed ссылки можно уже загрузить сам файл следующим запросом:
|
||||
|
||||
|
||||
```sh
|
||||
curl -X PUT -T local/path/to/my_file.txt "<Длинная pre-signed ссылка загрузки>"
|
||||
```
|
||||
|
||||
Здесь `local/path/to/my_file.txt` - локальный путь к файлу.
|
|
@ -0,0 +1,24 @@
|
|||
[Главная страница](./README.md)
|
||||
|
||||
# Введение
|
||||
|
||||
## Список терминов
|
||||
|
||||
**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу.
|
||||
|
||||
**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
|
||||
|
||||
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
|
||||
|
||||
**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*.
|
||||
|
||||
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
|
||||
|
||||
## Работа с фреймворком
|
||||
|
||||
Фреймворк позволяет создать на основе Git-репозитория веб-сервис для синхронных и асинхронных вычислений. Для этого необходимо создать набор манифестов, соответствующих компонентам фреймворка, и разместить их в репозитории.
|
||||
|
||||
Фреймворк предоставляет два варианта организации вычислительных задач:
|
||||
|
||||
1. Веб-сервис для быстрых синхронных вычислений - MLComponent
|
||||
2. Асинхронный запуск вычислительных экспериментов - ExperimentPipeline
|
|
@ -137,13 +137,13 @@ spec:
|
|||
- `inference/entryPoint`
|
||||
- `pythonPath` - относительный путь от корня репозитория к папке, которая будет добавлена в `PYTHONPATH`.
|
||||
- `pythonFunction` - имя [функции-адаптера](#251-функция-inference), включая имена промежуточных модулей.
|
||||
- `spec/connectedBoxes` - подключенные компоненты `box` (ящики)
|
||||
- `spec/connectedBoxes` - подключенные компоненты `DataBox` (ящики)
|
||||
- Первый ящик в примере используется для доступа к модели.
|
||||
- `name` - имя, по которому к ящику можно обращаться выше в пункте `spec/mlService/inference/model/modelBox`.
|
||||
- `path` - путь внутри контейнера, к которому монтируется ящик.
|
||||
- `mountS3Box/s3BoxName` - название компонента `box` из пункта **6.1**.
|
||||
- `mountS3Box/s3BoxName` - название компонента `DataBox`.
|
||||
- `mountS3Box/subPath` - путь внутри ящика, который монтируется к пути `path`.
|
||||
*Здесь используется путь `users/developer/file_groups/models` как решение проблемы загрузки весов моделей и прочих данных в хранилище S3. При загрузке через API files от лица пользователя USER файлы загружаются по пути `users/USER/file_groups/...`. То есть в текущем примере веса можно загрузить от лица пользователя `developer` в папку `models/`, и через ML-компонент дать к ним доступ всем остальным пользователям.*
|
||||
*Здесь используется путь `users/developer/file_groups/models` как решение проблемы загрузки весов моделей и прочих данных в хранилище S3. При загрузке через файловый API от лица пользователя USER файлы загружаются по пути `users/USER/file_groups/...`. То есть в текущем примере веса можно загрузить от лица пользователя `developer` в папку `models/`, и через ML-компонент дать к ним доступ всем остальным пользователям.*
|
||||
- Второй ящик в примере используеся для взаимодействия с пользователями
|
||||
- `name` - имя, по которому к ящику можно обращаться выше в пункте `spec/mlService/inference/fileExchange/fileBox`.
|
||||
- `copyS3Box/s3BoxName` - назание компонента `box` из пункта **6.1**.
|
||||
- `copyS3Box/s3BoxName` - назание компонента `DataBox`.
|
||||
|
|
|
@ -1,12 +1,2 @@
|
|||
[Главная страница](./README.md)
|
||||
|
||||
**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу.
|
||||
|
||||
**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
|
||||
|
||||
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
|
||||
|
||||
**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*.
|
||||
|
||||
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
|
||||
|
||||
|
|
Loading…
Reference in a new issue