🎅 Santa 2024 Top-1 🎅
Описание задачи
Участникам предлагалось решить достаточно простую задачу:
Переставить фиксированный набор слов так, чтобы итоговая последовательность минимизировала перплексию модели Gemma-2-9b.
При этом можно было использовать только перестановки заданных слов.
Общая картина
Практически все участники использовали те или иные алгоритмы отжига (simulated annealing) или их модификации, поэтому публичные решения были довольно похожи. Даже чел с 2 места просто использовал SA. В соревновании отсутствовал приватный LB — использовался только публичный, а значит и шейкапа не было.
Победители обнаружили глобальный оптимум ещё два месяца назад и спокойно чилили до последней ночи соревнования. Почему глобальный оптимум? Потому что все команды из золота финишировали с одним и тем же скором. Слишком большое совпадение. Как принято, были и китайские анонимные гении, которые две недели назад зарегали аккаунт и влетели в золото в последний день с 10 сабмитов. Но вернемся к победителям:
ПримочкиДистилировали Gemma-2-9b
Так как домен ограничен сотней слов, они смогли сжать модель до 1/5000 от оригинала. Я тоже пытался дистиллировать, но не смог добиться стабильного результата. Теперь выпрашиваю на форуме дать посдказок и правильных ответов, а то месяц мучал этот подход. Мб все же надо решать nlp соревы иногда.
Основной алгоритм победы —
Iterated Local Search (ILS):
Принцип опишем так:
1. Инициализация:
Выбираем стартовое решение — исходная последовательность слов. Положим, лучший паблик из открытых.
2. Пертурбация:
Из текущего решения выбираем блок из нескольких подряд идущих слов, которые затем случайным образом переставляем. Это позволяет "оттолкнуться" от текущего состояния и исследовать новые варианты.
3. Локальный поиск:
После пертурбации в стиле брутфорса пытаемся переставить каждое слово. Полученный результат фиксируем, а его оценка с не большим марджином (10%), запоминаем, чтобы отсекать неперспективные варианты.
4. Поиск в глубину:
Затем перебираем все перестановки с глубиной N+1 (переставляем два слова, потом три слова всеми возможными вариантами). Если ни одно из новых решений не оказывается лучше установленного порога, текущий локальный оптимум считается финальным, и алгоритм возвращается к пертрубации.
Все, готово. Ставим сосиски на гпу и ждем, когда они превратятся в пепел.
Фанфэктс:
Один из авторов активно участвовал в соревнованиях по эмпирическому поиску на протяжении последнего года просто потому, что ему еще прошлный санта сильно зашел.
АХ НУ ДА, БИМ СЕРЧ НЕ РАБОТАЛ, ФИГНЯ БИМ СЕРЧ ВАШ. Он для совсем других целей. Ставьте 🧠️️️️️️ если хотите, чтобы я объяснил