Update structure and API
This commit is contained in:
parent
74b839f7d4
commit
467464f443
4 changed files with 130 additions and 30 deletions
15
README.md
15
README.md
|
@ -1,7 +1,12 @@
|
||||||
# MLOps Платформа
|
# MLOps Платформа
|
||||||
|
|
||||||
- [Введение](./pages/introduction.md)
|
- Базовые темы
|
||||||
- [API модулей](./pages/api-module.md)
|
- [Введение во фреймворк](./pages/introduction.md)
|
||||||
- [Компонент DataBox](./pages/databox.md)
|
- Работа с фреймворком, основные компоненты
|
||||||
- [Компонент MLComponent](./pages/mlcmp.md)
|
- Размещение приложения на основе шаблона
|
||||||
- [Компонент ExperimentPipeline](./pages/pipeline.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 контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала.
|
||||||
|
|
||||||
- Файловый API
|
- [Файловый API](#файловый-api)
|
||||||
- ML-компонент
|
- [ML-компонент](#ml-компонент)
|
||||||
- Общая работа с пайплайнами
|
- [Общая работа с пайплайнами](#общая-работа-с-пайплайнами)
|
||||||
- Отдельный пайплайн
|
- Отдельный пайплайн
|
||||||
|
|
||||||
Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/<api>`.
|
Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/<api>`.
|
||||||
|
|
||||||
Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения.
|
Здесь `app-name` - название приложение, оно же указано в пункте `namespace` во всех компонентах приложения.
|
||||||
|
|
||||||
## Авторизация
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Файловый API
|
## Файловый API
|
||||||
|
|
||||||
|
@ -31,7 +28,7 @@ URL запросов к файловому API имеют вид `https://platfo
|
||||||
Для загрузки файла можно использовать следующий запрос `PUT`:
|
Для загрузки файла можно использовать следующий запрос `PUT`:
|
||||||
|
|
||||||
```sh
|
```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` - локальный путь к файлу.
|
Здесь `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. Приложение готово к использованию.
|
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