![LLMки, задумывавшие отобрать работу разметчиков LLMки, задумывавшие отобрать работу разметчиков](https://habrastorage.org/getpro/habr/upload_files/4c8/595/ff4/4c8595ff4205a4c1bd113db2403eee6f.jpeg)
Привет! Использование ИИ в разметке данных для него же — уже скорее необходимая потребность, нежели что-то удивительно новое. Разного рода экспериментами с авторазметкой данных нейронками мы занимаемся последние полгода и результаты — нравятся.
В данной статье я детально расскажу о нашем самом первом эксперименте с LLM в разметке данных для ИИ и proof-of-concept их годноты использования в реальных задачах, а в процессе попробую ответить на большой вопрос — так заменят ли LLM людей в разметке данных?
Давайте вооружимся GigaChat, chatGPT, Gemini и начнем!
Как возникла идея попробовать LLM в разметке
Большие языковые модели (LLM) — очень мощные штуки, которые позволяют решать огромное количество задач, и нашей идеей было проверить, насколько они готовы справляться с разного рода задачами именно по разметке данных.
Почему вообще возник такой интерес — в разметке часто бывают не очень большие (или просто несложные) задания, под которые уже вроде бы есть какая-то готовая библиотека, но полноценно полагаться на нее не хочется, так как либо в задании есть особенные нюансы, требующие подпилки напильничком, либо нам нужна абсолютная уверенность в точности результата. Цеплять одну либу для прогона, вторую для кросс-валидации часто бывает бессмысленно в силу объемов и нецелесообразности трудозатрат.
И именно здесь суперсила LLM раскрывается во всю: нам не нужно искать сторонние решения и встраивать их, у нас уже есть интерфейс единого окна, к которому нужно правильно обратиться со своей задачей, а он у себя под капотом проделает всю черную магию.
А что по галлюцинациям?
Про LLM любят говорить, что они часто галлюционируют и потому целиком полагаться на их ответ нельзя. В целом, это правда, но если копнуть глубже, то у кого они этого понахватались? Они научились этому у людей, чьи ответы на что-либо зачастую тоже нельзя считать идеальными, ибо люди находятся в разных состояниях, когда делают работу (особенно такую монотонную, как разметка): устают, просто не вовлечены, находятся под давлением/стрессом, и так далее.
Поэтому идеальная разметка данных делается [в среднем] двумя путями (или их комбинациями): мы либо делаем несколько этапов перепроверки друг за другом, либо даем одно и то же нескольким людям и усредняем их ответ. Поэтому «галлюцинации» в широком смысле слова — это то, с чем мы работаем каждый день, а уж галлюцинация это человека или LLM — без разницы.
![Верить никому нельзя, галлюцинации бывают у всех Верить никому нельзя, галлюцинации бывают у всех](https://habrastorage.org/getpro/habr/upload_files/01e/d6f/1e8/01ed6f1e86bee80f9c670e83fdcbfab6.jpeg)
Берем датасет, но убираем людей
Идея заключалась в том, чтобы попытаться решить реальную задачу с текстом без участия людей.
Покопавшись в архивах нашей платформы, мы нашли похожее задание — определение фамилии в строке с потенциальной ошибкой в написании.
Датасет состоял из строк (иногда целиком из полного ФИО, иногда из имени с фамилией) с потенциальными опечатками, а так же двумя предсказанными вариантами. Природа ошибок датасета могла быть разная — это могла быть именно опечатка в исходном документе, а могла быть проблема его распознавания (OCR из скана или автоматической транскрибацией из аудио) или что-то совершенно иное.
В данном случае мы не углубляемся в то, какую задачу и каким способом решали коллеги, нам важно, что это была живая потребность и заказчик пожелал прогнать ее через людей-валидаторов.
![Интерфейс разметчика (точнее, просмотра его ответов) в исходной задаче Интерфейс разметчика (точнее, просмотра его ответов) в исходной задаче](https://habrastorage.org/getpro/habr/upload_files/b28/71f/355/b2871f35527c0a1f41266c2b6f6baf50.png)
Итак, у нас уже был датасет и эталонная разметка к нему. Разметка шла с перекрытием 3 (то есть, мы давали одну и ту же запись трем разным людям), после чего при 100% совпадающем ответе мы принимали его как правильный.
Поэтому мы решили взять из датасета 10 тысяч записей (в исходном было 250 тыс.), прогнать их через LLMки с таким же перекрытием (то есть, как с людьми, но с LLM, ну), так же усреднить результаты и сравнить их с результатами людей.
![Каждая запись идет трем разметчикам (или кибер-разметчикам) и берется их средний ответ Каждая запись идет трем разметчикам (или кибер-разметчикам) и берется их средний ответ](https://habrastorage.org/getpro/habr/upload_files/745/cea/bc9/745ceabc92f2581abe9bd75e0d50b7dc.png)
Выбор пал на 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-разметчиков, соединить результаты и оценить их. То есть все точно так же, как с людьми.
У нас на платформе единое окно с общим интерфейсом с подключенными моделями, поэтому можно показать на визуальном примере:
![Визуал для проверки промптов и отладки результата с подключенными разными моделями Визуал для проверки промптов и отладки результата с подключенными разными моделями](https://habrastorage.org/getpro/habr/upload_files/023/d1e/f37/023d1ef3758ad0b4623700f322795cb8.gif)
Автоматизация такого действия на питоне или любом языке пишется не очень сложно, у нас на проекте Elementary ее можно собрать просто в вебе, после чего дождаться уведомления об окончании процесса и скачать результаты.
Анализ результатов и важность их отсмотра
Анализ результатов нас интересует вот в каких разрезах:
Насколько LLM в принципе одинаково выполнили работу (в разметке это называется «уверенность в ответе»)
Насколько агрегированный результат от LLM совпадает с результатом людей
И обязательный отсмотр части совпавших ответов и части несовпавших.
Визуальная картиночка вместо тысячи слов:
![Победила дружба! ̶к̶о̶н̶е̶ч̶н̶о̶ ̶н̶и̶к̶а̶к̶а̶я̶ ̶д̶р̶у̶ж̶б̶а̶ ̶н̶е̶ ̶п̶о̶б̶е̶д̶и̶л̶а̶ ̶и̶б̶о̶ ̶к̶т̶о̶-̶т̶о̶ ̶о̶с̶т̶а̶н̶е̶т̶с̶я̶ ̶б̶е̶з̶ ̶р̶а̶б̶о̶т̶ы̶̶ х̶а̶х̶а̶х̶а̶ Победила дружба! ̶к̶о̶н̶е̶ч̶н̶о̶ ̶н̶и̶к̶а̶к̶а̶я̶ ̶д̶р̶у̶ж̶б̶а̶ ̶н̶е̶ ̶п̶о̶б̶е̶д̶и̶л̶а̶ ̶и̶б̶о̶ ̶к̶т̶о̶-̶т̶о̶ ̶о̶с̶т̶а̶н̶е̶т̶с̶я̶ ̶б̶е̶з̶ ̶р̶а̶б̶о̶т̶ы̶̶ х̶а̶х̶а̶х̶а̶](https://habrastorage.org/getpro/habr/upload_files/1cf/e3f/d5e/1cfe3fd5eb0ec54c1bfdac7466ab6c5e.png)
В целом, отличный результат. На этой визуальной выборке результат равен, на разной большой дистанции он либо равен, либо с очень небольшим отрывом уходит людям.
Прокомментирую скриншот: кибер-спортсмены договорились между собой в 8 случаях из 10, так же как и люди. Здесь забавно то, что есть строки, в которых LLM или люди договорились между собой единогласно, но не попали в единогласный ответ другой стороны.
Поэтому обязательный отсмотр части результатов постфактум очень важен. У людей бывает так, что все отвечающие одновременно могут ошибиться, и это не то чтобы совсем редкий черный лебедь: задачи в разметке ставятся далеко не всегда идеально и однозначно, а количество «пограничных» ситуаций — огромно, и почти никогда не налажена хорошая и быстрая связь между заказчиком и исполнителями.
Если так умеют ошибаться люди, то точно так же будут ошибаться LLM-ассесоры, поэтому даже если мы набрали высокую общую уверенность в ответах, без частичного отсмотра и валидаций — это пока просто цифры.
Выводы о применение LLM в разметке
Наша задача изначально была проверить гипотезу — и вот она проверена. Тут можно сказать, что задачка не та, результат не тот, LLM не все умеют — да, можно. Но после этого эксперимента мы продолжили их делать и набирать экспертизу в LLM-разметке и искренне считаем, что LLM-разметчикам суждено соревноваться с биологическими.
Потому что у подобной «модельки LLM-разметки» огромный простор для файнтюнинга — например, хотя бы в том, чтобы проделав первичный ресерч о том, какой LLM-ассесор с какой задачей лучше справляется, мы можем присваивать им веса и делать агрегацию умнее, или изначально сразу выбирать более заточенные под нашу задачу модели. Мы можем перебирать промпты до упора и добиваться результатов лучше.
Человеческую же разметку нельзя «подтюнить» дешево. Не говоря уже о тех ситуациях, когда задача экспериментальная, условия не до конца понятные, сроки сжатые и от того что-то пошло не так.
LLM-разметка сильно быстрее масштабируется (как для ускорения процесса, так и для повышения уверенности ответа), не требует постоянной штатки, и количество решаемых моделями задач — растет с каждым днем. Вот с задачей простановки ударений, например, пока полный фейл, на сложных фамилиях плывут все LLM-ассесоры, но у них все впереди и большое будущее.
LLM сегодня — это не LLM завтра, их нельзя отфиксировать в применении, потому что они развиваются бешеными темпами.
Ну и, конечно, далеко не все данные и не все задачи можно вывалить в чужие LLM, но я сознательно это не рассматриваю в данной статье, здесь — про концепт, конкретика решается уже на местах. Как и сам факт того, в какой именно момент мы можем переключиться в задании на LLMки вместо людей, все это сложно сказать без хрустального шара.
Взгляд на будущее авторазметки
Мы полноценно экспериментируем не только с авторазметкой текста, но и авторазметкой картинок, аудио и видео. Например, если кто-то до сих пор хорошо различимые объекты выделяет на фото вручную, то это просто трата дорогих человеческих ресурсов. А так как LLM стремятся в мультимодальность, то и такие медиа-задачи будут тоже сразу в LLM.
А уж какой простор для создания синтетики данных и полностью искусственных датасетов — ух.
LLM обязательно заменят людей в разметке, но это — игра слов.
Людей из процесса не убрать никак (особенно, если вы делаете те самые фундаментальные модели), но LLM видоизменяют большую часть разметки саму по себе. Они заменят не собой людей, а заменят одних людей на других — разметчик больше не будет заниматься совсем черновыми вещами, они станут либо погруженными AI-тренерами, либо станут операторами разметки, то есть — принимающими решение в управлении сложной технологической машиной.
Желаю всем быть причастными к созданию крутых технологий и вот таких сложных технологических машин.
Спасибо!
P.S.: Если вам понравилась статья, то приглашаю прочитать еще одну смежную — про модель, которая произвела фурор в разметке изображений (а с момента той статьи мы нацепили ее и на видео): Приключение SAM в Японии или как компьютерное зрение видит гейшу. А если у вас есть вопросы/задачи по LLM-разметке (или вообще разметке данных), то со мной всегда можно связаться в тг: @antipov_d