diff --git a/README.md b/README.md index 2cca306..60bca0d 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/pages/api-module.md b/pages/api-module.md index 74079c0..2a7022b 100644 --- a/pages/api-module.md +++ b/pages/api-module.md @@ -2,18 +2,15 @@ Доступ к модулю по API контролируется с помощью компонентов APIComponent. Есть несколько типов таких компонентов, каждый из которых отвечает за свой набор функционала. -- Файловый API -- ML-компонент -- Общая работа с пайплайнами +- [Файловый API](#файловый-api) +- [ML-компонент](#ml-компонент) +- [Общая работа с пайплайнами](#общая-работа-с-пайплайнами) - Отдельный пайплайн Все API запросы работают по ссылкам вида `https://platform.stratpro.hse.ru/app-name/`. Здесь `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:" +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:" ``` Это запрос: @@ -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 ":" +``` + +Тело запроса на выполнения расчёта - это объект с полями, которые в точности копируют поля из функции 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 ":" +``` + + +## Общая работа с пайплайнами + +Каждый развёрнутый пайплайн содержит OpenAPI спецификацию запросов к себе. Её можно получить следующим запросом: + +``` +curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines/PIPELINE_NAME/version -H "Content-Type: application/json" -u ":" +``` + +Основная работа происходит с конкретными пайплайнами. Из общих команд полезны: + +``` +# Получить список пайплайнов +curl -X GET https://platform.stratpro.hse.ru/app-name/pipelines -H "Content-Type: application/json" -u ":" +``` + +``` +# Получить список запусков пайплайнов +curl -X GET https://platform.stratpro.hse.ru/app-name/trials -H "Content-Type: application/json" -u ":" +``` \ No newline at end of file diff --git a/pages/introduction.md b/pages/introduction.md index 42ccb60..b31f6fc 100644 --- a/pages/introduction.md +++ b/pages/introduction.md @@ -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-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов. \ No newline at end of file diff --git a/pages/terminology.md b/pages/terminology.md new file mode 100644 index 0000000..9059ac5 --- /dev/null +++ b/pages/terminology.md @@ -0,0 +1,15 @@ +# Список терминов + +**Базовый модуль** - приложение, развёрнутое на фреймворке, и решающее прикладную задачу. + +**MLOps модуль** - элемент фреймворка, не решающий прикладную задачу самостоятельно, а направленный на улучшение или упрощение работы базовых модулей. + +**Пользователь** - конечный пользователь *модулей*, в основном базовых, который заинтересован в применении *интеллектуальный модулей* для решения прикладных задач. + +**Разработчик** - разработчик *модулей*, размещающий свои модули на фреймворке. + +**Компонент модуля** - отдельный элемент приложения, представляющий набор функций для взаимодействия с другими элементами, самой платформой или конечными пользователями. + +**Пайплайн** - pipeline, сквозной процесс программной обработки набора данных несколькими программными модулями. Во фреймворке создаётся с помощью компонента ExperimentPipeline. + +**ML-компонент** - сервис, обрабатывающий синхронные запросы пользователей на произведение вычислений, требующих мало вычислительных ресурсов.