Классификация авторства текстов. Обзор Kaggle соревнования «H2O Predict the LLM»
В день, когда Сэм Альтман в темной одежде на темном фоне рассказывал миру о запуске GPT-4-Turbo, в те же самые минуты на Kaggle завершалось небольшое, но любопытное соревнование «Predict the LLM». Цель — узнать автора по тексту. Авторами текстов выступили 7 анонимных больших языковых моделей…
На Kaggle ходят за знаниями, новыми идеями, иногда за победами, но все чаще вместо казино. Увлекающихся датасаентистов к Kaggle лучше не подпускать. 10 дней назад, листая список соревнований с мыслью «чего бы порешать, о чем бы узнать сегодня» наткнулся на Community соревнование от H2O. Описание гласило:
«Delve deep into the world of Language Learning Models (LLMs)! The objective of this competition is to detect which out of 7 possible LLM models produced a particular output. With each model having its unique subtleties and quirks, can you identify which one generated the response?
The challenge of pinpointing the origin LLM of a given output is not only intriguing but is also an area of spirited research. Understanding the nuances between different models allows for advancements in model differentiation, quality assessment, and potential applications in multiple sectors. Dive in, explore the intricacies, and contribute to this emerging area of study!»
О класс! Что-то такое и хотелось поделать.
Дальше — больше. Организаторы соревнования — это парни из H2O, а парни из H2O — в общем-то легенды в мире Kaggle и соревновательного Data Science.
Дальше — снова больше. В качестве скора, который надо пробить на лидерборде — бейзлайн @psi, а Philipp Singer #1 в рейтинге Kaggle.
Ну и личная вишенка на торте то, что всех 3-х людей указанных в Citation я как-то немного знаю. Rob Mulla смотрю на YouTube, интервью c Дмтирием Ларко читал недавно в классной книге по DS, а c Габором пересекался на Kaggle митапах в Будапеште. В общем погнали решать.
На входе имеем размеченный датасет из 3 колонок. Вопрос — Ответ — Лейбл. Каждой из 7 моделей представленных в трейне задали 568 одинаковых вопросов на разные темы от кино и музыки до математики и медицины. Fun fact — вопросы тоже писала LLM. Метрика Log Loss. 50% в публичном лидерборде, 50% в закрытой части. Никаких плясок с Code Competition, все по-честному, шейкапа не предвидится (?).
Будучи новичком в теме NLP и адептом классического ML, начал решать тоже по классике. Первое предположение, что есть разница в ответах LLM, которая позволит легко классифицировать авторство. И эта разница не в смыслах текстов, а в стилистике и каких-то простых семантико-орфографических характеристиках. Делаю разбор текста на 130+ предикторов с помощью фреймворка spaCy.
Всю эту дискотеку быстро прогнать через бустинги или AutoML и сделать первый сабмит. Провал. Скор ужасен. Второй с конца. До Сингера далеко.
Нас теперь двое, Chuk & Gek, делаем команду. Один в Будапеште, другой в Москве. Набиваем опыт на Kaggle. Оба давно в поисках работы в DS, но бодрые джуны никому не нужны, все ищут светящихся единорогов на сеньорские позиции.
Поехали дальше. Можно убрать лишние предикторы, настроить параметры моделей. Попробовать другой фреймворк, сделать какой-нибудь ансамбль.
Пробуем все. Скор улучшается, но психологическая отметка 1, которую хочется пробить все еще далеко. Мы болтаемся в диапазоне 1.4 — 1.8. У Сингера 0.885
Читаем форум. Пишут про кластеризацию, эмбеддинги, Бертовые модели. Наша следующая архитектура решения построена на извлечении эмбеддингов через разные модели и операциями с ними. Кормим все это снова в бустинги. Скор совсем не много улучшается. Однако, приходит понимание, что на этой архитектуре мы не уедем ниже 1.
Пора расчехлять недельную Kaggle квоту в 30 часов GPU и строить решение на малоосвоенных нейронных сетях. Файн-тюнинг, новые головы, бесконечные параметры. Голова идет кругом от количества информации, которую надо знать, чтобы принимать решения. Сетей много, считать долго, ошибаться просто. Время идет. До конца 14-дневного соревнования осталось несколько дней. Попробуем упростить задачу и сделать бейзлайн не руками, а с использованием опенсорсного H2O LLM Studio.
По наводке с форума соревнования выбран следующий подход: взять топовую из не проприетарных LLM модель с HuggingFace. Дообучить ее на наших данных и через Softmax получить искомые вероятности. Количество сна сокращается катастрофически, но мы награждены… Сингер на 17 месте, мы на 18-м. Ура! Единица пробита, мы за 40+ сабмишенов стоим рядом c легендой.
Казино включилось. Хотим выше. Один из команды грызет документацию Transformers и смотрит топовые решения с прошлых NLP соревнований (кстати, одно из любимых это когда yorko Юрий Кашницкий учил сетки находить сарказм в текстах), другой же тем временем с нулевым опытом пытается развернуть LLM Studio на мощном арендованном сервере. Прокинуть тунель, поставить драйверы для GPU, какие-то sudo, make ошибки из Unix… Не успеваем.
Последняя надежда за час до финала, просто усредняем свои предыдущие предикты и вот мы на 10-м месте в паблике с 0.774 за 50 сабмитов, Сингер на 25 м за 1.
Пора спать. Утром будут результаты по привату и хочется верить, что мы не улетим на шейкапе в подвал.
Результаты еще не объявлены. Хотя уже появляются решения от лидеров. LLM лучше всего предсказывают … сами LLM :)
Файнтюнинг и кастомизация больших моделей — это та тема, которая переживает мощный буст. Недаром начал статью с человека в темном. Все эти парни с тысячами идей и миллионами инвесторских денег, миллиардами нейронов в их головах и построенных ими сетях, они делают что-то классное. И можно быть частью этого фантастического сообщества Data Science. Хотя бы и на Kaggle.
Команда:
Chuk → https://www.linkedin.com/in/samvelkoch/
&
Gek → https://www.linkedin.com/in/aleksey-schukin/
Польза:
https://www.kaggle.com/competitions/h2oai-predict-the-llm/overview
https://www.kaggle.com/competitions/h2oai-predict-the-llm/leaderboard
https://www.kaggle.com/code/tanulsingh077/deep-learning-for-nlp-zero-to-transformers-bert
https://www.kaggle.com/AI-Report-2023
https://huggingface.co/learn/nlp-course/chapter1/1
https://www.deeplearning.ai/short-courses/finetuning-large-language-models/
https://www.coursera.org/specializations/natural-language-processing
https://docs.cohere.com/docs/llmu
https://www.coursera.org/learn/generative-ai-with-llms
https://web.stanford.edu/class/cs224u/index.html
https://github.com/h2oai/h2o-llmstudio
https://auto.gluon.ai/stable/index.html
https://www.youtube.com/@robmulla
https://www.youtube.com/@H2Oai
https://www.philippsinger.info
https://www.amazon.com/Data-Analysis-Machine-Learning-Kaggle-ebook/dp/B09F3STL34