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

Процесс обучения сервиса

Концепция обучения в Caila

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

Процесс обучения

В результате обучения создаются две сущности:

  • Состояние (стейт) обученного сервиса — файлы в S3-хранилище, получаемые в процессе обучения. Это могут быть, например, дампы нейронных сетей, веса SVM или просто JSON-файлы с исходным датасетом. Идентификатор состояния — путь в S3-хранилище.

  • Обученный сервис, настроенный на работу с этим состоянием. Состояние, а именно путь к папке в S3-хранилище, передается через env-переменную. Можно запускать обучение на уже созданном производном сервисе. В этом случае настройки сервиса остаются неизменными, но все инстансы перезапускаются с новым состоянием.

Режимы обучения

В Caila реализованы два режима обучения, и они отличаются тем, в каком пространстве выполняется обучение и в какой момент создаётся производный сервис.

  1. Сначала создаётся производный сервис, и в нём выполняется обучение. Это режим singleFit. Тренировка выполняется в аккаунте пользователя и на ресурсах пользователя. Если сервис, например для файнтюна LLM, требует больших мощностей, то они должны быть выделены в аккаунте пользователя.
  2. Сначала выполняется обучение и создаётся чекпоинт. Потом, с этим чекпоинтом создаётся производный сервис. Этот режим носит название multiFit. Обучение выполняется на ресурсах в аккаунте владельца базового сервиса. В этом случае операция обучения может быть платной для конечного пользователя.

Этапы обучения при разных режимах

singleFit

№ шагаОписаниеСтатус *
1Начало обучения.INITIAL
2Генерация нового значения modelDir и извлечение предыдущего. Caila передаёт информацию о предыдущем обученном состоянии в метод fit, чтобы сократить время на повторное обучение.
modelDir — это путь к папке в S3-хранилище, куда сервис сохраняет результат обучения.
INITIAL
3Извлечение конфигурации обучения, если она была передана в качестве идентификатора.INITIAL
4Запуск инстанса производного сервиса в выделенном режиме. В нём инстанс сможет обработать вызов fit, но не будет принимать predict-запросы.INITIALWAIT_FOR_START
5Ожидание запуска нового инстанса.WAIT_FOR_START
6Получение контента датасета в требуемом формате.WAIT_FOR_START
7Передача вызова fit в сервис. В параметрах вызова передаются:
modelDir для сохранения нового сервиса.
previousModelDir, указывающий на предыдущий обученный сервис.
trainData и targetsData, извлеченные из датасета.
config в формате JSON.
datasetInfo — идентификатор, имя и формат передаваемого датасета.
targetServiceInfo — идентификатор и имя создаваемого сервиса.
WAIT_FOR_STARTWAIT_FOR_FIT
8Ожидание выполнения fit.WAIT_FOR_FIT
9Перевод инстанса из выделенного режима в обычный. После этого новый инстанс начинает принимать predict-запросы.WAIT_FOR_FIT
10Удаление всех старых инстансов. При этом Caila предварительно фиксирует их количество.WAIT_FOR_FIT
11Запуск новых инстансов в том количестве, сколько было старых.WAIT_FOR_FITSUCCESS

multiFit

№ шагаОписаниеСтатус *
1Начало обучения.INITIAL
2Генерация нового значения modelDir и извлечение предыдущего. Caila передаёт информацию о предыдущем обученном состоянии в метод fit, чтобы сократить время на повторное обучение.
modelDir — это путь к папке в S3-хранилище, куда сервис сохраняет результат обучения.
INITIAL
3Извлечение конфигурации обучения, если она была передана в качестве идентификатора.INITIAL
4Проверка, что есть активный инстанс обучаемого сервиса. Если такого нет, то его запуск и ожидание запуска.INITIALWAIT_FOR_TRAINING_CONTAINER
5Поиск датасета и получение его контента в требуемом формате.WAIT_FOR_TRAINING_CONTAINER
6Выдача аккаунту-владельца обучаемого сервиса разрешения на доступ к S3-бакету того аккаунта, который запустил обучение.WAIT_FOR_TRAINING_CONTAINER
7Передача вызова fit в обучаемый сервис, который указан в trainingModelId. В параметрах вызова передаются:
modelDir для сохранения нового сервиса.
previousModelDir, указывающий на предыдущий обученный сервис.
trainData и targetsData, извлеченные из датасета.
config в формате JSON.
datasetInfo — идентификатор, имя и формат передаваемого датасета.
targetServiceInfo — идентификатор и имя создаваемого сервиса, а также имя S3-бакета, соответствующего создаваемому сервису.
WAIT_FOR_TRAINING_CONTAINERWAIT_FOR_FIT
8Ожидание выполнения fit.WAIT_FOR_FIT
9Обновление параметров производного сервиса, в том числе значения modelDir.WAIT_FOR_FIT
10Запуск нового инстанса производного сервиса.
Если существовали старые инстансы, то вначале запускается новый инстанс, а старые удаляются поочередно. В итоге количество новых инстансов будет равно количеству удаленных.
WAIT_FOR_FITWAIT_FOR_TARGET_CONTAINER
11Отзыв доступа к S3-бакету того аккаунта, который запустил обучение.WAIT_FOR_TARGET_CONTAINERSUCCESS