Update structure and API

This commit is contained in:
Georgii Zhulikov 2025-03-10 15:12:33 +03:00
parent 74b839f7d4
commit 467464f443
4 changed files with 130 additions and 30 deletions

View file

@ -1,7 +1,12 @@
# MLOps Платформа
- [Введение](./pages/introduction.md)
- [API модулей](./pages/api-module.md)
- [Компонент DataBox](./pages/databox.md)
- [Компонент MLComponent](./pages/mlcmp.md)
- [Компонент ExperimentPipeline](./pages/pipeline.md)
- Базовые темы
- [Введение во фреймворк](./pages/introduction.md)
- Работа с фреймворком, основные компоненты
- Размещение приложения на основе шаблона
- Подробно
- [API модулей](./pages/api-module.md)
- [Компонент DataBox](./pages/databox.md)
- [Компонент MLComponent](./pages/mlcmp.md)
- [Компонент ExperimentPipeline](./pages/pipeline.md)
- [Терминология](./pages/terminology.md)

View file

@ -2,18 +2,15 @@
Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала.
- Файловый API
- ML-компонент
- Общая работа с пайплайнами
- [Файловый API](#файловый-api)
- [ML-компонент](#ml-компонент)
- [Общая работа с пайплайнами](#общая-работа-с-пайплайнами)
- Отдельный пайплайн
Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/<api>`.
Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения.
## Авторизация
## Файловый API
@ -31,7 +28,7 @@ URL запросов к файловому API имеют вид `https://platfo
Для загрузки файла можно использовать следующий запрос `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>"
curl -X PUT https://platform.stratpro.hse.ru/app-name/files/box-name/my_dir/my_file.txt -H "Content-Type: application/json" -u "developer:<password>"
```
Это запрос:
@ -59,3 +56,68 @@ curl -X PUT -T local/path/to/my_file.txt "<Длинная pre-signed ссылк
```
Здесь `local/path/to/my_file.txt` - локальный путь к файлу.
## ML-компонент
ML-компоненты проводят расчёты при получении соответствующих запросов и присылают результат в ответе на запрос.
Каждый развёрнутый ML-компонент содержит OpenAPI спецификацию запросов к себе. Её можно получить следующим запросом:
```
curl -X GET https://platform.stratpro.hse.ru/app-name/API_NAME/modelversion -H "Content-Type: application/json" -u "<username>:<password>"
```
Тело запроса на выполнения расчёта - это объект с полями, которые в точности копируют поля из функции inference в [MLComponent](mlcmp.md#функция-inference).
### Пример запроса
Пример тела запроса к ML-компоненту
```
{
"inputs": [
{
"name": "image",
"data": "uploads/test_image.png",
"datatype": "FILE",
"content_type": "image/png",
"shape": [128, 128]
}
],
"output_fields": [
{
"name": "predict",
"datatype": "INT32"
}
]
}
```
Запрос, с файлом `data.json` в его теле и базовой аутентификацией.
```
curl -X POST -d @data.json https://platform.stratpro.hse.ru/app-name/API_NAME/predict -H "Content-Type: application/json" -u "<username>:<password>"
```
## Общая работа с пайплайнами
Каждый развёрнутый пайплайн содержит OpenAPI спецификацию запросов к себе. Её можно получить следующим запросом:
```
curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines/PIPELINE_NAME/version -H "Content-Type: application/json" -u "<username>:<password>"
```
Основная работа происходит с конкретными пайплайнами. Из общих команд полезны:
```
# Получить список пайплайнов
curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines -H "Content-Type: application/json" -u "<username>:<password>"
```
```
# Получить список запусков пайплайнов
curl -X GET https://platform.stratpro.hse.ru/app-name/trials -H "Content-Type: application/json" -u "<username>:<password>"
```

View file

@ -1,9 +1,43 @@
# Введение в работу с фреймворком
Фреймворк решает проблему размещения проектов в сфере искусственного интеллекта в виде веб-сервисов.
Основная модель работы предполагает, что существует проект,
Что существует:
- Исследовательский проект
- Подзадачи проекта, которые можно выделить в вычислительные конвейеры: "получить данные A, B и C, произвести вычисления, вывести данные X, Y и Z"
Какие задачи может решить фреймворк:
- "Живая" демонстрация работы проекта на любых совместимых данных
- Запуск вычислительных экспериментов и их организация
- Запуск вычислительных задач через веб-сервис
- Управление пользователями, ограничение доступа
Внедрение проекта во фреймворк можно разделить на три этапа:
1. Подготовка существующего проекта
2. Реализация интерфейса взаимодействия с фреймворком
3. Настройка системных компонентов фреймворка
## Подготовка проекта к внедрению во фреймворк
Чтобы существующий проект мог быть подключен к фреймворку, в нём должна быть выделена задача с явно заданными входными и выходными данными.
- Хороший пример - оптическое распознавание символов. На входе изображение, на выходе текст с этого изображения.
- Плохой пример - приложение с базой данных, где основные взаимодействия с приложением регулярно обновляют эту базу данных.
- Хороший пример - вычислительная подзадача, которая выполняется на выборке из базы данных. На входе выборка, на выходе результат вычислений.
- Плохой пример - набор Jupyter-тетрадей, в которых задачи решаются последовательным вызовом ячеек с кодом.
- Хороший пример - тот же код, оформленный в виде скрипта `.py`.
## Работа с фреймворком
Фреймворк позволяет создать на основе Git-репозитория веб-сервис для синхронных и асинхронных вычислений. Для этого необходимо создать набор манифестов, соответствующих компонентам фреймворка, и разместить их в репозитории.
Фреймворк предоставляет два варианта организации вычислительных задач:
@ -41,19 +75,3 @@
6. Приложение готово к использованию.
При создании приложения через личный кабинет с использованием шаблонов, приложение сразу подключается к фреймворку с базовым набором компонентов. После этого шаблонные компоненты и код необходимо заменить настоящими, соответствующими решению прикладной задачи.
## Список терминов
**Базовый модуль** - приложение, развёрнутое на фреймворке, и решающее прикладную задачу.
**MLOps модуль** - элемент фреймворка, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
**Разработчик** - разработчик *модулей*, размещающий свои модули на фреймворке.
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
**Пайплайн** - pipeline, сквозной процесс программной обработки набора данных несколькими программными модулями. Во фреймворке создаётся с помощью компонента ExperimentPipeline.
**ML-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов.

15
pages/terminology.md Normal file
View file

@ -0,0 +1,15 @@
# Список терминов
**Базовый модуль** - приложение, развёрнутое на фреймворке, и решающее прикладную задачу.
**MLOps модуль** - элемент фреймворка, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
**Разработчик** - разработчик *модулей*, размещающий свои модули на фреймворке.
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
**Пайплайн** - pipeline, сквозной процесс программной обработки набора данных несколькими программными модулями. Во фреймворке создаётся с помощью компонента ExperimentPipeline.
**ML-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов.