Update structure and API
This commit is contained in:
parent
74b839f7d4
commit
467464f443
4 changed files with 130 additions and 30 deletions
|
@ -1,7 +1,12 @@
|
|||
# MLOps Платформа
|
||||
|
||||
- [Введение](./pages/introduction.md)
|
||||
- Базовые темы
|
||||
- [Введение во фреймворк](./pages/introduction.md)
|
||||
- Работа с фреймворком, основные компоненты
|
||||
- Размещение приложения на основе шаблона
|
||||
- Подробно
|
||||
- [API модулей](./pages/api-module.md)
|
||||
- [Компонент DataBox](./pages/databox.md)
|
||||
- [Компонент MLComponent](./pages/mlcmp.md)
|
||||
- [Компонент ExperimentPipeline](./pages/pipeline.md)
|
||||
- [Терминология](./pages/terminology.md)
|
||||
|
|
|
@ -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>"
|
||||
```
|
|
@ -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
15
pages/terminology.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Список терминов
|
||||
|
||||
**Базовый модуль** - приложение, развёрнутое на фреймворке, и решающее прикладную задачу.
|
||||
|
||||
**MLOps модуль** - элемент фреймворка, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей.
|
||||
|
||||
**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач.
|
||||
|
||||
**Разработчик** - разработчик *модулей*, размещающий свои модули на фреймворке.
|
||||
|
||||
**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями.
|
||||
|
||||
**Пайплайн** - pipeline, сквозной процесс программной обработки набора данных несколькими программными модулями. Во фреймворке создаётся с помощью компонента ExperimentPipeline.
|
||||
|
||||
**ML-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов.
|
Loading…
Reference in a new issue