Гайды

Как обновлять локальные модели и не сломать то что работало

Модель — такая же зависимость с версией, как библиотека в коде. Регламент обновления из пяти шагов и чек-лист приёмочной проверки, который ловит регрессию до переключения.

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

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

#Что понадобится

  • Установленный инструмент запуска и работающая модель. Базовый маршрут — в гайде по запуску моделей через Ollama.
  • Свободное место на две версии модели одновременно. Это цена возможности откатиться.
  • Набор из пяти-десяти своих задач с известным хорошим результатом. Без него проверять нечего.

#Почему обновление вообще может навредить

Три причины, и все встречаются на практике.

Плавающий тег. Короткое имя модели указывает на «последнюю» версию, и то, на что оно указывает, меняется. Сегодня за ним один файл, через месяц — другой, собранный иначе.

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

Настоящая смена версии модели. Новая версия обычно лучше в среднем и почти всегда иначе ведёт себя в частностях. «Лучше по бенчмаркам» и «лучше на ваших задачах» — разные утверждения.

#Регламент из пяти шагов

#Шаг 1. Зафиксировать текущее состояние

Прежде чем что-либо качать, запишите, что у вас работает:

ollama list
ollama show qwen2.5:7b
ollama show --modelfile qwen2.5:7b > backup-modelfile.txt

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

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

#Шаг 2. Сделать копию

ollama cp qwen2.5:7b qwen2.5-7b-known-good

Копия ссылается на те же данные и почти не занимает места, но переживает обновление исходного тега. Это ваш путь назад.

#Шаг 3. Обновлять в стороне, а не поверх

Скачивайте новую версию под другим именем или проверяйте её до переключения рабочих настроек. Правило простое: пока новая версия не прошла проверку, рабочим остаётся старое имя.

Если вы используете свой пресет с параметрами, соберите его заново на новой базе — и не удаляйте прежний. Порядок работы с пресетами — в гайде по Modelfile в Ollama.

#Шаг 4. Прогнать приёмочную проверку

Чек-лист ниже — минимальный. Прогоняется на новой версии, результаты сравниваются с записанными на шаге 1.

  • Язык ответа. Заданный по-русски вопрос получает ответ по-русски, без сваливания на английский.
  • Следование системному промпту. Указание формата и роли соблюдается.
  • Формат вывода. Если вы просите список, таблицу или JSON — приходит именно это.
  • Отказ выдумывать. На вопрос о заведомо несуществующем предмете модель говорит, что не знает, а не сочиняет.
  • Длина ответа. Просьба ответить кратко даёт краткий ответ.
  • Работа с контекстом. После десяти сообщений модель помнит содержание первого.
  • Ваша профильная задача. Та, ради которой вы вообще держите локальную модель, — на реальном примере.
  • Скорость. Замер по прежней методике: новая версия может иметь другой размер или квант.
  • Расход памяти. Проверьте, что модель по-прежнему помещается с нужным контекстом.

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

#Шаг 5. Переключиться или откатиться

Прошло — переключайте рабочее имя на новую версию и держите старую копию ещё неделю. Не прошло — удаляйте новую, оставайтесь на прежней:

ollama rm qwen2.5:7b
ollama cp qwen2.5-7b-known-good qwen2.5:7b

Копия сохранена на шаге 2 именно для этого момента.

#Проверка результата

Обновление считается успешным, если выполняются три условия. Первое: приёмочный набор пройден не хуже, чем на прежней версии, — не «в целом нормально», а по пунктам. Второе: модель по-прежнему помещается в память с рабочим контекстом. Третье: у вас на диске всё ещё лежит предыдущая версия, к которой можно вернуться.

Третье условие нарушают чаще всего, и обнаруживается это через неделю, когда возвращаться уже некуда.

#Что может пойти не так

Обновление удалило старую версию. Скачивание по тому же тегу заменяет содержимое. Копия, сделанная заранее, — единственная защита.

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

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

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

Обновился инструмент, а не модель, и что-то изменилось. Такое тоже бывает: изменения умолчаний в движке влияют на поведение при неизменных весах. Фиксируйте в записи и версию инструмента.

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

#Нужно ли обновлять модели вообще?

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

#Как закрепить конкретную версию?

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

#Сколько версий держать?

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

#Что делать, если новая версия лучше в одном и хуже в другом?

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

#Как выбрать, на какую модель переходить?

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

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

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

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