Своя модель

Дообучение на своём железе: что реально нужно

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

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

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

#Короткий ответ

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

Практический ориентир: QLoRA снимает требование к памяти примерно вчетверо по сравнению с 16-битной базой, и именно это делает домашнее дообучение возможным. Разница методов разобрана в статье про LoRA и QLoRA.

#Как считать: четыре слагаемых

1. Замороженная база. Число параметров, умноженное на число байт на параметр. В 16 битах — два байта, в 4 битах — примерно полбайта плюс небольшой накладной расход на константы квантования. Модель на 3 миллиарда параметров: около 6 ГБ в 16 битах, около 1,7–2 ГБ в 4 битах.

2. Обучаемые адаптеры и их оптимизатор. Адаптеры — доли процента от базы. Состояния Adam — ещё несколько байт на каждый обучаемый параметр, а их мало. Суммарно это обычно сотни мегабайт, и в расчёте этим слагаемым можно пренебречь, пока ранг не задран.

3. Активации. Здесь и живёт вся неопределённость. Расход растёт примерно линейно по длине последовательности и по размеру батча. Чекпойнтинг активаций (gradient_checkpointing) уменьшает его в разы ценой повторного пересчёта — на домашнем железе его включают почти всегда.

4. Накладные расходы. Рабочие буферы библиотек, фрагментация, контекст CUDA. Закладывайте запас — планировать «впритык» бессмысленно, обучение упадёт на середине.

Формула, которой достаточно для прикидки:

VRAM ≈ (параметры × байт_на_параметр) + активации(длина × батч) + запас

#Расчётная таблица

Значения ниже получены по формуле выше при батче 1, чекпойнтинге активаций включённом и умеренной длине последовательности. Это оценка, а не измерение: удвойте длину контекста — и третье слагаемое вырастет соответственно.

База 16 бит, LoRA 4 бита, QLoRA Комментарий
0,5–1B ~2–3 ГБ ~1,5–2 ГБ помещается почти везде
1,5–3B ~5–8 ГБ ~2,5–4 ГБ нижняя граница домашнего обучения
7–8B ~16–20 ГБ ~6–9 ГБ LoRA требует карты от 24 ГБ
12–14B ~28–34 ГБ ~10–14 ГБ 16 ГБ уже впритык
30B+ вне домашнего сценария ~24 ГБ и выше аренда

Первая колонка объясняет, почему QLoRA стала значением по умолчанию: без неё домашние карты закрывают только нижние две строки.

#Наши собственные ориентиры

Полезно сравнить расчёт с реальной постановкой. В пайплайне «второй копии» этого проекта записаны два конкретных потолка:

  • Карта на 4 ГБ (архитектура Pascal, без bf16). Реалистично дообучается база на 0,5–1,5 миллиарда параметров в 4 битах. Это заявлено в самом скрипте обучения как ограничение, а не как осторожная оценка, и при нехватке памяти инструкция предлагает уменьшить базу и длину последовательности.
  • Бесплатный облачный ускоритель на 16 ГБ. Комфортно помещается база на 1,5–3 миллиарда, а Colab-ноутбук проекта построен вокруг рассуждающей базы на 4 миллиарда с длиной последовательности 2048 и рангом 16.

Оговорка, без которой эти цифры вводят в заблуждение: полного прогона с замеренным результатом мы не публиковали. В самом ноутбуке написано, что обучение — опциональное усиление к системному промпту, и что начать можно вообще без него. Так что относитесь к этим числам как к границам конфигурации, а не как к отчёту об эксперименте.

#Что ещё влияет, кроме объёма памяти

Поддержка типов данных. На архитектурах без аппаратной поддержки bf16 обучение идёт в fp16 с масштабированием градиентов — это работает, но чувствительнее к настройкам. Новые карты умеют bf16, и это заметно упрощает жизнь.

Скорость памяти и вычислений. Влезло — не значит быстро. Слабая карта может считать шаг обучения так долго, что цикл «обучил — проверил — доработал» растянется на дни. Иногда честнее один раз арендовать.

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

Процессор. На обучение почти не влияет: узкое место — видеокарта. Обучать на процессоре технически возможно и практически бессмысленно по времени.

Как считать память под запуск модели (это другая, более простая задача) — в статье про то, сколько нужно VRAM для локальной LLM. Что брать, если карту вы только выбираете, — в разборе выбора видеокарты для LLM.

#Порог, за которым домашнее обучение теряет смысл

Есть три ситуации, в которых покупать железо ради дообучения не стоит:

  1. Вы планируете один-два прогона. Аренда почасово обойдётся дешевле карты на порядки. Арифметика — в статье про стоимость аренды видеокарты для дообучения.
  2. Вам нужна база больше 7–8 миллиардов. Домашняя карта, на которой это удобно, стоит как несколько лет аренды.
  3. Вы ещё не проверили, нужно ли вам дообучение вообще. Это самая частая и самая дорогая ошибка; рамка всего маршрута и его границы — в пилларе про свою модель и дообучение под себя.

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

#Где интуиция подводит

«У меня 8 ГБ, значит, влезет модель на 8 миллиардов в 4 битах». Веса — да, около 4–5 ГБ. Но остаются активации, буферы и запас, а обучение — не запуск: оно требует заметно больше, чем те же веса при инференсе. Считайте все слагаемые.

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

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

#Частые вопросы

#Можно ли дообучить модель на 8 ГБ видеопамяти?

Да, в QLoRA и на базе примерно до 3 миллиардов параметров, с батчем 1, включённым чекпойнтингом активаций и умеренной длиной последовательности. Модель на 7–8 миллиардов в 8 ГБ обучать не стоит: даже если запустится, вы будете балансировать на грани нехватки памяти весь прогон.

#Обучение на процессоре — вообще вариант?

Формально да, практически нет: разница по времени такова, что цикл проверки гипотез становится невозможным. Если видеокарты нет, дешевле и быстрее взять бесплатный облачный ускоритель на несколько часов, чем ждать сутки на процессоре.

#Сколько времени займёт обучение?

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

#Что важнее: объём памяти или скорость карты?

Объём определяет, запустится ли обучение вообще, скорость — сколько итераций вы успеете сделать. Сначала объём: не влезло — не обучили. Но если вы планируете несколько циклов доработки датасета, медленная карта превратит проект в бесконечный.

#Хватит ли бесплатного облачного блокнота?

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

#Вывод

Требования к железу считаются по формуле, а не берутся из таблицы: параметры × байт на параметр, плюс активации, плюс запас. Всё остальное — производные от этой арифметики.

Если у вас карта до 8 ГБ — ваш потолок это компактная база до трёх миллиардов в QLoRA, и этого достаточно для переноса стиля. Если нужна база крупнее или несколько прогонов — арендуйте, а домашнюю карту оставьте под запуск готовой модели: там требования в разы скромнее.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт