diff --git a/README.md b/README.md index d1496a2..61b1f43 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MLOps Платформа -- [Словарь терминов](./pages/term-list.md) - [Введение](./pages/introduction.md) - [API модулей](./pages/introduction.md) -- [Компонент DataBox](./pages/databox.md) \ No newline at end of file +- [Компонент DataBox](./pages/databox.md) +- [Компонент MLComponent](./pages/mlcmp.md) diff --git a/pages/api-module.md b/pages/api-module.md index e69de29..86e050f 100644 --- a/pages/api-module.md +++ b/pages/api-module.md @@ -0,0 +1,63 @@ +[Главная страница](./README.md) + +# Взаимодействие с модулем через API + +Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала. + +- Файловый API +- ML-компонент +- Общая работа с пайплайнами +- Отдельный пайплайн + +Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/`. + +Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения. + +## Авторизация + + + +## Файловый API + +### Работа с файловым API + +URL запросов к файловому API имеют вид `https://platform.stratpro.hse.ru/app-name/files/box-name/`. + +Здесь `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:" +``` + +Это запрос: + +1. К приложению `app-name`. +2. К файловому API (у которого endpoint всегда `files`). +3. К ящику `box-name`. +4. К пути `my_dir/my_file.txt` внутри ящика. +5. От имени пользователя модуля `developer`, пароль которого - ``. + +Даже если запрос верный, сам файл на данном этапе не создаётся. Вместо этого должен прийти ответ в формате 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` - локальный путь к файлу. diff --git a/pages/introduction.md b/pages/introduction.md index e69de29..e74b664 100644 --- a/pages/introduction.md +++ b/pages/introduction.md @@ -0,0 +1,24 @@ +[Главная страница](./README.md) + +# Введение + +## Список терминов + +**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу. + +**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей. + +**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач. + +**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*. + +**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями. + +## Работа с фреймворком + +Фреймворк позволяет создать на основе Git-репозитория веб-сервис для синхронных и асинхронных вычислений. Для этого необходимо создать набор манифестов, соответствующих компонентам фреймворка, и разместить их в репозитории. + +Фреймворк предоставляет два варианта организации вычислительных задач: + +1. Веб-сервис для быстрых синхронных вычислений - MLComponent +2. Асинхронный запуск вычислительных экспериментов - ExperimentPipeline diff --git a/pages/mlcmp.md b/pages/mlcmp.md index 55734ab..9381e7d 100644 --- a/pages/mlcmp.md +++ b/pages/mlcmp.md @@ -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**. \ No newline at end of file + - `copyS3Box/s3BoxName` - назание компонента `DataBox`. diff --git a/pages/term-list.md b/pages/term-list.md index 4a2c37b..f78223b 100644 --- a/pages/term-list.md +++ b/pages/term-list.md @@ -1,12 +1,2 @@ [Главная страница](./README.md) -**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу. - -**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей. - -**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач. - -**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*. - -**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями. -