Журнал · Rit.work

Loom исправляет перекос при отборе данных для дообучения LLM

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

Rit.work
Студия разработки
2 октября 2026 г.4 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Отбор примеров внутри пакета можно избавить от перекоса, из-за которого шумные данные кажутся полезными. Все числа получили сами авторы нерецензированного препринта: Loom дошёл до итогового качества обычного обучения за 60% его времени. Это делает метод кандидатом на эксперимент для дорогого LoRA-дообучения, а не готовой заменой обучения на всём пакете.

Почему пример завышает собственную ценность

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

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

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

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

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

Как пакет проверяет каждый пример на остальных

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

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

Из этой постановки следуют и веса: предпочтение получают примеры с высоким отношением полезного сигнала градиента к шуму. Подмножество выигрывает у полного пакета не всегда, а когда качество отдельных примеров достаточно различается. Если все градиенты шумят одинаково, сокращение пакета пользы не даёт.

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

Когда Loom стоит включать в план обучения

Метод проверяли в контролируемом дообучении моделей размером от 1,5 до 8 млрд параметров на четырёх задачах: MMLU, ScienceQA, GSM8K и HumanEval. На крупнейших проверенных моделях семейства Llama и Qwen средняя оценка выросла на 2,3–2,4 процентного пункта относительно обновления на всём пакете. Сравнение также включало случайный отбор, методы по величине ошибки и градиента, сопоставление градиентов внутри пакета и подходы с отдельными проверочными данными.

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

Граница метода проходит по обучающему распределению. Если целевая задача отличается от данных в пакете, отдельная проверочная выборка может дать направление, которого Loom не увидит; в опыте с TydiQA подход с проверочными примерами оказался полезнее. Для объединённых наборов редкие источники также получали слишком маленький вес, поэтому цели приходилось рассчитывать отдельно по источникам.

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

Работа даёт понятную причину пересмотреть именно отбор по градиентам: сравнивать пример с целью, куда он уже входит, методологически неверно. Но полученных результатов пока достаточно для параллельного запуска на собственном наборе, а не для автоматической замены действующей схемы обучения.

Источники

Иллюстрация: рисунок из статьи «Every Batch Is Its Own Validation Set: Leave-One-Out Gradient Matching for Online Data Selection in LLM Fine-Tuning», Hongyu Chen, Xinyi Luo, Ming Zhao и др., CC BY 4.0

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

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

← Ко всем материалам
Понравилось? Обсудим вашу задачу