Jev быстро стала одной из самых обсуждаемых моделей в сфере ИИ. Это мощная модель классификации, которая работает быстро и стоит невероятно дешево.
Передайте Jev набор данных вместе с предопределенными вопросами, и она мгновенно выдаст результат в виде оценки, булева значения или ответа с выбором из нескольких вариантов.
У моделей классификации такого рода масса реальных сценариев применения: например, оценка интернет-магазином автоматических возвратов от клиентов, категоризация статей по машинному обучению или даже определение тональности текста.
Сегодня мы собираемся дообучить собственную модель классификации в стиле Jev, которая принимает состояние и возвращает ответ. наша цель — создать модель, способную быстро и эффективно отвечать на такие вопросы, как:
В этой статье мы расскажем, как дообучить и развернуть модель классификации, способную отвечать на вопросы подобного типа. К концу статьи у вас будет развернута собственная модель с API-эндопоинтом, который легко интегрировать в любое программное обеспечение.
Давайте начнем с подготовки вашего компьютера со всем необходимым для обучения модели.
Если вы предпочитаете сразу перейти к использованию классификатора и не тратить время на самостоятельное обучение модели, обратите внимание на together/Tev1-4B-experimental на бессерверной платформе Together.
Начало работы
Первое, что нам нужно сделать — клонировать репозиторий tev1 на GitHub.
После клонирования репозитория потребуется установить необходимые зависимости с помощью команды:
Последний шаг настройки — создание файла .env, в котором будут храниться необходимые переменные среды.
Скопируйте .env.example:
Отредактируйте новый файл .env и добавьте свой TOGETHER_API_KEY. Пока что вам не нужно добавлять JEV_MODEL. Оставьте это поле пустым.
Вот и всё. Теперь мы готовы к дообучению нашей модели.
Дообучение модели классификации
Следующий шаг — взять существующую языковую модель и превратить ее в модель, специализирующуюся на классификации. Для этого нам потребуется создать процесс дообучения, используя базовую модель и набор существующих датасетов.
В качестве базовой модели мы будем использовать Qwen3.5 4B, а в качестве датасетов — несколько наборов данных, размещенных на Hugging Face.
Выбор датасетов
Мы возьмем выборку из 38 000 вопросов из различных датасетов, каждый из которых специализируется на определенном типе классификации.
Вот используемые датасеты и количество примеров для каждого из них:
Мы используем всего 38 340 примеров, чтобы снизить затраты на дообучение. Обучение на датасете такого размера обойдется всего примерно в 17,0 долларов, в то время как обучение на более крупных наборах данных стоит дороже и занимает больше времени.
Нормализация данных
Теперь, когда мы выбрали шесть источников данных, нам нужно сделать выборку ограниченного количества вопросов из них, а также нормализовать эти вопросы, чтобы они все имели одинаковый формат.
Репозиторий содержит ряд скриптов на Python, которые автоматизируют этот процесс.
Сначала загрузите датасеты:
Затем сделайте выборку и нормализуйте вопросы, которые мы будем использовать для обучения:
При выполнении этих команд вы должны увидеть вывод без каких-либо ошибок.
Теперь, когда у нас есть тренировочные датасеты, мы готовы перейти к следующему шагу и дообучить модель классификации.
Обучение модели
Мы можем запустить задачу дообучения с помощью сервиса Fine-tuning от Together AI.
Существует скрипт на Python, который поможет автоматизировать этот процесс. Запустите его с помощью команды:
Этот скрипт выполняет ряд шагов, необходимых для обучения модели. Сначала он загружает тренировочные данные в Together, а затем запускает задачу дообучения, используя датасет и соответствующие параметры.
После запуска задачи дообучения скрипт выведет идентификатор (ID) задачи обучения.
Вы можете проверить статус обучения с помощью интерфейса командной строки (CLI) Together:
Вы также можете проверить статус задачи обучения с помощью панели управления Fine-тным на Together AI.
Задача обучения займет около 25 минут, после чего у нас будет модель, готовая к классификации.
Развертывание модели
Прежде чем мы сможем развернуть модель, нам нужно узнать ее имя из задачи дообучения. Запустите следующую команду:
Эта команда выведет model_output_name модели. Мы используем это имя для развертывания модели на выделенном эндпоинте (Dedicated endpoint) в Together AI.
Выделенные эндпоинты отвечают за предоставление доступа к дообученной модели через HTTP-сервер, чтобы мы могли отправлять к ней запросы.
Выполнение этой команды вернет информацию о вашем новом эндпоинте:
После создания вы увидите имя эндпоинта в выводе. Вы также можете найти дополнительную информацию об эндпоинте на панели управления выделенными эндпоинтами Together AI.
Укажите имя эндпоинта в вашем файле .env в качестве JEV_MODEL. Например, если ваш эндпоинт называется account_855c/Qwen3.5-4B-jev-efde5bd5-068f756b, то в вашем файле .env должно быть следующее:
Вот и всё. Ваша модель теперь развернута на Together AI и готова отвечать на любые вопросы классификации.
В следующем разделе мы узнаем, как отправлять запросы к нашей модели.
Запросы к модели
Репозиторий кода содержит несколько тестовых случаев для проверки правильности работы модели. Давайте используем нашу модель классификации, чтобы определить намерение вопроса клиента по поводу его подписки:
Сообщение клиента: Привет, я проверил выписку, и ваша компания списала с моей карты плату за октябрьскую подписку дважды. Обе суммы составляют 19,99 долларов в один и тот же день. Я не менял свой тарифный план.
Поскольку наша модель была дообучена на входных и выходных данных в формате JSON, нам нужно отформатировать этот вопрос и возможные варианты ответа с помощью структуры данных JSON следующим образом:
И мы можем отправить эту структуру данных нашей модели для классификации с помощью следующей команды:
Файл examples/charge-dispute.json содержит наш пример JSON из примера выше, а decide.py — это скрипт на Python, который отправляет его нашей дообученной модели.
Как только мы отправим запрос, мы быстро увидим ответ модели:
Это именно то, что мы хотели увидеть. Это не только правильный ответ, но и правильный формат вывода, которому модель научилась на наших тренировочных данных.
В папке examples/ есть еще несколько примеров. Эти примеры включают вопросы, связанные с намерениями, пониманием «да/нет», проверкой логических правил (boolean policy) и анализом тональности. Попробуйте изменить их и запустить для вашей развернутой модели.
Примечание: Наш пример скрипта автоматически передает системный промпт и настройки инференса. При прямом вызове API или использовании Chat Playground явно задайте temperature=0, max_tokens=8 и chat_template_kwargs={"enable_thinking": false}. Текущий публичный эндпоинт не добавляет эти параметры по умолчанию автоматически.
Используйте этот системный промпт:
Заключение
После завершения экспериментов с новой моделью вы можете отключить выделенный эндпоинт с помощью команды:
Чтобы использовать модель снова позже, перезапустите выделенный эндпоинт или воспользуйтесь хостинговой версией together/Tev1-4B-experimental на нашей бессерверной платформе.
Потратив около 17 долларов на обучение и двадцать пять минут ожидания, вы получаете собственную дообученную модель классификации, развернутую за HTTP-эндпоинтом, которая отвечает в том формате, которого ожидает ваше программное обеспечение.









