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

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-snizit-temperaturu-videokarty-pri-lokalnom-zapuske.html

## TL;DR
- Время выполнения: 45–70 минут без разборки карты; замена термопасты добавляет 40–60 минут.
- Уровень сложности: Intermediate
- Понадобится: `nvidia-smi` (идёт в комплекте с драйвером NVIDIA) либо `rocm-smi`/sysfs `amdgpu` для AMD; `lm-sensors` на Linux; MSI Afterburner на Windows для кривой вентиляторов и андервольтинга (снижения напряжения ядра при фиксированной частоте); локальный запуск LLM (Ollama, llama.cpp или vLLM) как источник реальной нагрузки; права root/администратора; изопропиловый спирт и термопаста — если дойдёте до Шага 3.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-snizit-temperaturu-videokarty-pri-lokalnom-zapuske-ru-1.jpg?v=1794387081)


- ОС: Windows 10/11 либо Linux с установленным проприетарным драйвером GPU. Конкретные поддерживаемые версии драйвера и ядра — сверьтесь с документацией производителя.
- NVIDIA: утилита `nvidia-smi` доступна сразу после установки драйвера.
- AMD: `rocm-smi` из состава ROCm либо запись в sysfs-узлы драйвера `amdgpu`.
- Linux: пакет `lm-sensors` для чтения температур и оборотов с материнской платы.
- Права: администратор Windows / `sudo` на Linux — запись в `/sys` и переключение `GPUFanControlState` требуют повышенных прав.
- Запущенная локальная модель, на которой вы реально работаете: она даст нагрузку, близкую к боевой, а не синтетический стресс-тест.
- Термопрокладки на VRAM и VRM: если будете разбирать карту, заранее уточните их толщину в документации/сервис-мануале — сверьтесь с документацией, наугад подбирать нельзя.
- Свободное место на диске: несколько мегабайт под CSV-логи замеров.

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

- [ ] Записать модель карты и версию драйвера (`nvidia-smi` — верхняя строка вывода).
- [ ] Снять лог температур/частот/оборотов под нагрузкой (Шаг 1).
- [ ] Записать текущую скорость генерации в токенах/с в вашем клиенте.
- [ ] Сфотографировать экран Afterburner или вывести `nvidia-smi -q` в файл — чтобы знать, куда откатываться.

**Пример:** вывод `nvidia-smi` в первой строке содержит версию драйвера и версию CUDA — эти два значения и есть ваша точка отсчёта.

## Шаг 1. Снимаем базовый профиль под реальной нагрузкой

**Что сделать:** запустить логирование телеметрии GPU в файл, параллельно нагрузить карту вашей обычной моделью на 10–15 минут.

**Зачем:** без базовой линии вы не отличите эффект андервольтинга от шума измерений. Кроме того, логи сразу покажут, упирается ли карта в температуру — то есть работает ли механизм троттлинга (автоматического снижения частоты при перегреве).

Linux/Windows, NVIDIA:

```bash
nvidia-smi --query-gpu=timestamp,temperature.gpu,clocks.sm,clocks.mem,fan.speed,power.draw,clocks_throttle_reasons.active \
  --format=csv -l 1 -f gpu_before.csv
```

Флаг `-l 1` — опрос раз в секунду, `-f` — запись в файл. Во втором терминале запустите нагрузку, например:

```bash
ollama run <ваша-модель> "напиши 500 слов о TCP"
```

AMD, Linux:

```bash
watch -n 1 'rocm-smi --showtemp --showfan --showpower' | tee gpu_before.log
```

Синтаксис флагов `rocm-smi` меняется между релизами — сверьтесь с `rocm-smi --help`.

**Как проверить:** файл `gpu_before.csv` существует, первая строка — заголовки, дальше по строке в секунду. Заполните лист замера:

| Метрика | До (`gpu_before.csv`) | После (`gpu_after.csv`) |
|---|---|---|
| Температура GPU, °C | `<T_до>` | `<T_после>` |
| Обороты вентилятора, % | `<F_до>` | `<F_после>` |
| Частота ядра, МГц | `<C_до>` | `<C_после>` |
| `clocks_throttle_reasons.active` | `<причина>` | `none` |

Если в колонке throttle уже стоит `SW Thermal Slowdown` — карта перегревается, и Шаг 2 даст эффект сразу. Если стоит `none`, а температура ниже лимита — узкое место не в охлаждении, и андервольт даст выигрыш только по шуму и энергопотреблению.

**Пример:** строка `2024-06-01T12:00:03, 78, 1750, 7000, 62, 210.5, None` читается так: 78 °C, ядро на 1750 МГц, вентилятор на 62 %, потребление 210 Вт, троттлинга нет.

## Шаг 2. Андервольтинг и кривая вентиляторов
![Иллюстрация к разделу «Шаг 2. Андервольтинг и кривая вентиляторов»](https://ai-release.org/guides/img/kak-snizit-temperaturu-videokarty-pri-lokalnom-zapuske-ru-2.jpg?v=1794387096)


**Что сделать:** снизить напряжение ядра при той же частоте и задать явную зависимость «температура → обороты» вместо заводской.

**Зачем:** заводская кривая вентиляторов настроена на тишину, а не на длительную нагрузку. Андервольтинг снимает лишнее тепло в источнике: при меньшем напряжении та же частота требует меньше ватт. Порядок важен — сначала вентиляторы, потом напряжение, иначе карта будет троттлить прямо во время теста стабильности.

Windows, MSI Afterburner:

1. Settings → General → выставить `Unlock voltage control` и `Unlock voltage monitoring`, перезапустить программу.
2. Settings → Fan → включить `Enable user defined software automatic fan control`, расставить точки: например 50 °C → 40 %, 65 °C → 60 %, 75 °C → 80 %, 80 °C → 100 %. Значения подбирайте под свою карту, ориентир — начать с более агрессивной кривой и ослабить её после замеров.
3. `Ctrl+F` — открывается редактор кривой «напряжение/частота». Выберите точку на нужной частоте, потяните её влево (меньше напряжение при той же частоте), остальную часть кривой выровняйте через `Shift` + перетаскивание.
4. Apply → сохранить профиль в слот (кнопка Save) и включить `Apply at startup`.

Linux, NVIDIA — только вентиляторы и фиксация частот:

```bash
export DISPLAY=:0
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=70"
sudo nvidia-smi -lgc <min>,<max>
```

`-lgc` блокирует частоту в диапазоне; допустимые значения возьмите из `nvidia-smi -q -d SUPPORTED_CLOCKS`. Прямого андервольтинга через `nvidia-smi` нет — сверьтесь с документацией по вашей карте и дистрибутиву.

Linux, AMD — через sysfs (виртуальная файловая система ядра, где драйвер выставляет ручки управления):

```bash
ls /sys/class/drm/card0/device/hwmon/hwmon*/pwm1_enable
echo 1   | sudo tee /sys/class/drm/card0/device/hwmon/hwmon2/pwm1_enable
echo 180 | sudo tee /sys/class/drm/card0/device/hwmon/hwmon2/pwm1
```

`pwm1` принимает 0–255, то есть 180 ≈ 70 % оборотов; `pwm1_enable=1` переводит управление в ручной режим. Почему это работает: драйвер `amdgpu` читает значение из sysfs и сразу меняет ШИМ-сигнал на вентиляторе.

**Как проверить:** обороты выросли, температура стабилизировалась.

```bash
nvidia-smi --query-gpu=temperature.gpu,fan.speed,clocks_throttle_reasons.active --format=csv -l 1
```

Ожидаемый результат: `fan.speed` держится у выставленного значения, `clocks_throttle_reasons.active` = `None`. Если после андервольта появились артефакты или драйвер отвалился — вы перестарались, поднимите напряжение на шаг и повторите.

**Пример:** до настройки — 78 °C, 62 %, `SW Thermal Slowdown`; после кривой вентиляторов — 72 °C, 80 %, `None`. Частота при этом не просела.

## Шаг 3. Термопаста и контрольный замер
![Иллюстрация к разделу «Шаг 3. Термопаста и контрольный замер»](https://ai-release.org/guides/img/kak-snizit-temperaturu-videokarty-pri-lokalnom-zapuske-ru-3.jpg?v=1794387111)


**Что сделать:** заменить термопасту (термоинтерфейс между чипом и радиатором) и повторить ровно тот же замер, что в Шаге 1.

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

Порядок:

1. Отключить питание, нажать кнопку включения, чтобы разрядить конденсаторы, снять карту.
2. Открутить кулер, аккуратно отсоединить разъём вентиляторов.
3. Снять старую пасту безворсовой салфеткой, остатки — изопропиловым спиртом до чистого металла.
4. Нанести тонкий слой на чип, собрать, не перетягивая винты (крест-накрест, равномерно).
5. Термопрокладки на памяти и VRM не сдвигать; если порвались — ставить той же толщины, что и оригинал (сверьтесь с документацией).

Контрольный замер — те же команды, что в Шаге 1, но в новый файл:

```bash
nvidia-smi --query-gpu=timestamp,temperature.gpu,clocks.sm,clocks.mem,fan.speed,power.draw,clocks_throttle_reasons.active \
  --format=csv -l 1 -f gpu_after.csv
```

Сравнить два файла по среднему значению в колонке `temperature.gpu`:

```bash
awk -F',' 'NR>1 {gsub(/ /,"",$2); s+=$2; n++} END {print "avg:", s/n, "C,", n, "samples"}' gpu_after.csv
```

**Как проверить:** заполните таблицу из Шага 1 и пройдите чек-лист приёмки:

- [ ] Средняя температура ниже, чем в `gpu_before.csv`.
- [ ] `clocks_throttle_reasons.active` = `None` на всём протяжении нагрузки.
- [ ] Частота ядра не упала относительно базовой.
- [ ] Скорость генерации в токенах/с не изменилась.
- [ ] Вентилятор не выходит на 100 % постоянно.

**Пример:** успех — `avg: <T_после> C` при `None` в throttle и тех же токенах/с. Если температура упала, а токены/с просели — вы загнали частоту вниз слишком сильно, откатите `-lgc`.

Для сравнения поведения контейнерных запусков под нагрузкой пригодится гайд [Как исправить ошибки Docker при запуске локальной LLM: GPU, память и проброс портов](https://ai-release.org/guides/kak-ispravit-oshibki-docker-pri-zapuske-lokalnoy-llm-gp.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — там разобраны случаи, когда GPU не проброшен и телеметрия пустая.

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

**Проблема. `nvidia-smi` перестал видеть карту после обновления ядра**

- Ошибка: `NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.`
- Причина: модуль ядра не загружен или собран под другое ядро — типично после обновления системы.
- Решение: проверить `lsmod | grep nvidia`, затем `sudo modprobe nvidia` и перезагрузка. Если не помогло — чистая переустановка драйвера; для AMD-карт пошаговая процедура с DDU описана в [Как удалить и переустановить драйверы AMD через DDU](https://ai-release.org/guides/kak-udalit-i-pereustanovit-drayvery-amd-cherez-ddu-ispr.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Проблема. Модель падает посреди генерации после андервольтинга**

- Ошибка: `CUDA error: an illegal memory access was encountered`
- Причина: нестабильное напряжение — карта работает, но выдаёт ошибки на пиковых нагрузках; часто проявляется только через несколько минут.
- Решение: поднять напряжение на один шаг (ориентир — 10–25 мВ, точный шаг сверьте с гайдом по вашему чипу), сбросить блокировку частот `sudo nvidia-smi -rgc` и повторить замер.

**Проблема. Температура не падает даже при 100 % вентиляторов**

- Ошибка (индикатор): `nvidia-smi -q -d PERFORMANCE` показывает `SW Thermal Slowdown : Active` при `fan.speed` около 100.
- Причина: плохой отвод тепла от чипа — высохшая паста, забитый пылью радиатор, слабый продув корпуса.
- Решение: продуть радиатор, проверить направление потоков в корпусе, затем Шаг 3 (замена пасты). Андервольтинг в этом случае даст только отсрочку.

## Резюме и следующие шаги

Сначала снимите базовый лог под реальной нагрузкой, затем настройте кривую вентиляторов и андервольт, и только после этого разбирайте карту ради термопасты. Финальное сравнение `gpu_before.csv` и `gpu_after.csv` покажет, помогло ли каждое изменение по отдельности.

## FAQ

**Что безопаснее начать — кривую вентиляторов или андервольтинг?**
Кривую вентиляторов: она обратима одной кнопкой и не влияет на стабильность вычислений. Андервольтинг меняет напряжения ядра и требует проверки на ошибки вроде `illegal memory access`.

**Упадёт ли скорость генерации токенов после андервольтинга?**
Если частота остаётся той же, а снижается только напряжение — нет. Падение появится, если вы одновременно зафиксировали частоту ниже заводской через `nvidia-smi -lgc`; тогда сравните токены/с до и после.

**Нужно ли менять термопасту, если карта новая?**
Обычно нет: штатный интерфейс работает. Начинайте с кривой вентиляторов и андервольта, а пасту трогайте, если после них сохраняется `SW Thermal Slowdown` при высоких оборотах.

**Почему после перезагрузки все настройки сбросились?**
`nvidia-settings` и запись в `/sys/class/drm/.../pwm1` не сохраняются между загрузками. На Windows включите `Apply at startup` в MSI Afterburner; на Linux добавьте команды в unit systemd или в скрипт автозапуска — точный способ сверьтесь с документацией дистрибутива.
