Дефолтный learning rate в QLora — ловушка для малых датасетов
Автор три недели бился с файн-тюнингом на ~7k примерах, пока не понял: дефолтный learning rate 2e-4 из всех туториалов взят из paper'а Alpaca (52k сэмплов) и безбожно переобучает малые датасеты. Переход на 1e-4 + больше эпох мгновенно разблокировал рост eval-метрик.
Тысячи разработчиков копируют дефолтные гиперпараметры из туториалов, не понимая, что они откалиброваны под датасеты в 5-10 раз больше их собственных. Это приводит к неделям потерянного времени, ложным выводам о качестве данных и непроизводительным тратам GPU.
Когда «проверенный дефолт» оказывается ловушкой
Разработчик потратил три недели на отладку файн-тюнинга модели с QLoRA — дважды перечищал датасет (~7200 примеров после чистки), переписывал промпт-шаблоны, вручную релейблил строки. Результат: training loss падал красиво, eval loss стоял как вкопанный или рос.
Корень проблемы: дефолтный learning rate 2e-4. Он кочует из туториала в туториал (Unsloth, HuggingFace, сам paper по QLoRA) и восходит к датасету Alpaca — 52 тысячи примеров. Большинство же файн-тюнит на 5-10k самостоятельно размеченных сэмплов.
На малых датасетах модель с 2e-4 переобучается внутри первой эпохи: training loss идёт вниз, eval стоит. Автор сменил одну цифру — 2e-4 → 1e-4, эпохи с 3 до 5 — и eval подскочил больше, чем за все предыдущие недели вместе.
Почему об этом молчат?
Unsloth сам называет 2e-4 «отправной точкой», но все шареные ноутбуки хардкодят значение без комментариев. Разработчики копипастят, получают мусор, обвиняют данные или архитектуру, теряют неделю.
Эмпирическое правило автора: - Больше 30k примеров → 2e-4 ок - Меньше 10k → начинать с 1e-4 или ниже, добавить эпох - 10-30k → настраивать вручную (это одна цифра, пол-дня работы)
Автор просит: если есть исследования, защищающие 2e-4 на малых данных — прислать ссылку. Если сообщество давно это знает и молчит — он обижен персонально на каждого.
Ключевые выводы
- Дефолтный learning rate 2e-4 для QLoRA откалиброван на 52k примерах (Alpaca) и ломается на датасетах <10k
- На малых данных модель переобучается внутри первой эпохи: training loss падает, eval стоит
- Снижение LR до 1e-4 + увеличение эпох (3→5) дало скачок eval-метрик после недель застоя
- Копипаст дефолтов из туториалов без понимания контекста — частая причина провала файн-тюнинга
- Правило: >30k → 2e-4, <10k → 1e-4 или ниже, 10-30k → настраивать вручную
Автор: Анна Мельникова · Источник: reddit.com
Это классический случай cargo cult programming в ML. Все знают, что гиперпараметры надо настраивать, но когда Unsloth, HuggingFace и сам paper пишут «начни с 2e-4» — кто будет спорить? В итоге получается эпидемия: люди с малыми датасетами переобучают модели внутри первой эпохи, думают, что у них плохие данные, и уходят перечищать — хотя проблема в одной константе.
Впрочем, автор сам виноват не меньше других: три недели бился, а до изменения LR дошёл только после всего остального. Но его крик души полезен: сообщество действительно плохо документирует границы применимости «проверенных рецептов». 2e-4 работает на Alpaca — но большинство файн-тюнит на порядок меньших данных. Надо бы это прописывать крупными буквами в каждом туториале.
Комментарии