LLMки, задумывашие отобрать работу разметчиков
LLMки, задумывашие отобрать работу разметчиков

Привет! Использование ИИ в разметке данных для него же — уже скорее необходимая потребность, нежели что-то удивительно новое. Разного рода экспериментами с авторазметкой данных нейронками мы занимаемся последние полгода и результаты — нравятся.

В данной статье я детально расскажу о нашем самом первом эксперименте с LLM в разметке данных для ИИ и proof-of-concept их годноты использования в реальных задачах, а в процессе попробую ответить на большой вопрос — так заменят ли LLM людей в разметке данных?

Давайте вооружимся GigaChat, chatGPT, Gemini и начнем!

Как возникла идея попробовать LLM в разметке

Большие языковые модели (LLM) — очень мощные штуки, которые позволяют решать огромное количество задач, и нашей идеей было проверить, насколько они готовы справляться с разного рода задачами именно по разметке данных.

Почему вообще возник такой интерес — в разметке часто бывают не очень большие (или просто несложные) задания, под которые уже вроде бы есть какая-то готовая библиотека, но полноценно полагаться на нее не хочется, так как либо в задании есть особенные нюансы, требующие подпилки напильничком, либо нам нужна абсолютная уверенность в точности результата. Цеплять одну либу для прогона, вторую для кросс-валидации часто бывает бессмысленно в силу объемов и нецелесообразности трудозатрат.

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

А что по галлюцинациям?

Про LLM любят говорить, что они часто галлюционируют и потому целиком полагаться на их ответ нельзя. В целом, это правда, но если копнуть глубже, то у кого они этого понахватались? Они научились этому у людей, чьи ответы на что-либо зачастую тоже нельзя считать идеальными, ибо люди находятся в разных состояниях, когда делают работу (особенно такую монотонную, как разметка): устают, просто не вовлечены, находятся под давлением/стрессом, и так далее.

Поэтому идеальная разметка данных делается [в среднем] двумя путями (или их комбинациями): мы либо делаем несколько этапов перепроверки друг за другом, либо даем одно и то же нескольким людям и усредняем их ответ. Поэтому «галлюцинации» в широком смысле слова — это то, с чем мы работаем каждый день, а уж галлюцинация это человека или LLM — без разницы.

Верить никому нельзя, галлюцинации бывают у всех
Верить никому нельзя, галлюцинации бывают у всех

Берем датасет, но убираем людей

Идея заключалась в том, чтобы попытаться решить реальную задачу с текстом без участия людей.

Покопавшись в архивах нашей платформы, мы нашли похожее задание — определение фамилии в строке с потенциальной ошибкой в написании.

Датасет состоял из строк (иногда целиком из полного ФИО, иногда из имени с фамилией) с потенциальными опечатками, а так же двумя предсказанными вариантами. Природа ошибок датасета могла быть разная — это могла быть именно опечатка в исходном документе, а могла быть проблема его распознавания (OCR из скана или автоматической транскрибацией из аудио) или что-то совершенно иное.

В данном случае мы не углубляемся в то, какую задачу и каким способом решали коллеги, нам важно, что это была живая потребность и заказчик пожелал прогнать ее через людей-валидаторов.

Интерфейс разметчика (точнее, просмотра его ответов) в исходной задаче
Интерфейс разметчика (точнее, просмотра его ответов) в исходной задаче

Итак, у нас уже был датасет и эталонная разметка к нему. Разметка шла с перекрытием 3 (то есть, мы давали одну и ту же запись трем разным людям), после чего при 100% совпадающем ответе мы принимали его как правильный.

Поэтому мы решили взять из датасета 10 тысяч записей (в исходном было 250 тыс.), прогнать их через LLMки с таким же перекрытием (то есть, как с людьми, но с LLM, ну), так же усреднить результаты и сравнить их с результатами людей.

Каждая запись идет трем разметчикам (или кибер-разметчикам) и берется их средний ответ
Каждая запись идет трем разметчикам (или кибер-разметчикам) и берется их средний ответ

Выбор пал на GigaChat Pro (потому что он нам родной), chatGPT 4 и Gemini Pro первого издания. Предвещая вопросы об именно таком наборе — это просто было то, что нам на тот момент было проще подключить, для проверки эксперимента и гипотезы — этого хватало. В конце я еще косвенно вернусь к этому списку.

Подготовка промптов

Первым делом нужно было «прицелиться» с правильным промптом, то есть обозначить что именно мы передаем и что хотим получить в ответ. Нам предстоит автоматически сравнивать ответы LLMок между собой, поэтому чем точнее и «чище» будет ответ, тем лучше. LLM любят добавлять всякое к ответу («вот ваш ответ», «конечно» и прочее словоблудие, мешающее нашей задаче), поэтому это надо было выжигать каленым промптом.

Правильно подготовленный промпт под правильно декомпозированную и проанализированную задачу — это прям серьезная заявка на успех.

Прежде чем пускаться во все тяжкие со всем датасетом (побитом на некие батчи для паралеллизации и укладывания в контекст любой модели), лучше полностью отработать всю механику, в том числе с оценкой визуального результата. То есть, взять небольшой визуальный кусочек данных, отправить его в LLM (мы тестировались на гигачате) и глазами посмотреть на результат. Если есть очевидные детские ошибки, то попробовать доуточнить промпт, провести такую итерацию пару раз, если потребуется.

Полученный промпт: [фамилию оставляю, так как это и есть задание, а имя с отчеством поменял на везде статическое, на результат не влияет]

Я передаю тебе csv-файл (разделитель tab) со следующими полями: 
input_string (строка, внутри которой содержится фио человека на русском языке),
gender (мужчина - m и женщина - f). Ты должен на основе поля gender посмотреть
строку input_string, посмотреть предлагаемые варианты (variant_1 или variant_2;
одного из них может не быть) и указать правильный ответ (можешь предложить свой)
в поле result. Строка с фио может содержать опечатки. 
Не добавляй никаких слов к ответу, верни просто csv файл с перечислением.

id	input_string	gender	variant_1	variant_2
1	Дмтриева Василиса Васильевна	f	Дмитриева	Дитриева
2	Киседлев Василий Васильевич	m	Киседлев	Киселев
3	Леоньтев Василий	m	Леонтьев	
4	Диктерв Василий Васильевич	m	Диктерев	Диктеов
5	Зимлина Василиса Васильевна	f	Землина	Зимина
6	Покровски Василий Васильевич	m	Покровский	
7	Разумува Василиса Васильевна	f	Разумова	Разомова
8   Голгова Василиса Васильевна	f	Долгова	Голгова   
9   Белолипце Василий Васильевич	m	Белолипцев	Белолипец   
10   Гуржеи Василиса Васильевна	f	Гуржева	Гуржей   

Верни файл из полей id	result

После чего нужно с нашим промптом последовательно опросить всех LLM-разметчиков, соединить результаты и оценить их. То есть все точно так же, как с людьми.

У нас на платформе единое окно с общим интерфейсом с подключенными моделями, поэтому можно показать на визуальном примере:

Визуал для проверки промптов и отладки результата с подключенными разными моделями
Визуал для проверки промптов и отладки результата с подключенными разными моделями

Автоматизация такого действия на питоне или любом языке пишется не очень сложно, у нас на проекте ее можно собрать просто в вебе, после чего дождаться уведомления об окончании процесса и скачать результаты.

Анализ результатов и важность их отсмотра

Анализ результатов нас интересует вот в каких разрезах:

  1. Насколько LLM в принципе одинаково выполнили работу (в разметке это называется «уверенность в ответе»)

  2. Насколько агрегированный результат от LLM совпадает с результатом людей

И обязательный отсмотр части совпавших ответов и части несовпавших.

Визуальная картиночка вместо тысячи слов:

Победила дружба! ̶к̶о̶н̶е̶ч̶н̶о̶ ̶н̶и̶к̶а̶к̶а̶я̶ ̶д̶р̶у̶ж̶б̶а̶ ̶н̶е̶ ̶п̶о̶б̶е̶д̶и̶л̶а̶ ̶и̶б̶о̶ ̶к̶т̶о̶-̶т̶о̶ ̶о̶с̶т̶а̶н̶е̶т̶с̶я̶ ̶б̶е̶з̶ ̶р̶а̶б̶о̶т̶ы̶̶ х̶а̶х̶а̶х̶а̶
Победила дружба! ̶к̶о̶н̶е̶ч̶н̶о̶ ̶н̶и̶к̶а̶к̶а̶я̶ ̶д̶р̶у̶ж̶б̶а̶ ̶н̶е̶ ̶п̶о̶б̶е̶д̶и̶л̶а̶ ̶и̶б̶о̶ ̶к̶т̶о̶-̶т̶о̶ ̶о̶с̶т̶а̶н̶е̶т̶с̶я̶ ̶б̶е̶з̶ ̶р̶а̶б̶о̶т̶ы̶̶ х̶а̶х̶а̶х̶а̶

В целом, отличный результат. На этой визуальной выборке результат равен, на разной большой дистанции он либо равен, либо с очень небольшим отрывом уходит людям.

Прокомментирую скриншот: кибер-спортсмены договорились между собой в 8 случаях из 10, так же как и люди. Здесь забавно то, что есть строки, в которых LLM или люди договорились между собой единогласно, но не попали в единогласный ответ другой стороны.

Поэтому обязательный отсмотр части результатов постфактум очень важен. У людей бывает так, что все отвечающие одновременно могут ошибиться, и это не то чтобы совсем редкий черный лебедь: задачи в разметке ставятся далеко не всегда идеально и однозначно, а количество «пограничных» ситуаций — огромно, и почти никогда не налажена хорошая и быстрая связь между заказчиком и исполнителями.

Если так умеют ошибаться люди, то точно так же будут ошибаться LLM-ассесоры, поэтому даже если мы набрали высокую общую уверенность в ответах, без частичного отсмотра и валидаций — это пока просто цифры.

Выводы о применение LLM в разметке

Наша задача изначально была проверить гипотезу — и вот она проверена. Тут можно сказать, что задачка не та, результат не тот, LLM не все умеют — да, можно. Но после этого эксперимента мы продолжили их делать и набирать экспертизу в LLM-разметке и искренне считаем, что LLM-разметчикам суждено соревноваться с биологическими.

Потому что у подобной «модельки LLM-разметки» огромный простор для файнтюнинга — например, хотя бы в том, чтобы проделав первичный ресерч о том, какой LLM-ассесор с какой задачей лучше справляется, мы можем присваивать им веса и делать агрегацию умнее, или изначально сразу выбирать более заточенные под нашу задачу модели. Мы можем перебирать промпты до упора и добиваться результатов лучше.

Человеческую же разметку нельзя «подтюнить» дешево. Не говоря уже о тех ситуациях, когда задача экспериментальная, условия не до конца понятные, сроки сжатые и от того что-то пошло не так.

LLM-разметка сильно быстрее масштабируется (как для ускорения процесса, так и для повышения уверенности ответа), не требует постоянной штатки, и количество решаемых моделями задач — растет с каждым днем. Вот с задачей простановки ударений, например, пока полный фейл, на сложных фамилиях плывут все LLM-ассесоры, но у них все впереди и большое будущее.

LLM сегодня — это не LLM завтра, их нельзя отфиксировать в применении, потому что они развиваются бешеными темпами.

Ну и, конечно, далеко не все данные и не все задачи можно вывалить в чужие LLM, но я сознательно это не рассматриваю в данной статье, здесь — про концепт, конкретика решается уже на местах. Как и сам факт того, в какой именно момент мы можем переключиться в задании на LLMки вместо людей, все это сложно сказать без хрустального шара.

Взгляд на будущее авторазметки

Мы полноценно экспериментируем не только с авторазметкой текста, но и авторазметкой картинок, аудио и видео. Например, если кто-то до сих пор хорошо различимые объекты выделяет на фото вручную, то это просто трата дорогих человеческих ресурсов. А так как LLM стремятся в мультимодальность, то и такие медиа-задачи будут тоже сразу в LLM.

А уж какой простор для создания синтетики данных и полностью искусственных датасетов — ух.

LLM обязательно заменят людей в разметке, но это — игра слов.

Людей из процесса не убрать никак (особенно, если вы делаете те самые фундаментальные модели), но LLM видоизменяют большую часть разметки саму по себе. Они заменят не собой людей, а заменят одних людей на других — разметчик больше не будет заниматься совсем черновыми вещами, они станут либо погруженными AI-тренерами, либо станут операторами разметки, то есть — принимающими решение в управлении сложной технологической машиной.

Желаю всем быть причастными к созданию крутых технологий и вот таких сложных технологических машин.

Спасибо!

P.S.: Если вам понравилась статья, то приглашаю прочитать еще одну смежную — про модель, которая произвела фурор в разметке изображений (а с момента той статьи мы нацепили ее и на видео): Приключение SAM в Японии или как компьютерное зрение видит гейшу

Комментарии (4)


  1. theurus
    12.04.2024 15:21

    Вот кстати да, есть задачи с которыми у чатгпт и ко большие проблемы, расставить ударения или восстановить букву ё в тексте они похоже не могут. Считать не умеют.


    1. N3VERZzz
      12.04.2024 15:21

      А русские модели умеют считать?


      1. theurus
        12.04.2024 15:21

        Они могут пытаться обнаружить в запросе то что можно передать в калькулятор и так посчитать. Получается не всегда.


  1. phenik
    12.04.2024 15:21

    Про LLM любят говорить, что они часто галлюционируют и потому целиком полагаться на их ответ нельзя. В целом, это правда, но если копнуть глубже, то у кого они этого понахватались? Они научились этому у людей, чьи ответы на что-либо зачастую тоже нельзя считать идеальными, ибо люди находятся в разных состояниях, когда делают работу (особенно такую монотонную, как разметка): устают, просто не вовлечены, находятся под давлением/стрессом, и так далее.

    При чем здесь идеальность ответов и состояние на работе? Ошибки это частности. ЯМ так же как и люди фантазируют на заданные темы. Это неотъемлемая часть ассоциативного мышления, которое худо-бедно моделируется в ЯМ, а оно только одно из списка типов мышления, которые имеются у человека (здесь полнее классифицировано). Фантазирование (связанное с ассоциативностью) отвечает за часть творческих способностей человека, уравновешиваясь другими приемами мышления - логикой, критикой, моделированием на образном уровне, и тд. Одним манипулированием промптингом ЯМ, в том виде, как они есть сейчас, можно улучшить ситуацию, но не устранить ее полностью. Хотя выводы в конце статьи по разметке, по результатам тестирования, видятся достаточно адекватными.