Hugging Face наконец отвечает на вопрос «влезет ли модель в мою видеокарту». Разбираю новый фильтр и проверяю его честность на 16 ГБ VRAM
Каждый, кто гоняет LLM локально, знает этот ритуал наизусть. Открываешь страницу модели, ищешь размер GGUF-файла, умножаешь параметры на биты кванта, вспоминаешь про KV-кэш, идёшь на Reddit читать «а у кого завелось на 16 гигах», качаешь 18 ГБ — и ловишь out of memory, потому что Windows с двумя мониторами уже откусила свои полтора гига. 30 июня Hugging Face выкатил фичу, которая обещает этот ритуал отменить: фильтр Hardware в каталоге моделей. Разбираю, как он устроен, где его обещаниям можно верить, а где стоит перепроверить руками.
Больше про LLM и AI — в нашем Telegram-канале (@devgeek_sh). Разбираем новые модели, делимся опытом и полезными находками.
Что появилось
Запись в чейнджлоге Hugging Face от 30 июня уместилась в три предложения, но фича из тех, что комьюнити просило годами. На странице Models появился фильтр Hardware: он оставляет в выдаче только модели, которые запустятся на конкретной видеокарте, процессоре или чипе Apple Silicon. Один раз указываете своё железо в настройках — и каталог из миллионов моделей схлопывается до списка «что реально поедет у вас».
Детали, которые делают фичу по-настоящему удобной.
Во-первых, фильтр стакается со всеми остальными фильтрами каталога. Можно оставить только модели под llama.cpp или LM Studio, только текстовые или мультимодальные, отсортировать по трендам — и всё это в пределах «влезает в моё железо».
Во-вторых, состояние фильтра шьётся в URL. Ссылка вида huggingface.co/models?apps=llama.cpp&hardware=apple-m4-max открывает «все модели под llama.cpp, которые влезают в Apple M4 Max» — и работает даже у незалогиненных. Для авторов гайдов и телеграм-каналов это отдельный подарок: вместо «ну, смотрите по своей карте» теперь можно кидать готовую ссылку под конкретное железо.
В-третьих, фильтр работает не только с GGUF и MLX, но и с обычными весами (safetensors).
Фичу выкатил сооснователь Hugging Face Жюльен Шомон. Любопытная деталь: база железа, по которой всё матчится, собрана из конфигов примерно 300 тысяч пользователей хаба, согласившихся поделиться своими сетапами.
Настройка за две минуты
Заходите в Settings → Hardware (huggingface.co/settings/hardware). Добавляете железо: тип (GPU, CPU или Apple Silicon), производитель и конкретная модель, объём памяти — VRAM, RAM или unified memory — и количество штук. Если устройств несколько, одно помечаете как primary: его хаб будет подставлять на страницах моделей первым. Возвращаетесь в каталог — рядом с привычными фильтрами появляется переключатель Hardware.
Нюанс, о котором стоит знать заранее: железо по умолчанию публичное и светится в вашем профиле. Задумка в духе «сравни свой сетап с комьюнити», но если афишировать конфиг не хочется — выключите тумблер Publicly Visible в тех же настройках.
Как это работает
Точную логику матчинга Hugging Face не публиковал. По описанию и поведению всё выглядит просто: размер файлов модели (для GGUF — каждого кванта отдельно) сравнивается с объёмом памяти указанного железа. Файл влезает — модель в выдаче.
Проблема в том, что «файл влезает в VRAM» и «модель нормально работает» — два разных утверждения. Между ними живут как минимум четыре вещи.
KV-кэш. Контекст ест память: на модели класса 30B при 8K контекста это ещё порядка 1–2 ГБ сверху, в зависимости от архитектуры. Хотите 32K — умножайте.
Оверхед рантайма. CUDA-контекст и буферы вычислений — ещё примерно 0,5–1 ГБ, которых нет ни в одном размере файла.
Ваш рабочий стол. Windows с парой мониторов и браузером спокойно занимает 1–1,5 ГБ VRAM до того, как вы вообще запустили LM Studio. Фильтр про это знать не может.
Частичный оффлоад — ошибка в обратную сторону. Фильтр, судя по всему, бинарный: влезает целиком или нет. Но локальное комьюнити массово гоняет модели, которые целиком не влезают, выгружая часть слоёв в RAM. Для MoE-архитектур это вообще штатный режим: у той же Qwen3.6-35B-A3B активных параметров всего 3B, и она сносно живёт даже с частичной выгрузкой. Такие варианты фильтр, похоже, просто прячет — и отрезает заметный кусок реально рабочих конфигураций.
Итого: на границе — а всё самое интересное для владельцев карт на 12–16 ГБ живёт именно на границе — фильтр может ошибаться в обе стороны. Показать то, что задохнётся на длинном контексте, и спрятать то, что прекрасно едет с оффлоадом.
Математика — чтобы перепроверять за фильтром
Шпаргалка: сколько примерно весит миллиард параметров в популярных GGUF-квантах и во что это превращается для модели на 30B.
- Квант Q8_0 на 1B параметров ~1,06~ГБ Модель 30B ~32 ГБ
- Квант Q6_K на 1B параметров ~0,82~ГБ Модель 30B ~25 ГБ
- Квант Q5_K_M на 1B параметров ~0,71~ГБ Модель 30B ~21 ГБ
- Квант Q4_K_M на 1B параметров ~0,60~ГБ Модель 30B ~18 ГБ
- Квант Q3_K_S на 1B параметров ~0,44~ГБ Модель 30B ~13 ГБ
- Квант Q2_K на 1B параметров ~0,35~ГБ Модель 30B ~10,5 ГБ
Сверху добавляйте KV-кэш, оверхед рантайма и то, что уже съел рабочий стол. Практическое правило для карты на 16 ГБ: если хотите жить с вменяемым контекстом и без выгрузки в RAM, цельтесь в файлы до ~13 ГБ.
Практикум: что фильтр показал для 16 ГБ
Подопытная система — современный процессор, достаточный объём обычной памяти и видеокарта с 16 ГБ видеопамяти. В настройках Hugging Face указаны оба устройства: и процессор с его оперативной памятью, и сама карта. Эта деталь сразу же сыграет свою роль.
Включаю фильтр Hardware, добавляю фильтр по среде запуска. И первая же строчка выдачи преподносит сюрприз.
Фильтр предлагает модель, которая позиционируется как легковесная и «для эффективного развёртывания на одной GPU». Открываю страницу, смотрю панель совместимости — и вижу, что самый маленький доступный файл весит 21 ГБ. В мои 16 ГБ видеопамяти он не помещается ни при каких условиях: более сильного сжатия автор просто не выложил.
Откуда тогда эта модель в выдаче «под моё железо»? Самое правдоподобное объяснение: фильтр сопоставляет размер файла со всеми устройствами из настроек сразу. Он видит, что 21 ГБ отлично помещаются в 32 ГБ оперативной памяти процессора, и радостно показывает модель. Формально честно, на центральном процессоре это действительно запустится. Но если вы пришли выбирать модель под видеокарту, такой сюрприз на первой же позиции обнуляет половину смысла фильтра.
Контрольный эксперимент: убираю процессор из настроек оборудования, оставляю только видеокарту. Выдача резко меняется, а модель-«тяжеловес» из неё ожидаемо исчезает.
Вердикт
Фильтр Hardware — это не калькулятор инференса, и ждать от него точности профилировщика не стоит. Это инструмент поиска и первичного отбора: он отвечает не на вопрос «сколько токенов в секунду я получу», а на вопрос «что мне вообще имеет смысл рассматривать для скачивания». И на этот вопрос он отвечает хорошо — особенно для новичков, которые раньше отваливались на этапе «скачал десятки гигабайт, поймал ошибку памяти, удалил всё».
Опытным пользователям фильтр тоже экономит время, но с важными оговорками: пограничные случаи нужно перепроверять расчётами вручную, а про варианты с частичной выгрузкой помнить, что фильтр их, скорее всего, прячет. Полностью полагаться на его выдачу пока рано.
Чего не хватает больше всего: публичного описания логики сопоставления и программного интерфейса (API), чтобы можно было автоматизированно спрашивать «что влезает в это железо» и строить поверх свои инструменты. Судя по реакции под анонсом, сообщество просит и то, и другое.
И последнее, про картину в целом. Hugging Face в последнее время собирает паззл локального ИИ фича за фичей, а глава компании тем временем цитирует исследования о том, что подавляющее большинство запросов к облачным чат-ботам могла бы закрыть локальная модель. Фильтр Hardware — маленькая, но критически важная деталь этого паззла. Она убирает самый первый и самый обидный барьер входа: когда человек с нормальной картой уходит из мира локальных моделей не потому, что они плохи, а потому что несколько раз подряд мучительно ошибся с выбором файла.
Больше про LLM и AI — в нашем Telegram-канале (@devgeek_sh). Разбираем новые модели, делимся опытом и полезными находками.