Fine-tuning
Compressa позволяет дообучить LLM модель быстро и эффективно с помощью LoRA/QLoRA адаптеров. Дообучение позволяет улучшить качество ответов на конкретной бизнес-задаче, сфокусировать на определенной теме или задать формат/стиль ответов.
Прежде чем переходить к дообучению, рекомендуется провести эксперименты с выбором оптимальной модели и промптингом.
Подготовка данных
Для дообучения вам понадобятся диалоговые данные. Вам необходимо:
-
Подготовить примеры целевых диалогов
-
Отформатировать их в формате JSON Lines, где каждая строка содержит следующий контент:
{
"messages": [
{
"role": "user",
"content": "<USER MESSAGE 1>"
},
{
"role": "bot",
"content": " <BOT'S RESPONSE>"
},
{
"role": "user",
"content": "<USER MESSAGE 2>"
},
{
"role": "bot",
"content": " <BOT'S RESPONSE2>"
},
]
}
Каждый диалог может включать любое количество сообщений. Для эффективного дообучения набор данных должен содержать не менее 100 примеров.
Дообучение
После подготовки данных можно запустить процесс обучения через UI интерфейс Compressa Fine-tuning ил и с использованием REST API. Ниже мы рассмотрим оба этих варианта.
Дообучение через UI
URL: http://ваш_адрес:8080/finetune/
(в поле токен нужно вставить токена админа)
Чтобы дообучить модель через UI интерфейс, необходимо:
- Выбрать LLM модель в левой панели
- Ввести название для вашей дообученной версии
- Загрузить jsonl файл в форму
- Нажать кнопку Finetune
Процесс дообучения можно отслеживать в дэшборде AIM. Для этого нажмите Training Dashboard после запуска процесса.
В дэшборде вы можете выбрать конкретный запуск процесс дообучения по названию, которое вы указали на предыдущем шаге, и посмотреть ключевые метрики
Дообучение через REST API
Управление датасетами
GET /v1/datasets/
Получить список доступных датасетов.
Пример запроса:
curl -X 'GET' \
'http://ваш_адрес:8080/api/v1/datasets/' \
-H 'accept: application/json'
Пример ответа:
[
{
"id": "01be6d68-f790-434b-aa6d-5bd492aef202",
"name": "train.jsonl",
"s3_path": "01be6d68-f790-434b-aa6d-5bd492aef202/metadata.json",
"description": null
},
{
"id": "077adb68-2b0e-481b-bd13-e8807adf625f",
"name": "train.jsonl",
"s3_path": "077adb68-2b0e-481b-bd13-e8807adf625f/metadata.json",
"description": "My dataset 2"
}
]
POST /v1/datasets/upload/
Загрузить новый датасет (только ‘jsonl’ формат).
Параметры:
- query:
description
- dataset description
Тело запроса:
- multipart/form-data:
file
Пример запроса:
curl -X 'POST' \
'http://ваш_адрес:8080/api/v1/datasets/upload/?description=My%20Description' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@train.jsonl'
Пример ответа:
{
"id": "string",
"name": "string",
"s3_path": "string",
"description": "string"
}
GET /v1/datasets/{dataset_id}/
Загрузить конкретный датасет по id dataset_id
Параметры:
- path:
dataset_id
Пример запроса:
curl -X 'GET' \
'http://ваш_адрес:8080/api/v1/datasets/01be6d68-f790-434b-aa6d-5bd492aef202/' \
-H 'accept: application/json'
Пример ответа:
file
Дообучение модели
GET /v1/finetune/models/
Получить список моделей, доступных для дообучения
Пример запроса:
curl -X 'GET' \
'http://ваш_адрес:8080/api/v1/finetune/models/' \
-H 'accept: application/json'
Пример ответа:
[
{
"model_id": "TheBloke/mixtral-8x7b-v0.1-AWQ",
"adapter": false,
"base_model_id": null
},
{
"model_id": "NeuralNovel/Mistral-7B-Instruct-v0.2-Neural-Story",
"adapter": false,
"base_model_id": null
}
]
POST /v1/finetune/
Запустить дообучение модели на датасете
Тело запроса:
{
"name": "string",
"model_id": "string",
"dataset_id": "string"
}
name
- name of trainingmodel_id
- id of model to traindataset_id
- id of dataset to train on
Пример запроса:
curl -X 'POST' \
'http://ваш_адрес:8080/api/v1/finetune/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "My Adapter Training",
"model_id": "NousResearch/Llama-2-7b-chat-hf",
"dataset_id": "01be6d68-f790-434b-aa6d-5bd492aef202"
}'
Пример ответа:
{
"id": "74280be7-4723-475d-89ae-346e9017990e",
"name": "FT_NousResearch/Llama-2-7b-chat-hf_01be6d68-f790-434b-aa6d-5bd492aef202",
"status": "CREATED",
"started_at": "2024-03-21T10:40:40.928442"
}
GET /v1/finetune/status
Получить статус текущего процесса дообучения