Гайды

Параметры Ollama которые действительно влияют на результат

Три параметра объясняют почти все жалобы «модель забывает» и «модель тормозит». Таблица со значениями по умолчанию, эффектом и четырьмя разными местами, где они задаются.

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

Параметров в Ollama больше трёх, но остальные — либо про стиль ответа, либо про узкие сценарии. Начинать нужно с этих.

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

  • Установленная Ollama и хотя бы одна скачанная модель. Базовый маршрут — в гайде по запуску моделей через Ollama.
  • Доступ к терминалу с правами на перезапуск сервиса — часть настроек живёт в переменных окружения службы.

Значения по умолчанию в Ollama менялись между версиями, и заметно. Проверяйте фактические значения своей установки командой ollama show, а не по статьям, включая эту.

#Шаг 1. Понять, где вообще задаются параметры

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

Способ Где действует Переживает перезапуск
/set parameter в интерактивном чате только текущая сессия ✗
Поле options в запросе к API только этот запрос не применимо
Директива PARAMETER в Modelfile всегда для этой модели ✓
Переменная окружения сервиса значение по умолчанию для всех ✓

Практическое правило: если параметр должен действовать для стороннего приложения, задавайте его через Modelfile или переменную окружения. Интерактивные команды до приложения не доходят.

#Шаг 2. Три параметра, объясняющие почти всё

#num_ctx — почему модель забывает

Размер контекста в токенах. Если диалог не помещается, начало обрезается, и модель действительно перестаёт помнить, о чём вы говорили пять сообщений назад. Никакого сообщения при этом не выводится.

Значение по умолчанию исторически было заметно меньше того, что способна обработать современная модель, и именно оно стоит за жалобами на забывчивость. В новых версиях умолчание подняли и добавили переменную окружения OLLAMA_CONTEXT_LENGTH для его изменения — что именно у вас, покажет ollama show.

Цена увеличения — видеопамять, и она растёт линейно: для модели класса 8B каждые восемь тысяч токенов стоят примерно гигабайт. Механику разбирает материал о том, почему большой контекст съедает видеопамять.

#num_gpu — почему модель тормозит

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

Проверяется одной командой:

ollama ps

Колонка PROCESSOR показывает фактическое распределение. 100% GPU — всё хорошо. 47%/53% CPU/GPU — половина модели считается процессором, и скорость упала в разы. Почему потери так велики уже при небольшой доле, разбирает материал о выгрузке слоёв в оперативную память.

#keep_alive — почему первый ответ идёт долго

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

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

OLLAMA_KEEP_ALIVE=-1 ollama serve

Значение -1 означает «держать бесконечно», 0 — «выгружать сразу», обычное значение задаётся как 30m или 2h.

#Шаг 3. Таблица параметров

Параметр Где задаётся По умолчанию Что меняет
num_ctx Modelfile, options, OLLAMA_CONTEXT_LENGTH зависит от версии забывчивость и расход памяти
num_gpu Modelfile, options автоподбор скорость: слои на GPU или CPU
keep_alive параметр запроса, OLLAMA_KEEP_ALIVE несколько минут задержка первого ответа
num_predict Modelfile, options без ограничения максимальная длина ответа
num_thread Modelfile, options автоподбор скорость при расчёте на CPU
temperature Modelfile, options ненулевое разнообразие текста, не скорость
OLLAMA_NUM_PARALLEL переменная окружения автоподбор число одновременных слотов
OLLAMA_FLASH_ATTENTION переменная окружения зависит от версии экономия памяти на контексте
OLLAMA_KV_CACHE_TYPE переменная окружения f16 точность хранения кэша контекста

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

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

#Шаг 4. Задать значения на постоянной основе

Для одной модели — через Modelfile. Возьмите текущую конфигурацию за основу:

ollama show --modelfile qwen2.5:7b > Modelfile

добавьте строки вида PARAMETER num_ctx 16384 и создайте свой вариант:

ollama create qwen-16k -f Modelfile

Подробный разбор синтаксиса — в гайде по Modelfile в Ollama.

Для всей установки — через переменные окружения службы. На Linux с systemd:

systemctl edit ollama

и строки вида Environment="OLLAMA_KEEP_ALIVE=2h". На Windows — переменные окружения пользователя и перезапуск службы. Переменные читаются при старте сервиса, поэтому перезапуск обязателен.

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

Контекст применился: ollama show qwen-16k покажет актуальные параметры модели. Дополнительно — задайте десяток вопросов подряд и спросите о содержании первого; если модель помнит, контекст достаточен.

Слои на видеокарте: ollama ps во время работы модели, колонка PROCESSOR должна показывать 100% GPU.

Модель не выгружается: ollama ps через десять минут простоя. Если модель в списке — keep_alive применился.

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

Настройка не подействовала на стороннее приложение. Интерактивные команды /set parameter живут только в текущей сессии. Приложение обращается к API со своими параметрами, и ваши настройки его не касаются. Решение — Modelfile или переменная окружения.

Модель перестала помещаться после увеличения контекста. Ожидаемо: контекст расходует видеопамять. Либо уменьшите значение, либо включите квантизацию KV-кэша переменной OLLAMA_KV_CACHE_TYPE=q8_0.

Переменные окружения не применились. Их читает служба при запуске, а не команда ollama run. Перезапустите сервис.

После изменения Modelfile ничего не изменилось. Изменение файла не влияет на уже созданную модель — нужно снова выполнить ollama create, а старую версию при необходимости удалить.

Скорость упала без видимой причины. Первым делом ollama ps: скорее всего, автоподбор отдал часть слоёв процессору, потому что в момент загрузки видеопамять была занята. Перезапустите модель на свободной карте. Другие типовые симптомы разобраны в справочнике по ошибкам Ollama.

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

#Как узнать текущий размер контекста?

Командой ollama show <модель> — она выводит фактические параметры. Значения по умолчанию менялись между версиями, поэтому полагаться на статьи и форумы здесь нельзя.

#Почему модель забывает начало разговора?

Диалог перестал помещаться в контекст, и начало обрезано. Увеличьте num_ctx — и заложите дополнительную видеопамять: расход растёт линейно с длиной контекста.

#Можно ли задать параметры один раз для всех моделей?

Частично: переменные окружения задают умолчания для всей установки, но не все параметры доступны в таком виде. Параметры уровня модели вроде num_gpu задаются в Modelfile для каждой модели отдельно.

#Что делать, если ollama ps показывает работу на процессоре?

Проверить, что видеопамять свободна, и перезагрузить модель. Если карта AMD или Intel — возможно, бэкенд не подхватился вовсе, и произошёл молчаливый откат. Явно задать число слоёв можно параметром num_gpu.

#Влияет ли temperature на скорость?

Нет, только на текст. Параметры сэмплинга меняют, какой токен будет выбран, но не то, с какой скоростью он вычисляется.

#Сколько слотов ставить в OLLAMA_NUM_PARALLEL?

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

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

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

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