Процесс обучения сервиса
Концепция обучения в Caila
Caila позволяет создавать сервисы на основе пользовательских данных путем обучения или дообучения сервисов. В процессе обучения участвуют обучаемый сервис, датасет и конфигурация обучения:
В результате обучения создаются две сущности:
-
Состояние (стейт) обученного сервиса — файлы в S3-хранилище, получаемые в процессе обучения. Это могут быть, например, дампы нейронных сетей, веса SVM или просто JSON-файлы с исходным датасетом. Идентификатор состояния — путь в S3-хранилище.
-
Обученный сервис, настроенный на работу с этим состоянием. Состояние, а именно путь к папке в S3-хранилище, передается через env-переменную. Можно запускать обучение на уже созданном производном сервисе. В этом случае настройки сервиса остаются неизменными, но все инстансы перезапускаются с новым состоянием.
Режимы обучения
В Caila реализованы два режима обучения, и они отличаются тем, в каком пространстве выполняется обучение и в какой момент создаётся производный сервис.
- Сначала создаётся производный сервис, и в нём выполняется обучение. Это режим singleFit. Тренировка выполняется в акк аунте пользователя и на ресурсах пользователя. Если сервис, например для файнтюна LLM, требует больших мощностей, то они должны быть выделены в аккаунте пользователя.
- Сначала выполняется обучение и создаётся чекпоинт. Потом, с этим чекпоинтом создаётся производный сервис. Этот режим носит название multiFit. Обучение выполняется на ресурсах в аккаунте владельца базового сервиса. В этом случае операция обучения может быть платной для конечного пользователя.
Этапы обучения при разных режимах
singleFit
№ шага | Описание | Статус * |
---|---|---|
1 | Начало обучения. | INITIAL |
2 | Генерация нового значения modelDir и извлечение предыдущего. Caila передаёт информацию о предыдущем обученном состоянии в метод fit , чтобы сократить время на повтор ное обучение.modelDir — это путь к папке в S3-хранилище, куда сервис сохраняет результат обучения. | INITIAL |
3 | Извлечение конфигурации обучения, если она была передана в качестве идентификатора. | INITIAL |
4 | Запуск инстанса производного сервиса в выделенном режиме. В нём инстанс сможет обработать вызов fit , но не будет принимать predict -запросы. | INITIAL → WAIT_FOR_START |
5 | Ожидание запуска нового инстанса. | WAIT_FOR_START |
6 | Получение контента датасета в требуемом формате. | WAIT_FOR_START |
7 | Передача вызова fit в сервис. В параметрах вызова передаются:• modelDir для сохранения нового сервиса.• previousModelDir , указывающий на предыдущий обученный сервис.• trainData и targetsData , извлеченные из датасета.• config в формате JSON.• datasetInfo — идентификатор, имя и формат передаваемого датасета.• targetServiceInfo — идентификатор и имя создаваемого сервиса. | WAIT_FOR_START → WAIT_FOR_FIT |
8 | Ожидание выполнения fit . | WAIT_FOR_FIT |
9 | Перевод инстанса из выделенного режима в обычный. После этого новый инстанс начинает принимать predict -запросы. | WAIT_FOR_FIT |
10 | Удаление всех старых инстансов. При этом Caila предварительно фиксирует их количество. | WAIT_FOR_FIT |
11 | Запуск новых инстансов в том количестве, сколько было старых. | WAIT_FOR_FIT → SUCCESS |
multiFit
№ шага | Описание | Статус * |
---|---|---|
1 | Начало обучения. | INITIAL |
2 | Генерация нового значения modelDir и извлечение предыдущего. Caila передаёт информацию о предыдущем обученном состоянии в метод fit , чтобы сократить время на повторное обучение.modelDir — это путь к папке в S3-хранилище, куда сервис сохраняет результат обучения. | INITIAL |
3 | Извлечение конфигурации обучения, если она была передана в качестве идентификатора. | INITIAL |
4 | Проверка, что есть активный инстанс обучаемого сервиса. Если такого нет, то его запуск и ожидание запуска. | INITIAL → WAIT_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_CONTAINER → WAIT_FOR_FIT |
8 | Ожидание выполнения fit . | WAIT_FOR_FIT |
9 | Обновление параметров производного сервиса, в том числе значения modelDir . | WAIT_FOR_FIT |
10 | Запуск нового инстанса производного сервиса. Если существовали старые инстансы, то вначале запускается новый инстанс, а старые удаляются поочередно. В итоге количество новых инстансов будет равно количеству удаленных. | WAIT_FOR_FIT → WAIT_FOR_TARGET_CONTAINER |
11 | Отзыв доступа к S3-бакету того аккаунта, который запустил обучение. | WAIT_FOR_TARGET_CONTAINER → SUCCESS |