Основные понятия и сущности
Общие
API-токен
Аутентификационный токен, необходимый для доступа к REST API. Его можно получить в интерфейсе на странице Мои сервисы → API-токены.
При HTTP-запросе API-токен передается в заголовке MLP-API-KEY
, а в gRPC-запросе — в параметре authToken
.
Метод fit
Метод, предназначенный для обучения сервиса. Принимает на вход набор данных (датасет) и опционально конфигурацию, затем выполняет обучение. В качестве входных данных могут использоваться, например, примеры интентов и их метки.
Fit-конфигурация, конфигурация обучения
Набор параметров для обучения с помощью метода fit
.
При запуске обучения можно задать fit
-конфигурацию вручную в формате JSON либо выбрать готовую из списка. Набор возможных конфигураций задается в настройках сервиса.
Сервис | Примеры fit-конфигураций |
---|---|
cross-validation-for-intents | hf_labse-linear, roberta-linear, roberta-metric, transformer-classifier-dl4j |
transformer-classifier-dl4j | roberta, roberta-big-batch-parallel |
Метод predict
Метод, предназначенный для прогнозирования результата. Принимает на вход тело predict
-запроса и опционально конфигурацию. В ответ выдает прогноз.
Формат входных и выходных данных специфичен для каждого конкретного сервиса и описан в документации к сервису.
Predict-конфигурация, конфигурация прогноза
Набор параметров для выдачи прогноза.
Тип задачи
Тип ML-задачи, которую решает сервис: например, классификация текстов, исправление опечаток. Тип задачи определяет базовый формат входных и выходных данных для сервиса. Сервисы, которые выполняют задачи одного и того же типа, являются взаимозаменяемыми.
Понятие сервиса
ML-сервис, сервис (ML от англ. Machine Learning)
Микросервис, ориентированный на решение ML-задач. ML-сервисы Caila отличаются от других микросервисов тем, что реализуют строго определенный контракт, состоящий из методов fit
и predict
.
Сервисы на платформе Caila реализуют различные функции. Это может быть, например, классификация текстов, исправление опечаток. Разработчики создают сервисы и публикуют их в каталоге. Затем сервисы запускаются на серверах Caila. Так они становятся доступны для использования через веб-интерфейс, API или SDK.
Сервис — это совокупность программного кода (образ), данных (дата-образ), параметров конфигурации и развертывания, настроек публичности, а также документации. Иными словами, сервис — это собранная, настроенная и запущенная программа, доступная для использования как самим разработчиком, так и другими пользователями Caila.
Типы сервисов
По степени готовности
Обучаемый сервис, базовый сервис
Сервис, реализующий функцию обучения — fit
. В результате обучения создается новый сервис. Обучаемые сервисы выступают в качестве генераторов других сервисов — обученных. Обучаемые сервисы сами по себе не могут быть использованы для выполнения какой-либо прикладной задачи.
Обученный сервис
Сервис, реализующий функцию выдач и прогноза — predict
. Обученные сервисы готовы к работе и могут быть использованы для выполнения прикладной задачи, например, классификации текстов, исправления опечаток.
Готовый сервис
Обученный сервис из каталога, также реализует функцию выдачи прогноза — predict
. Готовый сервис можно использовать без какой-либо настройки для выполнения прикладной задачи, например, классификации текстов, исправления опечаток.
Производный сервис
Сервис, который является копией какого-либо обучаемого сервиса. После создания такой сервис может быть обучен независимо от сервиса, на основе которого он был создан.
По необходимости обращаться к другим сервисам
Простой сервис
Сервис, который используется через метод predict
. Все данные, необходимые для работы такого сервиса, содержатся в образе и/или передаются в init
-кон фигурации сервиса и predict
-конфигурации.
Композитный сервис
Сервис, который выполняет вызовы к другим сервисам внутри своей логики. От разработчика сервиса требуется настройка доступа к сторонним сервисам. Для пользователей композитного сервиса он не отличается от простого — также выполняет какую-то прикладную задачу.
Конфигурация сервиса
Термин может использоваться в двух значениях: init
-конфигурация и полная конфигурация сервиса.
Init-конфигурация сервиса
JSON-объект, передаваемый сервису при запуске. Используется для передачи переменных, которые касаются логики работы сервиса. Например, режим генерации, количество итераций.
Полная конфигурация сервиса
Включает в себя:
init
-конфигурацию сервиса;- переменные среды (env-переменные);
- образ сервиса;
- дата-образы и параметры монтирования;
- ресурс-группы;
- лимиты (ограничения на использование ресурсов);
- другие настройки.
Переменные окружения, переменные среды, env-переменные
Переменные среды для запуска сервиса. Используются для передачи инфраструктурных переменных, например: адреса сервера, пароля доступа, номера видеокарты.
Образ сервиса
Docker-образ с программным кодом сервиса, собранным при помощи SDK.
Дата-образ
Docker-образ со статическими ресурсами, которые может использовать сервис. Например, дата-образы могут содержать веса нейронных сетей или другие объемные наборы данных, которые можно менять независимо от образа сервиса.
Образ сервиса может быть один, например, трансформер, а дата-образы разные: обученные для работы на разных языках или имеющие разный размер и разные требования к ресурсам.
Ресурс-группа
Пул вычислительных ресурсов, на которых может быть развернут сервис. Ресурс-группы могут быть как общими, так и выделенными для конкретного аккаунта.
Лимиты
Лимиты ресурсов, выделяемые инстансу сервиса: GPU, CPU, место на диске, память.
Обучение сервиса
Процесс обучения
Обучение сервиса на поданном на вход датасете и с учетом fit
-конфигурации. В результате процесса обучения Caila сохраняет файл или набор файлов в S3-хранилище, например, дамп весов обученного сервиса. В дальнейшем с этим набором данных можно запустить новый сервис. Сам процесс обучения может занять длительное время.
Сейчас в Caila реализовано два режима обучения: singleFit и multiFit. Режим определяет количество контейнеров, которые будут развернуты после запуска обучения.
singleFit, режим обучения
После запуска обучения будет развернут один контейнер с сервисом. Методы fit
и predict
будут последовательно выполняться в этом контейнере.
Как только метод fit
начинает выполняться, новый сервис загружается в память — обновляет своё состояние. Когда метод fit
будет выполнен, сервис станет доступным для predict
-запросов.
multiFit, режим обучения
После запуска обучения будет развернуто два или несколько контейнеров. Один будет использоваться только для обучения — вызова метода fit
, другие — только для вызова логики predict
. Контейнеры для predict
‑метода станут доступны только после завершения обучения.
После выполнения метода fit
обученный сервис запускается в отдельном контейнере. При этом при запуске этого сервиса ему передается ссылка на файлы, подготовленные в процессе выполнения метода fit
.
Датасет
Текстовый файл, который загружен в Caila и имеет определенный формат. Данные из такого файла используются для обучения сервиса.
Тип данных датасета
Формат данных, который нужно указать при загрузке датасета в интерфейсе Caila, например, json/texts
, plain/texts
, json/transformer-fit
. Caila поддерживает множество типов данных, а также автоматическую конвертацию между ними.