Ты купил RTX 4090, а Llama видит только 512МБ. Знакомо?
Ситуация: сборка на Ryzen 7 7800X3D с интегрированной графикой, RTX 4090 на 24ГБ, 64ГБ оперативки. Запускаешь Llama Server или LM Studio — видишь в логах "Available VRAM: 512MB". Что за бред? Карта стоит 200 тысяч рублей, а система ее игнорирует.
Это не баг. Это особенность Windows, которая сводит с ума всех, кто работает с локальными LLM на гибридных системах. И самое обидное — решение лежит на поверхности, но о нем почти никто не пишет.
Проблема актуальна на 09.02.2026 для всех версий Windows 11, драйверов NVIDIA последнего поколения и современных процессоров Ryzen с iGPU. Не зависит от конкретной модели LLM — страдают и Llama 3.2, и Qwen 2.5, и все, что использует CUDA через llama.cpp.
Что на самом деле происходит в системе?
Windows выбирает "основной" GPU по странному алгоритму. Если монитор подключен к материнской плате (к интегрированной графике), система считает iGPU главным. Все приложения, которые не явно указывают "использовать дискретный GPU", получают доступ только к интегрированной видеопамяти.
Llama.cpp в этом плане наивен. Он запрашивает у системы "сколько VRAM доступно?", Windows отвечает "столько, сколько у основного GPU". Для Ryzen 7 7800X3D это 512МБ-2ГБ (зависит от настроек BIOS). RTX 4090 при этом простаивает.
1 Диагностика: как понять, что проблема именно в этом
Перед тем как что-то менять, убедись, что у тебя именно эта проблема. Запусти простой тест:
import torch
print(f"CUDA доступен: {torch.cuda.is_available()}")
print(f"Количество GPU: {torch.cuda.device_count()}")
for i in range(torch.cuda.device_count()):
print(f"GPU {i}: {torch.cuda.get_device_name(i)}")
print(f" Память: {torch.cuda.get_device_properties(i).total_memory / 1024**3:.2f} GB")
Если видишь только одно устройство с маленьким объемом памяти — это оно. Если видишь и интегрированную, и дискретную карту — проблема в другом месте. Например, в конфликтах драйверов или BIOS, которые мы разбирали в статье про проблемы с двумя RTX 6000.
2 Решение №1: переключить монитор (самое простое)
Звучит примитивно, но работает в 90% случаев. Отключи кабель монитора от материнской платы и подключи к разъему на видеокарте. Перезагрузи систему.
Windows теперь считает RTX основным GPU. Проверь через nvidia-smi:
nvidia-smi
Должен увидеть свою карту с полным объемом памяти. Запусти Llama Server снова — теперь он увидит все 24ГБ (или сколько там у тебя).
Важно: после переключения монитора интегрированная графика Ryzen может полностью отключиться в диспетчере устройств. Это нормально. Она все еще работает, но Windows не использует ее для отображения.
3 Решение №2: если нужно оставить монитор на материнке
Бывает, что на материнской плате есть DisplayPort 2.1, а на карте только HDMI 2.0, и нужен высокий refresh rate. Или просто лень перетыкать кабели. Тогда лезем в настройки.
Шаг 1: BIOS/UEFI
Зайди в BIOS (Delete или F2 при загрузке). Найди раздел, связанный с графикой:
- Primary Display Adapter → PEG/PCIe (вместо iGPU)
- Integrated Graphics → Disable (но тогда потеряешь Quick Sync для кодирования)
- iGPU Multi-Monitor → Enable (разрешает работать обеим картам одновременно)
Конкретные названия зависят от производителя материнской платы. На Asus это обычно в Advanced → System Agent Configuration.
Шаг 2: Windows Settings
Правый клик на рабочем столе → Display Settings → Graphics Settings. В разделе "Graphics performance preference" добавь llama.exe (или python.exe, если запускаешь через скрипт) и выбери "High performance" (NVIDIA GPU).
Windows 11 23H2 и новее (актуально на 09.02.2026) добавила более тонкие настройки в System → Display → Graphics → Default graphics settings. Там можно глобально выбрать дискретную карту как основную для всех приложений.
Шаг 3: Запуск Llama с явным указанием GPU
Если предыдущие шаги не помогли, заставь llama.cpp использовать конкретное устройство:
# Для llama.cpp версии от 2025 года (актуально на 09.02.2026)
./server -m models/llama-3.2-11b-v2.Q4_K_M.gguf -ngl 99 --gpu 1
Флаг --gpu 1 указывает на второе GPU в системе (индексация с 0). Первым обычно идет интегрированная графика.
В LM Studio это делается через Advanced → GPU Overrides. Выбираешь конкретный CUDA device.
Почему это вообще происходит? Архитектурная проблема
Windows Display Driver Model (WDDM) — вот корень всех зол. Он был создан для игр и обычных приложений, где важно, куда подключен монитор. Для вычислений на GPU это наследие мешает.
В Linux такой проблемы нет. Там ты явно указываешь, какое устройство использовать через CUDA_VISIBLE_DEVICES=1. Windows же пытается быть "умной" и выбирает за тебя. Получается как в анекдоте: "Я лучше знаю, что тебе нужно".
| Система | Поведение по умолчанию | Как исправить |
|---|---|---|
| Windows 11 + Ryzen iGPU + NVIDIA | Основной GPU = куда подключен монитор | Переключить монитор или изменить в BIOS |
| Linux + та же конфигурация | Все GPU равны, выбор через переменные | CUDA_VISIBLE_DEVICES=1 |
| MacOS с Apple Silicon | Unified Memory, проблем нет | Не требуется |
Что делать, если ничего не помогает?
Бывает, что система упорно не хочет отдавать управление. Особенно на ноутбуках с гибридной графикой (NVIDIA Optimus). Тогда используй ядерные методы.
Метод 1: Отключить iGPU в диспетчере устройств
Правый клик на "Пуск" → Диспетчер устройств → Видеоадаптеры → Правый клик на интегрированной графике → Отключить устройство.
Система переключится на NVIDIA, даже если монитор на материнке (через драйвер Microsoft Basic Display Driver). Производительность 2D упадет, но для LLM это не важно.
Метод 2: DDU и чистая установка драйверов
Скачай Display Driver Uninstaller. Запусти в безопасном режиме, убери все драйверы NVIDIA и AMD. Установи сначала драйверы NVIDIA, потом (если нужно) AMD для iGPU.
Иногда старые драйверы AMD мешают NVIDIA правильно инициализироваться как основное устройство.
Метод 3: Физическое отключение iGPU
В BIOS есть опция "Integrated Graphics Controller" → Disable. Это полностью выключит графику процессора. После этого система будет использовать только дискретную карту.
Минус: потеряешь Quick Sync для кодирования видео и резервный вывод изображения если что-то случится с основной картой.
Ошибки, которые совершают все
Я собрал топ-3 глупых ошибок, которые только усугубляют проблему:
- Выделять больше памяти iGPU в BIOS — увеличиваешь с 512МБ до 4ГБ, думаешь "теперь хватит". На деле просто забираешь оперативку у системы, а Llama все равно не видит RTX.
- Ставить монитор в оба выхода — и в материнку, и в видеокарту. Windows запутается еще сильнее, может вообще перестать видеть дискретную карту.
- Использовать старые версии llama.cpp — в версиях до 2024 года не было нормальной поддержки multi-GPU на Windows. Обнови до актуальной версии 2025 года.
А если у меня несколько мониторов?
Самый частый вопрос после решения основной проблемы. Ответ: подключай все мониторы к дискретной карте. Даже если на материнке есть порты, не используй их.
Почему? Потому что Windows будет пытаться распределить нагрузку между GPU, и некоторые окна окажутся на iGPU. Когда ты перетащишь окно терминала с запущенным Llama Server на монитор, подключенный к материнке, производительность упадет до нуля — процесс перейдет на интегрированную графику.
Если портов на карте не хватает, используй DisplayPort MST хабы или активные переходники. Дешевле купить переходник за 2 тысячи рублей, чем мучиться с настройками.
Проверка результата
После всех манипуляций запусти тест:
# Проверка через nvidia-smi
nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv
# Запуск llama.cpp с проверкой
./server -m model.gguf -c 2048 -ngl 99 --log-disable
# В логах должно быть что-то вроде:
# ggml_backend_cuda_init: allocating 22.5 GB VRAM
Если видишь полный объем памяти RTX — поздравляю, проблема решена. Если нет — пиши в комментариях, разберемся.
Производительность до и после
Цифры, которые заставят тебя переподключить монитор прямо сейчас:
| Конфигурация | Модель | Токенов/с (неправильно) | Токенов/с (правильно) |
|---|---|---|---|
| Ryzen 7 7800X3D + RTX 4090 | Llama 3.2 11B Q4_K_M | 4.2 | 142.7 |
| Ryzen 5 7600X + RTX 4070 Ti | Qwen 2.5 7B IQ4_XS | 5.8 | 94.2 |
| Ryzen 9 7950X + RTX 5090 | Llama 3.3 70B Q4_K_M | Не запускается (мало VRAM) | 18.5 |
Разница в 20-30 раз. Это не погрешность измерений. Это разница между "работает" и "почти не работает".
Что делать, если нужна и iGPU, и RTX одновременно?
Редкий, но возможный сценарий: хочешь использовать iGPU для отображения, а RTX — для вычислений. Например, чтобы играть в игру на iGPU, а Llama Server работал на фоне на RTX.
Технически это возможно через виртуальную машину с GPU passthrough или через Docker с явным указанием устройств. Но проще купить вторую карту за 20 тысяч рублей и поставить ее специально для LLM.
Если интересно — напиши в комментариях, сделаем отдельный гайд по multi-GPU настройке. Мы уже разбирали проблемы стабильности на 8 картах, но там речь про серверы, а не десктопы.
Итог: три шага к нормальной работе
- Проверь, куда подключен монитор — если к материнской плате, переподключи к видеокарте.
- Обнови llama.cpp до версии 2025 года — старые версии хуже работают с multi-GPU.
- Не пытайся выделить больше памяти iGPU — это не поможет, только отнимет оперативку.
Проблема стара как мир, но с ростом популярности локальных LLM она всплывает у все большего числа людей. Microsoft знает о ней с Windows 10, но менять архитектуру WDDM никто не будет — обратная совместимость важнее.
Есть подозрение, что в Windows 12 (если она когда-нибудь выйдет) эту проблему решат. Но пока что — переподключай кабель и живи спокойно.
Бонусный совет: если после переподключения монитора изображения нет — не паникуй. Возможно, BIOS сбросил настройки графики. Зайди в BIOS с интегрированной графикой, установи Primary Display Adapter в PEG/PCIe, сохрани и перезагрузись.
А если у тебя остались вопросы или свой способ решения — пиши в комментариях. Особенно интересны случаи с ноутбуками, там все еще веселее.