Перейти к основному содержимому

Основные понятия и сущности

Общие

API-токен

Аутентификационный токен, необходимый для доступа к REST API. Его можно получить в интерфейсе на странице Мои сервисыAPI-токены.

При HTTP-запросе API-токен передается в заголовке MLP-API-KEY, а в gRPC-запросе — в параметре authToken.

Метод fit

Метод, предназначенный для обучения сервиса. Принимает на вход набор данных (датасет) и опционально конфигурацию, затем выполняет обучение. В качестве входных данных могут использоваться, например, примеры интентов и их метки.

Fit-конфигурация, конфигурация обучения

Набор параметров для обучения с помощью метода fit.

При запуске обучения можно задать fit-конфигурацию вручную в формате JSON либо выбрать готовую из списка. Набор возможных конфигураций задается в настройках сервиса.

СервисПримеры fit-конфигураций
cross-validation-for-intentshf_labse-linear, roberta-linear, roberta-metric, transformer-classifier-dl4j
transformer-classifier-dl4jroberta, 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 поддерживает множество типов данных, а также автоматическую конвертацию между ними.