From 5641ac27395f28cb35ab7b414d8022e5d15566d3 Mon Sep 17 00:00:00 2001 From: Georgii Zhulikov Date: Tue, 4 Mar 2025 15:56:14 +0300 Subject: [PATCH] Clean up mlcmp --- pages/mlcmp.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pages/mlcmp.md b/pages/mlcmp.md index 036c05b..55734ab 100644 --- a/pages/mlcmp.md +++ b/pages/mlcmp.md @@ -6,12 +6,20 @@ MLComponent подходит для быстрых вычислений, в частности запуска предобученной модели машинного обучения на небольшой выборке данных. Например, распознавание объекта на одном изображении, классификация таблицы текстовых данных. Если алгоритм работает за доли секунды, то он подходит как основа для MLComponent. -На основе образа Docker, указанного в манифесте MLComponent создаётся контейнер. В него устанавливается системная библиотека платформы, которая создаёт веб-сервис. При получении запроса от пользователя веб-сервис вызывает функцию inference, указанную в манифесте MLComponent, и передаёт вывод функции пользователю. +На основе образа Docker, указанного в манифесте MLComponent, создаётся контейнер. В него устанавливается системная библиотека платформы, которая создаёт веб-сервис. При получении запроса от пользователя веб-сервис вызывает функцию inference, указанную в манифесте MLComponent, и передаёт вывод функции пользователю. + +Для добавления MLComponent к модулю разработчику нужно: + +- Реализовать функцию, на основе которой будет создан веб-сервис. +- Добавить в модуль манифест компонента MLComponent +- Добавить в модуль манифест компонента APIComponent для обращения к MLComponent + +Также в модуле уже должен присутствовать хотя бы один компонент DataBox и соответствующий ему APIComponent. -### 2.5.1. Функция inference +## Функция inference -Со стороны разработчика модуля для работы MLComponent нужно реализовать функцию со следующим интерфейсом: +Для работы MLComponent нужно реализовать функцию со следующим интерфейсом: ``` def inference(parameters: List[Dict[str, Any]], @@ -21,7 +29,6 @@ def inference(parameters: List[Dict[str, Any]], model: Any = None) -> Tuple[List[Dict[str, Any]], Any]: ``` - Входные параметры: * `parameters` - список пар `[name, value]`, произвольных параметров примитивных типов. @@ -61,7 +68,7 @@ def inference(parameters: List[Dict[str, Any]], model: Any = None) -> Tuple[List[Dict[str, Any]], Any]: ``` -### 2.5.2. Манифесты +## Манифесты Пример манифеста ML-компонента. @@ -120,16 +127,16 @@ spec: - `packageRegistryName` - название репозитория с пакетами Python, должно соответствовать "внешнему" названию из компонента приложения в пункте **7.6**. Название может быть другим, главное - соответствие названий друг другу. - `inference/fileExchange` - соединение файловой системы контейнера (сервиса) и ящика S3 для обмена файлами. - `fileBox` - название ящика S3 для файлов пользователей. - *Должно соответствовать названию из пункта `connectedBoxes` ниже в этом файле, а не названию `metadata/name` из компонента `box`*. + *Должно соответствовать названию из пункта `connectedBoxes` ниже в этом файле, а не названию `metadata/name` из компонента `DataBox`*. - `inferenceFilesPath` - путь, куда будут записываться создаваемые файлы внутри контейнера. К этому пути должны быть права доступа у пользователя контейнера. С этой папкой фреймворк взаимодействует автоматически, то есть лучше сделать уникальный путь, который нигде больше не используется. - `inference/model` - соединение файловой системы контейнера (сервиса) и ящика S3 для подключения модели расчётов. - `modelBox` - название ящика S3, где размещена модель. - *Должно соответствовать названию из пункта `connectedBoxes` ниже в этом файле, а не названию `metadata/name` из компонента `box`*. + *Должно соответствовать названию из пункта `connectedBoxes` ниже в этом файле, а не названию `metadata/name` из компонента `DataBox`*. - `modelPath` - путь, по которому модель будет доступна внутри контейнера. *Этот путь передаётся в функцию `inference`. Может быть папкой или файлом.* - `inference/entryPoint` - `pythonPath` - относительный путь от корня репозитория к папке, которая будет добавлена в `PYTHONPATH`. - - `pythonFunction` - имя функции-адаптера из **пункта 3**, включая имена промежуточных модулей. + - `pythonFunction` - имя [функции-адаптера](#251-функция-inference), включая имена промежуточных модулей. - `spec/connectedBoxes` - подключенные компоненты `box` (ящики) - Первый ящик в примере используется для доступа к модели. - `name` - имя, по которому к ящику можно обращаться выше в пункте `spec/mlService/inference/model/modelBox`.