Локальный запуск языковых и генеративных моделей упирается в один вопрос: какое устройство реально будет считать вашу модель. От того, как вы распределите работу между CPU, GPU и NPU, зависит скорость генерации, отзывчивость системы и то, запустится ли модель вообще. Главный принцип простой: самые тяжёлые вычисления нужно отдать самому быстрому доступному ускорителю, а остальное оборудование использовать как вспомогательное, а не как равноправного участника. Ниже разберём, как это сделать на практике в Windows и Linux, что настраивать в популярных инструментах вроде llama.cpp, Ollama и LM Studio, и какие ошибки чаще всего убивают производительность.
- Почему распределение нагрузки важнее «мощности железа»
- Как понять, чем вы располагаете
- Объём и тип видеопамяти
- Возможности CPU
- Наличие и уровень поддержки NPU
- Стратегия по умолчанию: GPU-first
- Когда и как задействовать NPU
- Роль CPU: когда он главный, а когда вспомогательный
- Смешанный режим: гибридная выгрузка
- Приоритеты на уровне операционной системы
- Windows
- Linux
- Энергоплан
- Контекст и KV-кэш: недооценённый потребитель памяти
- Типичные ошибки и их последствия
- Как проверить, что настройка сработала
- Сценарии действий под разные условия
- С чего начать прямо сейчас
Почему распределение нагрузки важнее «мощности железа»
Генерация текста или изображений локальной моделью состоит из тысяч однотипных матричных операций. Каждое устройство обрабатывает их с разной скоростью, и итоговая скорость определяется самым медленным звеном в цепочке. Если половина слоёв модели считается на GPU, а половина на CPU, система работает не «в два устройства быстрее», а примерно со скоростью медленного устройства плюс накладные расходы на передачу данных между ними.
Отсюда следуют три практических вывода:
- GPU почти всегда приоритетнее CPU для инференса больших моделей: видеопамять даёт огромную пропускную способность, которая критичнее сырой вычислительной мощности.
- NPU полезен только там, где он поддержан программным стеком. Нейропроцессор (NPU) — специализированный блок в современных мобильных и настольных чипах, оптимизированный под низкое энергопотребление при инференсе компактных моделей. Но если фреймворк вашей модели не умеет с ним работать, NPU просто простаивает.
- CPU — это страховка и фон: он выполняет то, что не поместилось в видеопамять, обслуживает токенизацию, ввод-вывод и системные задачи.
Как понять, чем вы располагаете
Прежде чем что-то настраивать, зафиксируйте три параметра своей системы. Они определяют всю дальнейшую стратегию.
Объём и тип видеопамяти
Для дискретной видеокарты важен объём VRAM: именно в неё нужно уместить веса модели, контекст (KV-кэш) и буферы. Модель на 7–8 миллиардов параметров в 4-битном квантовании занимает порядка 4–6 ГБ, модель на 13 миллиардов — примерно 8–10 ГБ, а 30+ миллиардов параметров уже требуют 20 ГБ и больше. Это ориентировочные порядки величин: точный размер зависит от формата квантования и длины контекста. Если VRAM меньше нужного, часть модели придётся выгружать в обычную память — и скорость резко падает.
Возможности CPU
Для процессора значимы количество физических ядер, поддержка AVX2 или AVX-512 (наборы инструкций, ускоряющих матричные операции) и пропускная способность оперативной памяти. Двухканальный режим памяти даёт заметный прирост именно потому, что инференс на CPU часто упирается не в вычисления, а в чтение весов из памяти.
Наличие и уровень поддержки NPU
NPU есть в ряде современных процессоров Intel Core Ultra, AMD Ryzen AI и Snapdragon. Само по себе его наличие ничего не гарантирует: нужен драйвер, среда исполнения (например, DirectML, ONNX Runtime или OpenVINO в зависимости от платформы) и модель, сконвертированная под этот стек. Проверьте на сайте производителя вашего чипа, какие инструменты официально поддерживают NPU, и уточните актуальное состояние поддержки — эта область быстро меняется, и сведения на дату покупки могут устареть.
Стратегия по умолчанию: GPU-first
Если у вас есть дискретная видеокарта с достаточным объёмом VRAM, базовая настройка выглядит так:
- Загрузите модель в квантованном формате (4-битные варианты вроде Q4_K_M в экосистеме GGUF — разумный компромисс между качеством и размером).
- Выгрузите на GPU максимально возможное число слоёв так, чтобы вместе с KV-кэшем они поместились в VRAM с запасом 10–20%.
- Оставьте CPU обработку системных задач, токенизации и, при необходимости, нескольких последних слоёв.
- Проверьте фактическую загрузку устройств через диспетчер задач (Windows) или nvidia-smi / nvtop / radeontop (Linux).
В llama.cpp и его графических оболочках за это отвечает параметр n-gpu-layers (в LM Studio — ползунок «GPU Offload», в Ollama — автоматическое размещение с возможностью влияния через переменные окружения). Начните с полного переноса всех слоёв; если система зависает или падает с ошибкой нехватки памяти, снижайте число слоёв шагами по несколько штук, пока не найдёте устойчивое значение.
Типичная ошибка — оставить значение по умолчанию, которое переносит на GPU лишь часть слоёв «на всякий случай». В результате модель работает медленнее, чем могла бы, хотя VRAM ещё свободна. Контрольная точка простая: во время генерации загрузка GPU должна быть высокой и стабильной, а не периодически проседать до нуля.
Когда и как задействовать NPU
NPU имеет смысл рассматривать в трёх сценариях:
- Энергосбережение на ноутбуке. NPU потребляет заметно меньше энергии, чем дискретная GPU, поэтому для фоновых задач — распознавание речи, размытие фона в видеозвонках, классификация — он предпочтительнее.
- Компактные модели. Нейропроцессоры обычно рассчитаны на модели небольшого размера. Тяжёлую языковую модель на десятки миллиардов параметров большинство потребительских NPU либо не потянет, либо потянет с потерей качества из-за агрессивного квантования.
- Освобождение GPU. Если GPU занят игрой или рендерингом, часть лёгких ИИ-задач можно переложить на NPU, чтобы они не конкурировали за ресурсы.
На практике подключение NPU выглядит так: установите драйвер и среду исполнения от производителя платформы, возьмите модель в совместимом формате (чаще всего ONNX), конвертируйте или скачайте версию, собранную под ваш NPU, и укажите эту среду исполнения в приложении. Важно понимать ограничение: популярные инструменты для запуска LLM, построенные вокруг CUDA и GGUF, исторически ориентированы на GPU и CPU, и поддержка NPU в них появляется постепенно и неравномерно. Перед покупкой ноутбука «ради NPU» проверьте, что конкретные программы, которые вы планируете использовать, действительно умеют с ним работать — маркетинговая поддержка чипа и реальная поддержка в вашем софте не одно и то же.
Роль CPU: когда он главный, а когда вспомогательный
CPU становится основным устройством в двух случаях: когда дискретной видеокарты нет вовсе и когда модель слишком велика даже для частичной выгрузки. Тогда задача настройки меняется: нужно выжать максимум из подсистемы памяти.
Что реально влияет на скорость инференса на CPU:
- Двухканальная или четырёхканальная память. Пропускная способность RAM — узкое место номер один. Установка второй планки памяти в ноутбук нередко ускоряет генерацию сильнее, чем любой программный твик.
- Поддержка AVX2/AVX-512. Собирайте или выбирайте сборки llama.cpp с поддержкой набора инструкций, который есть в вашем процессоре.
- Число потоков. Параметр n-threads обычно оптимально ставить равным числу физических ядер, без гиперпоточности: логические ядра добавляют накладные расходы, а не скорость. Проверьте экспериментально значения «физические ядра» и «физические минус одно» — иногда резервирование одного ядра под систему даёт более плавный результат.
- Отсутствие конкуренции. Закройте браузер с десятками вкладок, индексацию и обновления на время генерации: фоновые процессы отбирают память и кэш.
Смешанный режим: гибридная выгрузка
Когда модель не помещается в VRAM целиком, применяется частичная выгрузка: часть слоёв на GPU, остальные на CPU. Здесь важно понимать механику. Слои обрабатываются последовательно, поэтому активации каждый раз перемещаются между видеопамятью и оперативной памятью. Чем больше граница раздела, тем больше обменов и тем ниже скорость. Поэтому правило такое: лучше уменьшить размер модели или квантование и уместить её целиком в VRAM, чем гонять большую модель пополам между устройствами.
Условный пример: видеокарта с 8 ГБ VRAM. Модель на 14 миллиардов параметров в 4-битном формате займёт около 8–9 ГБ только весами, плюс контекст — целиком не влезает. Альтернатива: взять модель на 7–8 миллиардов в том же квантовании (4–5 ГБ) с запасом под длинный контекст. Второй вариант почти всегда даст более высокую скорость и предсказуемое поведение, хотя первая модель «умнее» на бумаге.
| Конфигурация системы | Приоритет устройств | Что настроить в первую очередь |
|---|---|---|
| Дискретная GPU с большой VRAM | GPU → CPU → NPU | Полная выгрузка слоёв, контроль свободной VRAM под контекст |
| GPU со средней VRAM | GPU + частично CPU | Меньшая модель или более сильное квантование, чтобы уйти от смешанного режима |
| Ноутбук с NPU, без дискретной GPU | NPU для лёгких задач, CPU для LLM | Среда исполнения производителя, модели в поддерживаемом формате |
| Только CPU | CPU | Двухканальная память, AVX-сборки, подбор числа потоков |
| iGPU (встроенная графика) | iGPU + CPU | Выделение фиксированного объёма общей памяти под графику, умеренный контекст |
Приоритеты на уровне операционной системы
Помимо распределения самой модели, стоит управлять тем, как ОС распределяет ресурсы между процессами.
Windows
В диспетчере задач на вкладке «Подробности» можно задать приоритет процесса (например, «Высокий» для сервера инференса) и привязку к ядрам (affinity). Это оправдано, когда модель работает долго в фоне и вы параллельно пользуетесь компьютером: привязав процесс к части ядер, вы оставите остальным отзывчивость интерфейса. Не ставьте приоритет «Реального времени» — это может привести к подвисанию всей системы. Для гибридных процессоров с разными по производительности ядрами (P-cores и E-cores) привязка тяжёлого процесса к производительным ядрам иногда даёт ощутимый выигрыш, но требует эксперимента на вашей конкретной машине.
Linux
Здесь доступны утилиты nice/renice для приоритета, taskset для привязки к ядрам и cgroups для ограничения ресурсов. Для постоянного фонового сервиса удобно описать лимиты в юните systemd. Принцип тот же: выделить инференсу стабильную долю ресурсов, не отбирая всё у интерактивных задач.
Энергоплан
На ноутбуке схема электропитания напрямую влияет на скорость: сбалансированный режим может занижать частоты CPU и ограничивать питание GPU. Для длительных генераций переключайтесь в режим производительности, но следите за температурой — троттлинг при перегреве сведёт все настройки на нет.
Контекст и KV-кэш: недооценённый потребитель памяти
Многие планируют память только под веса модели и забывают про контекст. KV-кэш хранит промежуточные состояния обработки текста, и его размер растёт с длиной контекста и размером модели. Запрос «поместились ли веса» — недостаточная проверка: модель может загрузиться, но упасть или начать выгружаться в общую память при попытке работать с длинным документом.
Практические ориентиры:
- Начинайте с умеренного контекста (например, 4–8 тысяч токенов) и увеличивайте его, наблюдая за свободной VRAM.
- Если инструмент позволяет выбирать реализацию внимания (flash attention и подобные), включение такой оптимизации обычно снижает расход памяти на контекст — проверьте поддержку в вашей сборке.
- Следите за поведением при длинных диалогах: деградация скорости по мере роста переписки — признак того, что кэш перестал помещаться.
Типичные ошибки и их последствия
- Частичная выгрузка «по привычке». Значение слоёв по умолчанию оставляет половину работы CPU. Симптом: GPU загружен рывками, скорость низкая при свободной VRAM. Решение: увеличить число слоёв до максимума, который держится стабильно.
- Игнорирование памяти под контекст. Модель запускается, но падает на длинном запросе. Решение: закладывать запас 10–20% VRAM и тестировать максимальную длину запроса заранее.
- Слишком много потоков на CPU. Установка числа потоков равным числу логических ядер часто замедляет генерацию. Решение: физические ядра, затем тонкая подстройка.
- Ожидания от NPU без проверки софта. Пользователь покупает устройство ради NPU, а его основной инструмент этот блок не использует. Решение: проверить список поддерживаемых приложений и моделей до покупки.
- Одновременный запуск нескольких тяжёлых задач. Генерация изображений на фоне работы LLM заставляет устройства делить ресурсы, и обе задачи замедляются непредсказуемо. Решение: очередность вместо параллельности, если нет избытка ресурсов.
- Перегрев и троттлинг. Ноутбук в режиме производительности без охлаждающей подставки снижает частоты через минуты работы. Решение: мониторинг температур и чистка системы охлаждения.
Как проверить, что настройка сработала
Оценка результата строится на наблюдаемых показателях, а не на ощущениях:
- Замерьте скорость генерации в токенах в секунду — большинство инструментов показывает её в логе или интерфейсе. Зафиксируйте значение до изменений.
- Во время генерации откройте мониторинг: загрузка GPU должна быть стабильно высокой при полной выгрузке; загрузка CPU — умеренной.
- Проверьте потребление VRAM в покое и под пиковой длиной контекста. Свободный запас должен оставаться.
- Оцените отзывчивость системы при фоновом инференсе: курсор, окна и видео не должны заметно подтормаживать.
- Повторите замер после каждого изменения ровно одним параметром — иначе не поймёте, что именно дало эффект.
Сценарии действий под разные условия
Есть игровая видеокарта с 12+ ГБ VRAM. Ваш путь — GPU-first без компромиссов: полная выгрузка, квантование Q4/Q5, комфортный контекст. NPU и CPU в расчёт не берите, кроме случаев, когда GPU занят другой задачей.
Видеокарта на 6–8 ГБ. Подбирайте модель под объём памяти, а не наоборот. Модели 7–9 миллиардов параметров в 4-битном формате — рабочая зона. Экспериментируйте с квантованием: иногда Q5 меньшей модели даёт лучший практический результат, чем Q4 большей.
Современный ноутбук с NPU без дискретной графики. Разделите задачи: лёгкий постоянный ИИ-фон (распознавание, ассистентские функции) — на NPU через поддерживаемые приложения, основную языковую модель — на CPU/iGPU с упором на память и потоки. Реалистичных ожиданий по скорости придерживайтесь: это конфигурация «работает», а не «летает».
Старый ПК только с CPU. Ставьте компактные модели (до 7 миллиардов параметров), обеспечьте двухканальную память, используйте AVX2-сборки и не рассчитывайте на большие контексты. Это сценарий для экспериментов и неторопливых задач.
С чего начать прямо сейчас
Определите объём VRAM и наличие NPU в вашей системе, затем выберите строку из таблицы выше, соответствующую вашей конфигурации. Дальнейший порядок простой: запустите модель с полной выгрузкой на самый быстрый поддерживаемый ускоритель, замерьте базовую скорость, после чего меняйте по одному параметру — число слоёв, квантование, размер контекста, число потоков — фиксируя результат каждого изменения. Через несколько итераций вы получите конфигурацию, которая на вашем железе даёт максимум скорости без нестабильности. И помните: программная поддержка NPU и рекомендации по квантованию быстро развиваются, поэтому перед крупными решениями (например, покупкой оборудования под конкретные задачи) сверьтесь с актуальной документацией используемых вами инструментов.
Материал носит информационный характер. Конкретные параметры, названия настроек и уровень поддержки оборудования зависят от версии ПО, драйверов и модели устройства — сверяйтесь с официальной документацией ваших инструментов и производителя железа перед принятием решений о покупке или изменении системных настроек.
