Оптимизация энергопотребления GPU для локальных LLM: настройка и мониторинг | AiManual
AiManual Logo Ai / Manual.
05 Янв 2026 Гайд

Как оптимизировать энергопотребление при тестировании локальных LLM: гайд по настройке и мониторингу

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

Ваш счет за электричество выглядит как номер телефона? Пора это исправить

Вы запускаете Llama 70B в полноценном режиме, чтобы протестировать пару промптов. Вентиляторы ревут как взлетающий истребитель. Через час вы получаете ответ, а через месяц – счет, от которого хочется плакать. Знакомо? Добро пожаловать в клуб.

Тестирование локальных LLM превратилось в соревнование чьё железо громче гудит. Но за каждым ваттом стоит реальный рубль. Или доллар. Или евро. Неважно. Деньги улетают в трубу, точнее, в систему охлаждения.

Простая математика: RTX 4090 под полной нагрузкой жрет 450 ватт. 4 часа тестов в день = 1.8 кВт*ч. Умножаем на 30 дней и местный тариф (скажем, 8 рублей). Получаем 432 рубля в месяц. Только за одну карту. А если у вас их две, как в мощной станции за $15 000? Считайте сами. Неприятно.

Зачем вообще об этом думать? Потому что деньги не пахнут, но утекают

Оптимизация энергопотребления – это не про спасение планеты (хотя и про это тоже). Это про холодный расчёт. Каждый ватт, который вы не потратили впустую, остаётся в вашем кошельке. Или может быть потрачен на что-то полезное – например, на более долгие тесты.

Но есть нюанс. Снижая энергопотребление, мы часто жертвуем производительностью. Или стабильностью. Или тем и другим сразу. Задача – найти баланс. Не превратить Llama 3 в беспомощного ягнёнка, а заставить её работать умнее, а не тяжелее.

1Измерь врага: без цифр ты слеп

Прежде чем что-то оптимизировать, нужно понять масштаб бедствия. Запустите тест в обычном режиме и посмотрите, сколько жрёт ваша система. Не доверяйте ощущениям – доверяйте ваттметру.

💡
Если у вас нет аппаратного ваттметра (воткнуть в розетку между ПК и сетью), используйте софт. Для NVIDIA – nvidia-smi. Для всей системы – подойдут утилиты вроде powertop (Linux) или встроенные мониторы ресурсов.
# Базовая проверка нагрузки на GPU
watch -n 1 nvidia-smi --query-gpu=power.draw,utilization.gpu,temperature.gpu --format=csv

# Или однократно с подробностями
nvidia-smi -q -d POWER

Запустите ваш стандартный тестовый сценарий. Например, из коллекции промптов. Засеките время и запишите максимальное и среднее энергопотребление. Эти цифры – ваш baseline. От них будем отталкиваться.

2Квантование: главный убийца ватт

Здесь кроется 80% потенциала экономии. Квантование – это уменьшение точности чисел в модели. Вместо 32-битных чисел с плавающей запятой (FP32) используем 16-битные (FP16), 8-битные целые (INT8) или даже 4-битные (NF4). Модель становится легче, работает быстрее и, что важно, требует меньше вычислений. А меньше вычислений – меньше энергии.

Тип квантованияРазмер моделиЭнергопотреблениеКачество ответов
FP32 (оригинал)100%100% (максимум)Эталонное
FP16~50%~70-80%Практически не теряется
INT8~25%~50-60%Незначительные потери
GPTQ/AWQ (4-bit)~20-25%~40-50%Заметные потери, но для многих задач ок

Как применить? Если используете Ollama, просто укажите параметр при пулле модели. Для llama.cpp конвертируйте модель в нужный формат.

# Ollama: запуск модели с квантованием в 4 бита (через Modelfile или при создании)
ollama run llama3.1:8b # по умолчанию, вероятно, какое-то квантование уже есть
# Лучше явно указать, если скачиваете свою
# Создайте Modelfile с параметром quantization

# Для llama.cpp используйте скрипты конвертации, например:
python convert.py --outtype q4_0 модель.bin

Предупреждение: не переходите сразу на самое агрессивное квантование. Начните с FP16 или INT8. Протестируйте на ваших промптах. Убедитесь, что модель не начала генерировать бред. Как тестировать – смотрите в гайде про недетерминированные LLM.

3Управляй мощностью: заставь GPU работать вполсилы

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

NVIDIA позволяет задать лимит потребления (Power Limit). Это снизит максимальную производительность, но и уменьшит нагрев и энергопотребление. Частота GPU автоматически подстроится под лимит.

# Установить лимит мощности для GPU 0 в 250 Ватт (вместо, например, 450)
sudo nvidia-smi -pl 250

# Посмотреть текущие лимиты
nvidia-smi -q | grep -i "power limit"

Эксперимент: установите лимит на 70-80% от максимального TDP карты. Запустите тесты. Сравните скорость генерации и потребление. Часто падение скорости нелинейно – вы можете сэкономить 30% энергии, потеряв лишь 10% производительности.

Это особенно актуально для много-GPU систем, где каждая карта греет соседнюю. Снижение мощности уменьшает общий тепловой пакет и может избавить от троттлинга. Вспомните статью про вырывание телеметрии NVIDIA – там тоже речь шла о контроле над железом.

4Выбирай правильный инструмент: не все фреймворки одинаково прожорливы

Ollama удобна, но может быть не самой эффективной. llama.cpp, особенно собранный с поддержкой CUDA или Metal, часто показывает лучшее соотношение скорость/энергия. Почему? Меньше накладных расходов, более тонкая работа с памятью.

Попробуйте один и тот же тест на одной модели, но через разные бэкенды. Измерьте потребление. Возможно, вы удивитесь.

# Пример запуска через llama.cpp с указанием количества потоков и ограничением на GPU
./main -m ./models/llama-7b-q4_0.gguf -n 128 -t 8 --n-gpu-layers 20

Если вы запускаете LLM в контейнерах (например, в LXC на Proxmox, как в этом гайде), учтите накладные расходы виртуализации. Они обычно минимальны, но всё же.

5Мониторинг: глаза, которые никогда не спят

Настроили оптимизацию? Отлично. Теперь нужно убедиться, что она работает не только сейчас, но и завтра, и послезавтра. Автоматизируйте сбор метрик.

Простой скрипт на Python, который пишет показания nvidia-smi в CSV, уже даст вам историю. Но можно пойти дальше – Grafana + Prometheus. Звучит сложно? Это не так. Вы же DevOps инженер (или играете его в блоге).

# minimal_monitor.py
import subprocess
import time
import csv

def get_gpu_power():
    try:
        result = subprocess.run(['nvidia-smi', '--query-gpu=power.draw', '--format=csv,noheader,nounits'],
                                capture_output=True, text=True, check=True)
        return float(result.stdout.strip())
    except Exception as e:
        print(f"Error: {e}")
        return 0.0

with open('power_log.csv', 'a', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['timestamp', 'power_draw_watts'])
    while True:
        power = get_gpu_power()
        timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
        writer.writerow([timestamp, power])
        time.sleep(5)  # Интервал 5 секунд

Запустите этот скрипт в фоне во время тестов. Потом постройте график. Увидите, где были пики, где простаивали. Это золотая информация.

Главные ошибки: как НЕ нужно экономить

  • Слишком агрессивное квантование для задачи. Хотите протестировать математические способности модели на Q2_K? Удачи. Результаты будут бесполезны, а потраченная энергия – нет.
  • Ограничение мощности без тестирования стабильности. Некоторые карты при снижении лимита могут стать нестабильными, особенно при длительной нагрузке. Тестируйте не 5 минут, а час.
  • Игнорирование CPU. Если ваша модель частично загружена на CPU (мало VRAM), процессор тоже греется и жрёт энергию. Мониторьте всю систему.
  • Экономия на охлаждении. Если вы снизили энергопотребление, но система охлаждения работает на максимуме из-за плохой вентиляции, общая экономия может быть нулевой. Пылесосьте корпус. Серьёзно.

Вопросы, которые вы хотели задать, но стеснялись

Сколько реально можно сэкономить?

На типичном сценарии тестирования (не обучение!) – от 30% до 50% энергопотребления без критической потери качества тестов. Если вы готовы мириться с большими потерями в точности (для некоторых задач это допустимо), то и до 60%.

Не проще ли просто тестировать в облаке?

Смотря как считать. Облако избавляет вас от счетов за электричество, но добавляет счета за аренду GPU. Часто облачные инстансы с мощными GPU дороги. Плюс, есть вопросы приватности данных и задержек. Локальное тестирование даёт полный контроль. А с оптимизацией – ещё и контроль над расходами.

Какие модели лучше всего поддаются оптимизации?

Современные архитектуры, изначально разработанные с учётом эффективности: Llama 3.x, Gemma, Qwen.2. Они лучше переносят квантование. Монстры вроде ранних версий GPT или некоторых специализированных моделей могут быть более капризными. Всегда проверяйте документацию к конкретной реализации.

А если у меня AMD карта?

Принципы те же: квантование, управление частотой (через ROCm или утилиты вроде CoreCtrl), мониторинг. Но инструменты будут другими. Подробности ищите в гайдах по запуску LLM на AMD, например, в статье про LXC и Proxmox.

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