Initial version

This commit is contained in:
Georgii Zhulikov 2025-03-04 17:15:57 +03:00
parent 16952354bf
commit 8bf8d90389
5 changed files with 93 additions and 16 deletions

View file

@ -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)

View file

@ -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` - локальный путь к файлу.

View file

@ -0,0 +1,24 @@
[Главная страница](./README.md)
# Введение
## Список терминов
**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу.
**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*.
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
## Работа с фреймворком
Фреймворк позволяет создать на основе Git-репозитория веб-сервис для синхронных и асинхронных вычислений. Для этого необходимо создать набор манифестов, соответствующих компонентам фреймворка, и разместить их в репозитории.
Фреймворк предоставляет два варианта организации вычислительных задач:
1. Веб-сервис для быстрых синхронных вычислений - MLComponent
2. Асинхронный запуск вычислительных экспериментов - ExperimentPipeline

View file

@ -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`.

View file

@ -1,12 +1,2 @@
[Главная страница](./README.md)
**Базовый модуль** - приложение, развёрнутое как часть *платформы*, и решающее прикладную задачу.
**MLOps модуль** - элемент *платформы*, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
**Разработчик** - разработчик *модулей* , размещающий свои модули на *платформе*.
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.