LoRA fine-tuning своей модели на VPS
Открытая модель отвечает грамотно, но не так, как нужно вам: не тем стилем, без вашей терминологии, без понимания специфики продукта. Первая мысль — дообучить модель под себя, но полный fine-tuning требует ресурсов уровня дата-центра и звучит нереалистично для одного сервера. LoRA — способ получить похожий эффект на порядок дешевле. Разберём, что это такое без магии, когда действительно стоит связываться, и что для этого реально нужно на VPS.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое LoRA простыми словами
LoRA (Low-Rank Adaptation) — способ дообучения, при котором вы не трогаете веса самой большой модели, а обучаете отдельную маленькую надстройку поверх неё. Модель на время обучения остаётся замороженной, а меняется только компактный набор дополнительных параметров — адаптер, который весит десятки или сотни мегабайт вместо десятков гигабайт исходной модели.
Разница с полным fine-tuning принципиальная. Полное дообучение пересчитывает все веса модели: для этого нужна память, чтобы держать градиенты и оптимизатор для каждого из миллиардов параметров — счёт идёт на десятки и сотни гигабайт видеопамяти даже для моделей среднего размера. LoRA обучает в разы, а часто на порядки меньше параметров, поэтому требования к памяти падают в разы — не до нуля, но принципиально.
Итоговый файл адаптера не заменяет модель, а подключается к ней поверх. Это значит, что можно держать одну базовую модель и коллекцию разных LoRA-адаптеров под разные задачи, переключаясь между ними без повторной загрузки гигантского файла модели. Именно такой сценарий и делает LoRA практичной для небольшого сервера — тяжёлая часть загружается один раз, а лёгкие адаптеры добавляют нужное поведение.
Для каких задач это оправдано
LoRA хорошо решает узкие, предсказуемые задачи, а не «сделать модель умнее». Если вам нужен конкретный стиль ответов — короче, официальнее, в определённом тоне бренда — адаптер быстро закрепляет этот паттерн на примерах. Модель не становится умнее, но начинает звучать так, как вы хотите, устойчивее, чем через одни только системные промпты.
Вторая честная область применения — узкая терминология и формат. Если у вас есть предметная область со своим жаргоном, аббревиатурами, специфичной структурой документов (юридические заключения, техподдержка по конкретному продукту, внутренние регламенты), LoRA на паре сотен примеров учит модель узнавать эти паттерны и воспроизводить их точнее, чем базовая модель, которая такого просто не видела при обучении.
Чего LoRA не даёт — не стоит ждать этого от неё. Она не добавляет модели новые факты и знания в объёме, сравнимом с базой знаний — для актуальных фактов и документов честнее и надёжнее RAG (поиск по своим данным с подстановкой в промпт), а не дообучение. Она не превращает слабую маленькую модель в сильную — компетентность модели закладывается на этапе её собственного обучения, а LoRA только смещает поведение внутри того, что модель уже умеет. Если задача — «пусть модель знает про наш продукт» — почти всегда быстрее и дешевле сначала попробовать промпт с контекстом или RAG, а к LoRA переходить, когда нужен именно устойчивый стиль или формат.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть OllamaЧестные требования по ресурсам
Здесь важно не создавать иллюзий. Для дообучения через LoRA, даже небольшой модели, обычно нужна видеокарта — чисто CPU-сервер для этой задачи не подходит, за редким исключением совсем маленьких моделей и то с сильными компромиссами по времени. Обучение — это прямой и обратный проход через модель много раз подряд на батче примеров, и без параллельных вычислений GPU это либо не запустится по памяти, либо займёт часы там, где на видеокарте уйдут минуты.
Ориентиры по видеопамяти сильно зависят от размера модели, длины контекста и техники квантования во время обучения. Для сравнительно небольших открытых моделей (единицы миллиардов параметров) LoRA-дообучение в 4-битном или 8-битном режиме реально запустить на видеокарте с 12–16 ГБ VRAM. Для моделей покрупнее требования растут заметно, и без квантования веса просто не поместятся в память карты. Это ориентировочные цифры — точный расход зависит от конкретной модели, длины ваших примеров и настроек, у вас может получиться иначе.
Отсюда практический вывод: для этой задачи нужен GPU-сервер, а не обычный CPU-VPS. Если вы уже держите обычный CPU-VPS под инференс через Ollama — для самого дообучения его использовать не получится, нужна отдельная машина с видеокартой на время тренировки. Разумная схема: берёте GPU-сервер на время обучения (оно занимает от часа до нескольких часов на небольшом датасете), получаете готовый адаптер, а дальше уже гоняете его вместе с базовой моделью на своём привычном сервере для инференса — там видеокарта в таком объёме больше не нужна. Разница между CPU и GPU для локальных моделей разобрана подробнее в статье CPU или GPU для локальной LLM, а конкретный выбор карты под обучение — в материале про выбор GPU-сервера для обучения моделей.
Общий пайплайн: от датасета до адаптера
Весь процесс укладывается в несколько шагов, и на каждом есть где ошибиться.
1. Подготовка датасета. Это самый важный этап, и от него зависит результат сильнее, чем от любых настроек обучения. Датасет — набор пар «вход → желаемый выход» в структурированном формате (обычно JSON или JSONL), которые показывают модели именно то поведение, которое вы хотите закрепить. Для сдвига стиля ответов может хватить нескольких сотен качественных примеров, для более сложной узкой терминологии — больше, вплоть до нескольких тысяч. Качество важнее количества: полсотни аккуратных, разнообразных, проверенных примеров дают лучший результат, чем тысяча сгенерированных наспех и похожих друг на друга.
2. Выбор базовой модели. Берите открытую модель подходящего размера под ваши ресурсы — чем меньше модель, тем скромнее требования к VRAM и тем быстрее идёт обучение, но и тем ниже потолок качества. Разумная стратегия — начать с модели среднего размера, которая заведомо помещается в доступную видеокарту с запасом, а не гнаться сразу за самой крупной.
3. Запуск дообучения. Здесь в игру вступают готовые инструменты — не нужно писать цикл обучения с нуля. Библиотека PEFT (Parameter-Efficient Fine-Tuning) от Hugging Face — стандартный способ применить LoRA к модели: она добавляет адаптер поверх выбранных слоёв, замораживает исходные веса и обучает только его. В связке с ней обычно используется библиотека transformers для загрузки модели и bitsandbytes для квантования в 4 или 8 бит, что и снижает требования к видеопамяти. Точные команды запуска зависят от конкретной модели, версий библиотек и вашего датасета — на сервере это оформляется как обычный Python-скрипт обучения, который вы настраиваете под свою задачу и запускаете на GPU-машине.
4. Оценка и итерация. После обучения проверьте адаптер на примерах, которых не было в датасете — не полагайтесь только на то, что модель хорошо повторяет обучающие данные (это может означать переобучение, а не реальное усвоение паттерна). Если результат не устраивает, чаще всего проблема в датасете — его размере, разнообразии или качестве разметки, а не в тонких настройках гиперпараметров.
Инструменты вокруг PEFT
PEFT — это ядро, но вокруг него сложилась привычная связка инструментов, которая закрывает большинство практических задач. transformers отвечает за загрузку базовой модели и токенизатора в том же экосистемном формате, в котором распространяется большинство открытых моделей. bitsandbytes даёт квантованную загрузку модели в 4/8 бит, без которой обучение на карте с ограниченным VRAM попросту не поместится в память. accelerate упрощает запуск обучения на конкретном железе, включая работу с несколькими GPU, если они у вас есть.
Отдельно стоит TRL (Transformer Reinforcement Learning) — библиотека с готовыми классами для разных сценариев дообучения на диалоговых и инструктивных данных, которая берёт на себя часть рутины вокруг PEFT: подготовку батчей, форматирование промптов, цикл обучения. Для большинства задач стиля и терминологии связки PEFT + transformers + bitsandbytes достаточно, а TRL пригождается, когда датасет — это диалоги или пары «инструкция → ответ» в стандартизированном формате.
Ставить всё это стоит в изолированное виртуальное окружение Python на GPU-сервере, отдельно от прод-окружения, где крутится ваш инференс через Ollama или другой раннер — так обновление одной из библиотек под обучение не сломает то, что уже стабильно работает.
Как подключить адаптер к Ollama
Результат обучения — файл или набор файлов LoRA-адаптера, который сам по себе не запускается: ему всегда нужна базовая модель, поверх которой он был обучен. В экосистеме Ollama есть свой путь интеграции: адаптер оформляется в Modelfile через директиву, которая указывает на файл адаптера, и на его основе собирается новая модель, доступная в Ollama так же, как любая другая:
FROM llama3
ADAPTER ./my-lora-adapter
После ollama create my-model -f Modelfile в системе появляется модель, которая при инференсе объединяет веса базовой модели и вашего адаптера — внешне для вас и для API это обычная модель Ollama, которую можно вызывать привычным способом. Важный нюанс: адаптер должен быть совместим с той же базовой моделью и её архитектурой, на которой обучался — подставить LoRA от одной модели к другой, даже похожей по размеру, не получится.
Формат, в котором PEFT сохраняет адаптер по умолчанию, и формат, который ожидает Ollama, не всегда совпадают один в один — в зависимости от версий инструментов может понадобиться конвертация файлов в формат GGUF, привычный для Ollama и llama.cpp. Это техническая деталь, которая решается инструментами конвертации из экосистемы llama.cpp, но закладывайте на неё время как на отдельный шаг пайплайна, а не считайте само собой разумеющимся, что файл после обучения сразу подойдёт.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть OllamaОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Можно ли обучить LoRA на обычном CPU-VPS без видеокарты?
Практически нет. Для дообучения даже небольшой модели через LoRA обычно нужна видеокарта — без неё это либо не запустится по памяти, либо займёт неприемлемо много времени. Исключение — очень маленькие модели с сильными компромиссами. Для этой задачи нужен GPU-сервер, а держать обычный CPU-сервер имеет смысл уже потом, для инференса готовой связки модель + адаптер.
Сколько времени занимает обучение LoRA?
Сильно зависит от размера модели, объёма датасета и карты, но для небольшой модели и датасета на несколько сотен примеров речь обычно идёт от часа до нескольких часов, а не дней. Это ориентир, а не гарантия — у вас может получиться иначе.
Нужен ли большой датасет?
Нет, и это одно из главных преимуществ LoRA перед полным fine-tuning. Для сдвига стиля хватает нескольких сотен качественных примеров. Разнообразие и аккуратность разметки важнее размера — маленький чистый датасет обычно даёт лучший результат, чем большой и шумный.
Заменяет ли LoRA базу знаний или RAG?
Нет. LoRA меняет стиль и поведение модели, а не добавляет ей актуальные факты в объёме базы знаний. Если задача — «модель должна знать наши документы» — это в первую очередь задача для RAG, а LoRA имеет смысл добавлять поверх, когда нужен ещё и устойчивый формат или тон ответов.
Можно ли использовать один и тот же GPU-сервер для нескольких LoRA-адаптеров?
Да, сервер можно использовать многократно для разных обучений подряд, а после того как адаптеры готовы, сама GPU-мощность для их использования уже не нужна — инференс с подключённым адаптером идёт на той же машине, что и обычная модель.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.