Обучить 7B целиком — нужны десятки гигабайт видеопамяти. Обучить крошечную добавку к ней — хватит ваших шестнадцати. Как устроен приём и как им пользоваться.
Из главы 03: при обучении помимо весов надо хранить градиенты и состояния оптимизатора — втрое-вчетверо больше памяти, чем занимает модель. Для 7B это десятки гигабайт. У вас 16.
Приём LoRA: не трогать исходные веса вообще. Заморозить их и обучить маленькую добавку, которая прибавляется к результату.
обычное дообучение: W → W' (меняем 7 млрд чисел)
LoRA: W + A·B (W заморожен,
↑ ↑ учим только A и B)
не трогаем несколько миллионов чисел
Хитрость в том, что A и B — узкие матрицы. Если исходная матрица 4096×4096 (это 16 миллионов чисел), то A размером 4096×8 и B размером 8×4096 дают вместе 65 тысяч — в 250 раз меньше. А их произведение имеет тот же размер, что исходная матрица, и потому может к ней прибавляться.
Наблюдение, лежащее в основе: изменения, нужные для адаптации модели к новой задаче, оказываются простыми по структуре. Их можно описать гораздо меньшим числом параметров, чем саму модель. Это не доказано строго, но подтверждается на практике повсеместно.
| Полное дообучение 7B | LoRA к 7B | |
|---|---|---|
| Видеопамять | Десятки ГБ | Умещается в 16 ГБ |
| Время | Дни на нескольких картах | Часы на одной |
| Размер результата | Вся модель заново, гигабайты | Файл в десятки мегабайт |
| Можно ли отключить | Нет | Да — просто не подключать |
| Сколько штук | Одна | Много, переключаемые |
| Качество | Эталон | Близко для узких задач |
Результат — маленький отдельный файл. Одна базовая модель плюс несколько адаптеров: один под ваш стиль текстов, другой под строгий формат вывода, третий под грузинский. Переключаются мгновенно, места почти не занимают.
Можно пойти дальше: держать замороженную базовую модель в сжатом виде (4 бита, как в главе 10 книги «ИИ»), а обучать адаптер в обычной точности. Это то, что обычно называют QLoRA.
Экономия огромная: 7B в четырёх битах занимает около 4 ГБ вместо 14, и на ваших 16 ГБ остаётся достаточно места для самого обучения. Именно этот вариант делает дообучение на ноутбуке реальным.
| Параметр | Что значит | С чего начать |
|---|---|---|
| rank (r) | Ширина добавки. Больше — выразительнее и тяжелее | 8 или 16. Для стиля хватает 8, для сложного — 32 |
| alpha | Насколько сильно добавка влияет | Обычно берут вдвое больше rank |
| target modules | К каким матрицам подключать | Начните с матриц внимания; шире — сильнее, но дороже |
| learning rate | Размер шага из главы 04 | Для LoRA заметно больше, чем при полном дообучении |
| epochs | Сколько раз пройти данные | 1–3. Больше — почти гарантированное переобучение |
| batch + накопление | Приём из главы 04 для экономии памяти | Маленький батч, накопление 4–8 шагов |
Значения по умолчанию в разных библиотеках различаются, и они меняются от версии к версии. Берите значения из документации того инструмента, которым будете пользоваться, — таблица выше про то, что настраивать и в какую сторону, а не про точные цифры.
Здесь ровно как в главе 05: результат определяется данными, а не настройками.
| Сколько примеров | Что получится |
|---|---|
| Меньше 50 | Почти ничего. Либо не изменится, либо сломается |
| 100–500 | Стиль и формат схватываются |
| 1000–5000 | Уверенный результат для узкой задачи |
| Больше 10000 | Хорошо, но собрать качественно — уже работа |
Двести отличных примеров лучше пяти тысяч посредственных. Модель выучит ровно то, что вы показали, включая ваши опечатки, непоследовательность формата и случайно затесавшийся мусор. Час на вычитку данных даёт больше, чем день на подбор параметров.
Формат данных — те же пары «задание — ответ», что в главе 12. Важно, чтобы ответы были единообразны: если в половине примеров вы пишете маркированным списком, а в половине сплошным текстом, модель выучит случайность.
| Симптом | Причина | Решение |
|---|---|---|
| Не хватает видеопамяти | Слишком большой батч или длинные примеры | Батч 1 плюс накопление; укоротить примеры; сжатая база |
| Ничего не изменилось | Мало данных, мало эпох, слишком маленький шаг | Больше данных; проверить, что адаптер вообще подключён |
| Дословно повторяет обучающие примеры | Переобучение — глава 05 | Меньше эпох, меньше rank, больше данных |
| Стала хуже в обычных задачах | Забывание: адаптер перетянул одеяло | Меньше rank и alpha, меньше эпох |
| Выдаёт бессвязное | Слишком большой шаг обучения | Уменьшить в несколько раз |
| Ошибка в середине обучения | Длинный пример не влез | Ограничить длину, отфильтровать данные |
| Размер модели | На 16 ГБ видеопамяти |
|---|---|
| 1–3B | Свободно, быстро. Хорошо для тренировки навыка |
| 7–8B | Реально в сжатом варианте. Основной рабочий размер |
| 14B | Возможно в сжатом, с короткими примерами и маленьким батчем |
| 32B и выше | Нет |
Первую LoRA сделайте на модели 1–3B, даже если она вам не нужна. Цикл пройдёт за десятки минут, вы увидите весь процесс целиком и набьёте руку на настройках. Начинать сразу с 7B — значит по три часа ждать результата каждой ошибки.
Языковые модели закончились. Переходим к совершенно другому классу — тому, что рисует картинки. Механизм там неожиданно изящный.
Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.