Обновить

Можно ли научить маленькую LLM учиться без роста весов? Замеры, баги и честная статистика

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.7K
Всего голосов 1: ↑1 и ↓0+3
Комментарии19

Комментарии 19

Эм, немного странные эксперименты.

Во-первых, использовать такие небольшие модели просто не имеет смысла, не хватает информационной емкости, вы будете видеть больше шума чем реальных смещений. Значимые результаты достигаться на моделях в 10 раз большего размера, т. е. ~30B, а хоть какой-то реальный практический результат начинается от 9-12B.

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

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

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

На вопросы отвечу, надеюсь, что смогу сэкономить вам время:

Continual learning на малых моделях. Кто мерял форму кривой при многократном переучивании на фиксированном корпусе? Наш ранний паттерн — «скачок первого цикла → плато» — это у вас тоже было, или мы видим артефакт протокола?

Итеративное самообучение дает основной прирост за 1-2 итерации. Дальше идет насыщение (плато), а затем деградация из-за переобучения. Это известное и изученное явление. Можете не тратить на это время.

Доставка vs интернализация. Есть ли у кого‑то строгий протокол разделения «память помогла» / «научилось» / «изменились веса»? Мы делаем это через контрольные группы (CARRY/RESET/BASE) — видим ли вы дыры?

Обучение на решениях, которые модель в основном и так находит, увеличивает pass@1 без роста pass@k. Нужна кривая pass@k хотя бы до k=32, если она не поднимается, то это обычное сужение распределения (sharpening). Также нужно учитывать, что LoRA всегда меняет веса, но это не значит, что модель научилась чему-то новому.

Тут поможет плацебо-ветка. Берете ваши 80 задач и перемешиваете у них решения между условиями задач. Получаете те же решения, тот же формат, тот же объем, те же гиперпараметры. Но пары составлены так, что научиться решать задачи по ним нельзя. Тогда разность между обычной веткой и плацебо покажет, что дал именно смысл данных, а не сам факт дообучения. Есть разные варианты сравнения placebo с base, почитайте и выберите подходящий вариант для себя.

Верификатор как единственный источник правды. Мы верифицируем только программные задачи (песочница + тесты + мутационный контроль). Как вы решаете задачу верификации для неверифицируемых доменов?

LLM-судья. В запущенных случаях перекрестная проверка из двух судей. Важно чтобы судья был из другого семейства моделей.

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

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

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

Эм, немного странные эксперименты.

Наверное потому что их делала нейросеть, как и сам пост, судя по построению слога и то что там половина не понятно из за жаргона, вроде "но судит финальный CI, а не глаза." и остальные перлы.

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

Да, слоп есть, не скрываю. Писалось с нейронкой, глянул поверх и выложил — а вычистить как следует уже не хватило рук. Но тема близкая и не ответить по существу не смог: по первому комменту сверху прогнал pass@k по сырым попыткам — по первой попытке эффект доставки нулевой, весь прирост на повторных попытках. Плацебо-ветку забрал в протокол, спасибо.

Но тема близкая и не ответить по существу не смог

Отвечает на комменты тоже Клод или ГПТ чат ? =))))

Примерно +-

Если весь прирост на повторных попытках, то честный контроль - те же попытки без доставки решения. У меня на модедях от 360M до 1,7B один только пересэмпл кода, без всяких подсказок, поднял решаемость с 0,833 на одной попытке до 0,958 на восьми. Засчитывал, если хоть одна попытка прошла эталонные тесты. Попытки сами по себе покупают очень много. и бюджет я бы сравнивал по каждому вызову, а не суммами. У меня равные суммы трижды прятали перекос: одна ветка просто чаще упиралась в лимит токенов.

Тут как раз всё просто. Те же попытки без доставки это и есть наша контрольная группа M0: те же 4 попытки, тот же протокол, только без референса в контексте. Пересэмпл сам по себе покупает столько же, сколько у тебя: база с 32.5% на одной попытке доходит до 50% на четырёх. Твои 0.833 → 0.958 на восьми это та же картина, так что тут мы независимо сошлись.

И +30 п.п. доставки это дельта уже поверх такого контроля, при одинаковом числе попыток на задачу.

По бюджету согласен, сравнивать надо по каждому вызову, а не суммами. У нас бюджет на вызов одинаковый во всех группах (одинаковый лимит на генерацию), референс добавляет только входные токены: в среднем 243 против 176 у базы. Это цена метода, и мы её показываем отдельно.

Про упирание в лимит проверил по логам отдельно, потому что у тебя был ровно такой перекос. У нас упёршихся в лимит генерации 0% во всех группах (в Path-4 на 400 задачах 0.09% и 0.29%). Так что перекос «одна ветка чаще резалась лимитом» у нас не вылез. Но проверку на это добавили в обязательные на каждый прогон.

Справедливо. Текст помогал писать нейронкой и вычистил не до конца, мой косяк. CI — это доверительный интервал, согласен, что без расшифровки выглядит как жаргон на жаргоне.

Числа в статье настоящие, из логов экспериментов — а вот слог перепишу по-человечески, замечание принял.

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

Переписал чутка

Спасибо за развёрнутый ответ, реально полезно.

По ёмкости модели спорить не буду — 3B это осознанный выбор, а не попытка сэкономить. Вопрос который нас грызёт наоборот про жёсткий потолок: сколько можно выжать из маленькой модели, если знания держать снаружи в памяти, а не пихать в веса. Что происходит на 30B — интересно, но во вторую очередь, сначала понять работает ли сам принцип на доступном железе.

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

По pass@k — это самое ценное в твоём комменте. Проверил по сырым логам попыток. По первой попытке разницы между базой и с референсом в контексте вообще нет — 32.5% и 32.5%. Весь эффект вылезает на повторных: с референсом к четвёртой попытке 80% против 50%. То есть да, похоже это не «модель стала умнее», а «модель начала восстанавливаться на ретраях когда видит похожее решение». Это реально меняет то, как мы про доставку думали.

Плацебо-ветку с перемешанными решениями забираем, это самый дешёвый способ отделить смысл данных от самого факта дообучения.

3B это осознанный выбор, а не попытка сэкономить.

Дело в том, что на таком размере вы большую часть времени будете исследовать шум, а не реальные смещения. Ниже 9B очень много времени будет уходить на очиску от шума (что вы сейчас вообще не делаете), а сам сигнал будет прыгать около стат погрешности. Рассмотрите вариант хотя бы 9B модели, ниже скорее всего вы не найдете ничего статистически значимого.

Тут два вопроса, отвечу по обоим.

Про шум. Наши эффекты не в шуме: доставка даёт +30 п.п., p=0.004 по точному критерию Мак-Немара, повторено трижды на разных сидах независимо. Плюс все исторические результаты пересчитаны из сырых логов отдельным кодом, не тем, что делал эксперимент (сошлось 51 из 51 проверок). Очистка от шума как раз есть: контрольные группы, критерии заморожены до прогона, повтор на сидах. На 3B сигнал ловится нормально, вопрос скорее в размере эффекта.

Где ты прав. Слабые эффекты на 3B мы можем просто не заметить. У дообучения прирост маленький (+4.5 п.п.), и не исключено, что это потолок ёмкости, а не отсутствие эффекта. Тут не поспорю.

Про 9B и 30B упрёк мимо: у нас бытовая карта на 12.9 ГБ. 7B в полном формате это около 14 ГБ, то есть уже не влезает. 30B это ~60 ГБ. На этом железе 3B это физический потолок для такого эксперимента, а не жадность. Дойдём до большой карты, вопрос про 9B+ встанет честно.

И почему вообще 3B. Мы специально задаём вопрос «сколько можно выжать из маленькой модели, если знания держать снаружи». На большой модели ответ всегда «купи больше параметров», и это ничего не говорит о том, работает ли сам принцип.

Ладно, я больше не буду отвечать LLM-обезьянке. Либо пишите свои мысли, либо не пишите совсем.

ИИ-слопные комментарии без попытки вникнуть в суть это просто неуважение к собеседнику.

У меня теплилась надежда, что пусть с ИИ, но вы понимаете, что исследуете. Я ошибся.

Несколько месяцев я плаваю в этом проекте, обьем далеко уже ушел в перед за пределы статьи , паралельно ведеться большая работа над этим проектом, плацебо-ветку взял в протокол, за это спасибо .
Касательно pass@1, у базы и с референсом одинаковый (32.5%), весь прирост я увидел на попытках 2–4.
Так же я считаю у дообучения наоборот: максимум на первой попытке, тает к четвёртой. Прошу прощения, если вас неустроил мой ответ при помощи айти техологий на айти сайте , но в целом вы абсолютно правы.

Я лишь хотел понять на сколько мимо или не мимо я двигаюсь, по сколько задача стоит очень амбициозная, хотелось узнать может кто то делает нечто подобное

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации