# Как понять, почему локальная ИИ-модель тормозит на Windows: диагностика GPU, VRAM и логов

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-ponyat-pochemu-lokalnaya-ii-model-tormozit-na-windo.html

## TL;DR
- Время выполнения: 40–60 минут
- Уровень сложности: Intermediate
- Понадобится: Windows 10 или 11 (x64), PowerShell 5.1+, установленный драйвер GPU, утилита `nvidia-smi` (ставится вместе с драйвером NVIDIA), локальный рантайм (Ollama, LM Studio или llama.cpp) — точные пути логов и имена переменных сверьте с документацией вашей версии

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-ponyat-pochemu-lokalnaya-ii-model-tormozit-na-windo-ru-1.jpg)

- ОС: Windows 10 или 11 x64. Проверить сборку: `winver`.
- Права администратора для чтения логов в системных каталогах и снятия счётчиков производительности.
- Драйвер GPU, установленный с сайта производителя, а не «базовый видеоадаптер» из диспетчера устройств.
- Свободное место на диске: минимум в 2 раза больше размера файла модели — иначе рантайм будет «тормозить» на подкачке.
- Запущенный локальный рантайм и хотя бы одна загруженная модель. Если модели ещё нет, начните с гайда [Как запустить ИИ-модель локально на своём компьютере](https://ai-release.org/guides/kak-zapustit-ii-model-lokalno-na-svoem-kompyutere-gayd.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
- Чек-лист готовности:
  - [ ] `nvidia-smi` отвечает в PowerShell (для NVIDIA)
  - [ ] модель отвечает на простой запрос
  - [ ] известен путь к лог-файлу рантайма
  - [ ] закрыты браузер и игры, занимающие VRAM

## Шаг 1. Зафиксировать профиль GPU, драйвера и объём VRAM

**Что сделать:** собрать «паспорт» видеокарты: модель, версия драйвера, полный и свободный объём VRAM. VRAM — видеопамять, отдельная память на карте; когда она кончается, рантайм переносит часть модели в обычную RAM и скорость падает в разы.

```powershell
Get-CimInstance Win32_VideoController | Select-Object Name, DriverVersion, VideoProcessor
nvidia-smi --query-gpu=name,driver_version,memory.total,memory.used,memory.free --format=csv
```

**Пример:** вторая команда печатает таблицу вида
```
name, driver_version, memory.total [MiB], memory.used [MiB], memory.free [MiB]
NVIDIA GeForce RTX 3060, 5xx.xx, 12288 MiB, 1200 MiB, 11000 MiB
```
(значения условные — у вас будут свои).

**Зачем:** без базовой цифры «сколько VRAM свободно до запуска» нельзя понять, виновата ли нехватка памяти или сам рантайм.

**Как проверить:** если `nvidia-smi` не найден — откройте `C:\Windows\System32\DriverStore\FileRepository` и убедитесь, что драйвер NVIDIA вообще установлен; для AMD/Intel аналог команды сверьте с документацией производителя. Общие сведения о работе ИИ в Windows — в гайде [Windows с ИИ: Copilot и нейросети в системе](https://ai-release.org/guides/windows-i-ii.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Шаг 2. Снять метрики GPU и VRAM во время генерации
![Иллюстрация к разделу «Шаг 2. Снять метрики GPU и VRAM во время генерации»](https://ai-release.org/guides/img/kak-ponyat-pochemu-lokalnaya-ii-model-tormozit-na-windo-ru-2.jpg)


**Что сделать:** запустить мониторинг в одном окне PowerShell, а запрос к модели — во втором.

Окно 1 — поток метрик раз в секунду:
```powershell
nvidia-smi dmon -s mu -d 1
```
Окно 2 — тестовый запрос (пример для Ollama на локальном порту 11434; порт и путь эндпоинта сверьте с документацией вашего рантайма):
```powershell
curl.exe http://localhost:11434/api/generate -d '{\"model\":\"<имя-модели>\",\"prompt\":\"Опиши кота одним предложением\",\"stream\":false}'
```

Без NVIDIA используйте встроенный счётчик Windows:
```powershell
Get-Counter '\GPU Engine(*)\Utilization Percentage' -SampleInterval 1 -MaxSamples 30
```

**Пример:** в `dmon` во время генерации столбец `sm` (загрузка вычислителей) уходит в 80–100 %, `mem` (загрузка шины памяти) — тоже высоко; в простое оба близки к нулю.

**Зачем:** это разделяет два разных диагноза — «GPU не используется вообще» и «GPU используется, но упирается в память».

Что вы увидите и что это значит:

| Наблюдение | Вероятная причина | Действие |
|---|---|---|
| `sm` = 0–5 %, ответ идёт медленно | расчёт идёт на CPU, GPU не задействован | перейти к Шагу 3, искать в логе строки про GPU |
| `sm` = 90–100 %, `memory.used` близко к `memory.total` | модель упирается в VRAM, возможна подкачка | уменьшить контекст или размер модели |
| `sm` скачет 0 ↔ 100 | рантайм ждёт диск или RAM | проверить диск и занятую память в диспетчере задач |
| GPU загружен другой программой | VRAM занята браузером/игрой | закрыть лишние приложения и повторить замер |

**Как проверить:** сравните два замера — в простое и во время генерации. Если разницы нет, проблема не в скорости GPU, а в том, что он не подключён к работе.

## Шаг 3. Прочитать логи рантайма и подтвердить, где считаются слои
![Иллюстрация к разделу «Шаг 3. Прочитать логи рантайма и подтвердить, где считаются слои»](https://ai-release.org/guides/img/kak-ponyat-pochemu-lokalnaya-ii-model-tormozit-na-windo-ru-3.jpg)


**Что сделать:** включить подробный лог и найти строку о распределении слоёв модели между GPU и CPU.

```powershell
$env:OLLAMA_DEBUG = "1"
Get-ChildItem "$env:USERPROFILE\.ollama\logs" | Sort-Object LastWriteTime -Descending | Select-Object -First 3
Select-String -Path "$env:USERPROFILE\.ollama\logs\server.log" -Pattern "offload|GPU|CUDA|memory" | Select-Object -Last 20
```

**Пример:** в логе появляется строка вида `offloaded 33/33 layers to GPU` — это значит, что все слои на видеокарте. Строка `offloaded 0/33 layers to GPU` означает, что модель считают процессорные ядра, и никакой драйвер тут не поможет.

**Зачем:** лог — единственный источник, который прямо говорит, сколько слоёв ушло на GPU и сколько памяти рантайм попросил. Пути `%USERPROFILE%\.ollama\logs\server.log` и переменную `OLLAMA_DEBUG` сверьте с документацией вашей версии — в других рантаймах они называются иначе.

**Как проверить:** чек-лист успеха:
- [ ] в последних строках лога есть упоминание GPU/CUDA/Metal-аналога
- [ ] число выгруженных слоёв равно общему (`N/N`)
- [ ] в момент ответа `memory.used` в `nvidia-smi` заметно выше, чем до запуска

## Возможные проблемы и решения

**Проблема. Модель отвечает, но GPU холодный: загрузка 0–5 %, вентиляторы не крутятся.**
- Ошибка: `offloaded 0/33 layers to GPU` либо в логе вообще нет строк с `CUDA`.
- Причина: рантайм собран без поддержки ускорения, либо процесс не видит драйвер (часто после обновления драйвера без перезагрузки).
- Решение: перезагрузить ПК, проверить `nvidia-smi` в том же окне, откуда запускается рантайм; если команда не отвечает — переустановить драйвер. Если отвечает, а слоёв по-прежнему 0 — переустановить сам рантайм, сверяясь с документацией по сборкам с поддержкой GPU.

**Проблема. Ответ на короткий вопрос нормальный, на длинный — падение или резкое замедление.**
- Ошибка: `CUDA error: out of memory`.
- Причина: модель плюс контекст (история диалога) не помещаются в VRAM, рантайм вынужден выгружать часть данных.
- Решение: уменьшить размер контекста в настройках рантайма, взять более компактную версию модели или сократить число слоёв на GPU; после каждого изменения повторять замер Шага 2.

**Проблема. Первый ответ — за секунды, следующие — за минуты, диск загружен на 100 %.**
- Ошибка: в логе растёт время загрузки модели, в диспетчере задач диск `100 %`, память близка к пределу.
- Причина: модель не влезает в оперативную память и читается с диска через файл подкачки.
- Решение: закрыть фоновые приложения, освободить место на системном диске, взять модель меньшего размера; настройку файла подкачки меняйте по документации Microsoft.

## Резюме и следующие шаги
Диагноз строится на трёх цифрах: свободная VRAM до запуска, загрузка GPU во время генерации и число слоёв на GPU из лога — они сразу отделяют «не используется видеокарта» от «не хватает памяти». Если GPU работает штатно, следующий шаг — оптимизация самого рантайма и выбор модели под ваш объём VRAM, см. [Как запустить ИИ-модель локально на своём компьютере](https://ai-release.org/guides/kak-zapustit-ii-model-lokalno-na-svoem-kompyutere-gayd.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## FAQ

**Почему локальная модель грузит процессор, а не видеокарту?**
Чаще всего рантайм не имеет доступа к GPU: не установлен драйвер, установлена сборка без ускорения или в логе стоит `offloaded 0/N layers to GPU`. Проверяется Шагами 1 и 3.

**Сколько VRAM нужно, чтобы модель считалась на GPU?**
Зависит от размера модели, квантования (сжатия весов) и длины контекста. Универсальной цифры нет — сверьтесь с документацией модели и рантайма, а фактическую потребность измерьте через `nvidia-smi` по Шагу 2.

**Почему первый ответ всегда дольше последующих?**
При первом запросе модель загружается в память с диска, дальше она уже в RAM/VRAM. Если разрыв огромный и диск загружен на 100 %, смотрите третью проблему выше.

**Поможет ли увеличение файла подкачки?**
Иногда убирает падения, но не ускоряет генерацию: чтение с диска медленнее памяти. Сначала попробуйте уменьшить размер модели или контекста.
