Представьте, что у вас есть миллионы товаров, и у каждого из них должна быть своя карточка: максимально подробная, точная и понятная. Именно от этого во многом зависит, насколько легко покупатель найдёт нужный ему товар. Заполнять столько карточек вручную — слишком долго и дорого. Поэтому мы используем ML-инструменты, чтобы упростить этот процесс. Меня зовут Саша Воронцов, я руководитель службы ML в Маркете. Сейчас я расскажу, как мы внедрили в Маркет YandexGPT, чтобы облегчить жизнь продавцам.
Формализация характеристик

Одна из первых и самых важных задач — правильно заполнить характеристики товаров. В Маркете этот процесс называется формализацией, а в мире машинного обучения — NER (Named Entity Recognition, распознавание именованных сущностей).
Когда продавец загружает товар, он добавляет к нему описание. Но чаще всего оно далёко от идеала: кто-то перечисляет характеристики в хаотичном порядке, кто-то пишет их в виде сплошного текста без структуры, а иногда встречается и вовсе неформатированное полотно из слов.

Но нам важно, чтобы всё было чётко и единообразно. В Маркете характеристики стандартизированы: у нас есть сотни тысяч уникальных атрибутов — от артикула и бренда до цвета, габаритов и технических параметров. Разобрать этот хаос и превратить его в структурированные данные — задача непростая, но крайне важная. Именно поэтому мы используем машинное обучение.
Традиционный подход
Раньше для обработки характеристик товаров мы использовали собственный инструмент — Формализатор. Он появился вместе с Маркетом и за годы работы оброс настолько сложной логикой, что поддерживать его стало настоящим испытанием.
Как он работал? У каждой из тысяч товарных категорий был свой список допустимых характеристик. Эти параметры собирались в префиксное дерево, а затем алгоритм пытался сопоставить их с каждым словом в заголовке и описании товара.
Проблема была в том, что Формализатор буквально перебирал все возможные характеристики для каждой категории. Это требовало огромных вычислительных ресурсов и делало систему тяжеловесной. Поддержка тоже превратилась в головную боль: категории постоянно менялись, а любое обновление семантики означало долгую и трудоёмкую доработку.
В какой-то момент стало ясно: так дальше работать нельзя. Мы решили отказаться от Формализатора и заменить его на YandexGPT. Это не только упростило поддержку и избавило нас от громоздкой логики, но и сделало систему гибче и понятнее. К тому же, старый сервис зависел от людей, которые знали его устройство с самого начала, а большинство из них к тому времени уже покинули компанию. Теперь работа с характеристиками стала быстрее, точнее и гораздо удобнее.
Новый подход
В Маркете есть несколько тысяч товарных категорий. Они бывают двух типов: навигационные — те, что пользователь видит в каталоге и внутренние — которые используются в базе данных. По сути это одно и то же, но исторически они существуют отдельно.

У каждой категории есть два списка параметров:
- Разрешённые — любые характеристики, которые могут быть у товара.
- Обязательные — без них товар не попадёт в продажу.
Правильное заполнение параметров напрямую влияет на видимость товара. Если данные указаны не полностью или с ошибками, товар становится труднее найти через фильтры. А значит, он теряет показы и потенциальных покупателей.
Чтобы упростить формализацию, мы подаём на вход YandexGPT два типа данных:
- Всё текстовое описание товара (тайтлы, характеристики, описание и т. д.).
- Список параметров, разрешённых для его категории.
Так мы заранее знаем, какие характеристики могут быть у товара, и учим модель извлекать только те, что реально присутствуют.
Но при работе с реальными данными всегда есть сложности:
- Ошибки в описаниях. Продавцы часто загружают тексты с опечатками, противоречиями и даже копиями характеристик из других товаров.
- Постоянные изменения категорий. Мы постепенно переходим к более узким и точным категориям, а из-за этого существенно меняются товарное дерево и список разрешённых и обязательных параметров.
- Дорогая разметка. Специфика состоит в том, что асессоры, которые размечают контент Маркета, — это специально обученные эксперты с доступом к нашей базе знаний. Их обучение и работа стоят дорого.
Обучение
Чтобы YandexGPT решал наши задачи максимально эффективно, мы используем три подхода. Каждый из них имеет свои плюсы и минусы, и выбор зависит от сложности задачи, ресурсов и нужной нам точности.
1. Чистый промптинг — просто задаём правильные вопросы
Самый быстрый и простой способ — не обучать модель вообще, а просто подбирать удачные формулировки запросов. Иногда это работает: если промпт составлен хорошо, нейросеть может выдавать вполне приличные результаты.
Но есть нюанс: предсказуемости мало. Чем мощнее модель, тем лучше она справляется даже с сырыми запросами, но в нашем случае данных слишком много, а параметры слишком сложные. Так что чистый промптинг — это скорее экспериментальный метод, чем рабочее решение.
2. P-tuning — обучение на промптах
Более продвинутый вариант — P-tune. Здесь мы не просто задаём вопросы, а обучаем модель на небольшом количестве данных (обычно несколько тысяч), не меняя её основные веса. По сути, мы просто настраиваем обработку входных промптов.
Этот метод хорош тем, что он быстрый и относительно недорогой. Его можно реализовать даже небольшой командой: достаточно подготовить несколько тысяч примеров, и модель начнёт выдавать нужные результаты. Например, так мы уже генерируем тексты для рекламы и инфографики.
3. Fine-tuning — полное переобучение модели
Если задача сложная и требует высокой точности, используется fine-tuning — полное обучение модели на большом датасете — от 10 тысяч примеров и больше. Здесь уже изменяются сами веса модели, а процесс требует серьёзных вычислительных ресурсов.
Главный минус — дороговизна. Чем больше данных, тем выше затраты. Например, если разметка одной задачи стоит 200+ рублей, а обучающий датасет насчитывает десятки тысяч примеров, бюджет выходит внушительным.
Так что же лучше?
На практике мы используем комбинацию всех трёх методов, подбирая баланс между точностью, затратами и скоростью внедрения. Где-то хватает простого промптинга, где-то нужен P-tuning, а для сложных задач, требующих максимальной точности, подключаем fine-tuning

Выводы и планы на будущее
Формализация — одна из ключевых задач при дообучении модели. Мы меняем все веса, прогоняем тысячи итераций, и каждый раз сталкиваемся с новой сложностью: у нас огромное количество категорий и ещё больше параметров. Чтобы модель научилась корректно извлекать информацию, она должна увидеть примеры из каждой категории, причём во всех возможных вариациях. Это делает процесс обучения непростым, но результат того стоит.
Точность модели уже превышает 98%, а по количеству найденных параметров она не уступает старому «Формализатору». Сейчас мы работаем над дополнительными итерациями обучения, чтобы учесть изменения в инфомодели и параметрах — чем гибче модель, тем лучше она справляется с новыми данными.
Раньше поддержка сервиса требовала много ресурсов. Разработчикам приходилось постоянно обновлять категорийную семантику, а производительность системы должна была соответствовать строгим SLA.
Теперь нагрузка на разработку заметно снизилась, а зависимость от устаревшего кода ушла в прошлое. Правда, вычислительные ресурсы мы не сократили, а перераспределили: вместо CPU и памяти в рантайме теперь используем GPU для YaGPT. Следующая цель — оптимизировать поток данных под новую модель, чтобы сделать её работу ещё эффективнее.
Также важное направление — это выявление ошибок в карточках товаров. Мы уже нашли массу случаев, когда параметры в заголовке и описании противоречили друг другу. Теперь учим модель не просто замечать такие несоответствия, но и подсказывать, как их исправить. Так мы сможем сделать сервис ещё лучше и удобнее для пользователей.