Перейти к содержанию
Публикация AiManual

Локальные LLM для кибербезопасности и реверс-инжиниринга на слабом железе: что реально работает

Разбираем, какие локальные LLM реально запускаются на GTX 1050 Mobile с 4 ГБ VRAM и 20 ГБ RAM: классы кодовых моделей, цена выгрузки в оперативную память, требо

Коротко

Что будет в материале

  1. 01

    Что реально ожидать от локальной LLM на 4 ГБ VRAM и 20 ГБ RAM

  2. 02

    Почему размер модели - не главный критерий для реверс-инжиниринга

  3. 03

    Классы моделей, пригодных для кибербезопасности на слабом железе

  4. 04

    Компромиссы RAM offloading: скорость против качества

Что реально ожидать от локальной LLM на 4 ГБ VRAM и 20 ГБ RAM

На конфигурации i7-8750H, 20 ГБ RAM и GTX 1050 Mobile с 4 ГБ VRAM локальные модели для реверс-инжиниринга запускаются, но потолок задаёт видеопамять, а не процессор. В 4 ГБ целиком помещаются небольшие плотные модели: 3B в Q4 занимает около 2 ГБ VRAM, а 4B-модели работают на грани отзывчивости. Всё, что крупнее, работает с выгрузкой слоёв в оперативную память, и за это приходится платить скоростью. Именно такая конфигурация описана в обсуждении на r/LocalLLaMA, где пользователь ищет Small-Medium модель под поиск уязвимостей, реверс-инжиниринг, низкоуровневое программирование и скриптинг.

Практический ориентир: 7B-модель целиком требует 6-8 ГБ VRAM, поэтому на 4 ГБ она не помещается без выгрузки. Модели класса 30B и больше из этой картины выпадают полностью: MoE-модель 35B-A3B требует около 20 ГБ под веса и запускается через выгрузку экспертов в RAM на картах 12-16 ГБ, но этот приём не работает на 4 ГБ. Зато компактные модели 1-3B, целиком живущие в VRAM, дают рабочую скорость для генерации скриптов, объяснения фрагментов кода и правки отдельных функций.

Модели, которые попадались вам при поиске, стоит разделить на две группы. CyberTiel упоминается в том же обсуждении как найденный вариант, но публичных независимых бенчмарков и разборов практического применения по нему нет: оценивать его придётся собственными тестами. Вторую группу составляют семейства с открытыми весами и готовыми GGUF-сборками, и именно на них разумно строить рабочий процесс.

Какие модели влезают в 4 ГБ VRAM без offloading

Прикидка по памяти простая: квантизация Q4_K_M сжимает веса примерно до 4 бит на параметр и снижает требования к VRAM примерно на 75% относительно FP16. Для Llama 3.1 8B это означает около 16 ГБ в FP16 и менее 5 ГБ в Q4_K_M. К весам добавляются KV-кэш, буферы контекста и накладные расходы рантайма. Для карты на 4 ГБ получается такой расклад:

МодельПараметрыВеса в Q4, примерноЧто остаётся под контекст
Qwen2.5-Coder1.5Bоколо 1 ГБ2-3 ГБ, хватает на 16K и больше
Llama 3.23Bоколо 2 ГБоколо 1-1,5 ГБ, комфортно на 8K
Phi-3 Mini3.8B2,2-2,5 ГБ1,5 ГБ, контекст 4-8K
Stable Code3Bоколо 2 ГБоколо 1-1,5 ГБ, контекст 4-8K

Скорость таких моделей на GTX 1050 Mobile измеряется десятками токенов в секунду, но точные значения зависят от рантайма, драйверов и частот GPU, поэтому проверять их нужно на своей машине. Хватит ли этого для работы, зависит от сценария: порог, при котором локальный инференс перестаёт раздражать, разобран в материале про 5 токенов в секунду.

Для реверс-инжиниринга такие модели годятся на простые задачи: генерация скриптов, объяснение фрагмента кода, правка регулярки, перевод короткой функции на другой язык. Глубокий анализ уязвимости, где нужно удерживать весь модуль и разбирать ассемблер, им не по силам.

Что даёт RAM offloading и когда без него не обойтись

Механика выгрузки простая: рантайм делит слои модели между GPU и CPU. Слои, попавшие на видеокарту, считаются там, остальные молотит процессор, читая веса из оперативной памяти. В llama.cpp число слоёв на GPU задаёт флаг -ngl. Команда -ngl 20 для 7B модели отправит примерно 20 слоёв из 32 в 4 ГБ, а остальные 12 посчитает i7-8750H.

Скорость при такой схеме падает заметно. На RTX 4060 Ti 16GB полная выгрузка в VRAM даёт 42,7 tok/s, частичная выгрузка — 22,1 tok/s, только CPU — 5,3 tok/s, то есть переход от частичной к полной выгрузке примерно удваивает пропускную способность. При этом на 4 ГБ VRAM частичная выгрузка часто оказывается медленнее, чем запуск только на CPU: слои, оставшиеся в системной RAM, работают на пропускной способности памяти ниже 112-256 ГБ/с видеокарты. Планировать интерактивную сессию «вопрос-ответ» на такой скорости тяжело, а запускать пачку задач в фоне вполне реально.

20 ГБ RAM с запасом покрывают 7B Q4: это около 4-5 ГБ весов. Для 13B Q4 нужно 7-8 ГБ только под веса, плюс KV-кэш, плюс система, браузер и IDE. Когда свободная память заканчивается, Windows уходит в swap на NVMe, и скорость проваливается ещё ниже. Что помогает на этой конфигурации:

  • закрыть браузер с десятками вкладок, Docker и тяжёлые IDE на время инференса;
  • ограничить контекст: -c 8192 вместо 32768, потому что KV-кэш растёт линейно;
  • выбрать Q4_K_M вместо Q6 и Q8, чтобы освободить память;
  • следить за пиком потребления RAM в диспетчере задач во время генерации.

Почему размер модели - не главный критерий для реверс-инжиниринга

Для анализа кода и уязвимостей важнее три вещи: контекстное окно, качество работы с кодом и поддержка нужных языков. Число параметров влияет на них косвенно и не определяет результат напрямую.

Контекстное окно задаёт, сколько кода модель удержит за один проход. Окно 4K токенов - это примерно 250-350 строк кода, то есть один небольшой файл. Для разбора функции целиком или модуля с вызовами этого мало: буфер переполняется, модель теряет начало файла и начинает выдумывать имена функций. Окно от 16K, а лучше от 32K, снимает большую часть таких проблем. Обратная сторона: рост контекста увеличивает KV-кэш, и на 4 ГБ VRAM это прямо ограничивает полезную длину.

Качество работы с кодом не сводится к числу параметров. 7B модель, обученная на коде, обходит 13B универсальную там, где нужно разобрать синтаксис, найти ошибку и сгенерировать корректный вызов. Семейства с явным уклоном в код: CodeLlama 7B, DeepSeek-Coder 6.7B, Qwen2.5-Coder 7B.

Поддержка языков решает не меньше. Для поиска уязвимостей нужны C и C++, для анализа прошивок и бинарей - ассемблер x86-64 и ARM, для скриптинга - Python и Bash. Модель, которая уверенно пишет на Python и сыпется на ассемблере, для реверс-инжиниринга почти бесполезна, даже если её общие оценки по коду выглядят прилично.

Классы моделей, пригодных для кибербезопасности на слабом железе

Категории, которые имеет смысл проверять на GTX 1050 Mobile, выглядят так:

КатегорияПримерыВеса в Q4Что реально даёт на этой карте
Компактные кодовые, 1-3BQwen2.5-Coder 1.5B, Stable Code 3B, Phi-3 Mini 3.8B1-2,5 ГБполностью в VRAM; автодополнение, простые скрипты, объяснение сниппетов
Средние кодовые, 6-7BDeepSeek-Coder 6.7B, CodeLlama 7B, Qwen2.5-Coder 7B4-5 ГБработают с offloading; разбор небольших функций, генерация Frida-скриптов, перевод кода в псевдокод
Универсальные, 7-8BMistral 7B, Llama 3 8B4,5-5 ГБс offloading; анализ текста и отчётов, но по коду слабее специализированных
Специализированные под ИБCyberTiel и похожиеданных неттребуют самостоятельной проверки; публичные замеры есть только в карточке модели, независимых нет

Ставка на средние кодовые модели оправдана: они дают лучший баланс качества и скорости при частичной выгрузке в RAM. Ориентир по памяти для моделей 7-9B и граница, за которой начинается offloading, разобраны в статье про 9B модели на 8 ГБ VRAM и 16 ГБ ОЗУ, а для выбора внутри класса 3-4B пригодится сравнение Spark-X2.5-4B, Ling-3.0-tiny и Nanbeige2.2-3B.

Про CyberTiel отдельно: в треде он упоминается как найденный вариант, но независимых замеров и разборов практического применения по нему нет. По карточке модели на Hugging Face это 35B-A3B MoE-модель для агентного кодинга и offensive security, в Q4 она занимает около 22 ГБ, то есть на 4 ГБ VRAM целиком не помещается. Карточка приводит и собственные бенчмарки: на SWE-bench-Live модель в 4-битном квантовании решает примерно на 70% больше задач, чем Ornith-1.5 и Qwen3.6-35B-A3B, а на Cybench захватывает флаг в 15 из 43 CTF-задач (35%). Это заявления авторов модели, а не независимая проверка, и к тому же размер весов делает её непрактичной для GTX 1050 Mobile. В открытом доступе модели «под кибербезопасность» чаще всего представляют собой fine-tune на кодовых и текстовых базах — CyberTiel, например, основана на кодовой базе TielCoder, — поэтому выбор по названию ничего не гарантирует. Решать нужно по собственным тестам на своих задачах.

Компромиссы RAM offloading: скорость против качества

На качество ответов выгрузка не влияет: модель считает те же веса теми же операциями, просто часть слоёв уходит на CPU. Страдает скорость. Разница между полным размещением в VRAM и гибридным режимом для 7B Q4 измеряется разами, а не процентами, и чем меньше слоёв попадает на GPU, тем хуже.

Квантизация добавляет второй компромисс. На 4 ГБ имеет смысл брать варианты с суффиксом _K_M: K-кванты используют двухуровневую схему, которая сохраняет более важные веса в повышенной точности, а менее критичные сжимает агрессивнее, поэтому Q4_K_M даёт лучшее качество при том же размере файла, чем старые форматы вроде Q4_0. Рабочая схема такая:

  • Q4_K_M - базовый выбор для 7B моделей на этой карте;
  • Q5_K_M - заметный прирост качества для кодинга и рассуждений, но обычно рекомендуется при наличии 12 ГБ+ VRAM, так что на 4 ГБ это скорее компромисс с выгрузкой;
  • Q6 и Q8 - только для моделей 1-2B, которые целиком влезают в VRAM.

Настройки llama.cpp, которые чаще всего приходится крутить на слабом железе:

  • -ngl - число слоёв на GPU. Поднимайте, пока влезает, и следите за ошибками аллокации;
  • -c - размер контекста. 8192 для разбора функций, 32768 только если готовы отдать RAM под KV-кэш;
  • -t - число потоков CPU. У i7-8750H 6 физических ядер, 12 потоков и 12 МБ кэша L3; значения выше физических ядер обычно только замедляют генерацию.

Практическое правило для 20 ГБ RAM: 7B Q4 с контекстом 8K и открытым редактором укладывается с запасом, а 13B Q4 с тем же контекстом съедает 9-11 ГБ и оставляет мало места на остальное. Прямой ответ на вопрос, стоит ли пробовать 13B на таком ноутбуке: запустить можно, но скорость превращает интерактивную работу с кодом в долгое ожидание.

Инструменты и агентские навыки для реверс-инжиниринга с локальными LLM

Локальная модель решает не всё: основную работу делают инструменты анализа, а LLM их оркеструет и пишет под них код. Готовый пример такого набора - android-reverse-engineering-skill, который ведёт разбор APK от декомпиляции до динамической инструментации.

Что внутри по существу:

  • декомпиляция через jadx с возможностью сравнить результат с Fernflower или Vineflower и выбрать более читаемый вариант для сложного Java-кода;
  • динамическая инструментация на Frida: 9 готовых скриптов для логирования SSL, дампа DEX и SO, трассировки JNI, хукинга шифрования, обхода проверок Root и Frida, экспорта сертификатов KeyStore (карточка навыка);
  • анализ нативного слоя через rizin, readelf, nm и objdump, включая определение того, где формируется подпись или шифрование: в Java или в нативном коде;
  • поиск сетевых интерфейсов: вызовы Retrofit, OkHttp, жёстко закодированные URL, заголовки аутентификации, токены и параметры подписи.

Навык рассчитан на агентские платформы Claude Code и Codex и работает на macOS, Linux и Windows в PowerShell. Локальная LLM подключается к такой схеме как генератор и модификатор кода: вы отдаёте ей фрагмент декомпилированного метода и просите написать Frida-хук под конкретную сигнатуру, а готовые скрипты из набора используете как образец структуры. Похожие подходы к агентскому реверс-инжинирингу разбирают и в видеоформате, например ReverseEngineerAnything with Agents, где речь идёт о локальной модели для написания кода с поддержкой GPU от 4 ГБ видеопамяти, то есть ровно с нижней границы вашей карты.

Второй момент - дисциплина следования инструкциям. Агентские сценарии требуют, чтобы модель не отходила от AGENTS.md и вызывала нужный инструмент вместо текстового ответа. Крупный размер здесь не гарантия: владелец RTX 5090 описывал случай, когда 27B модель игнорировала AGENTS.md и agent skills, и он вернулся к более компактной (разбор ситуации). Для задач с инструментами смотрите на поведение модели в диалоге, а не только на её размер.

Как оценивать модели без готовых бенчмарков

Модели без публичных независимых замеров, как CyberTiel, оценивают только собственным тестовым набором. Схема, которая экономит время:

  1. Соберите 5-10 задач точно под свои сценарии: объяснить фрагмент ассемблера x86-64, найти переполнение буфера в небольшой C-функции, написать Frida-скрипт под конкретный метод, перевести участок декомпилированного Java в читаемый псевдокод, собрать Bash-обёртку для пакетного запуска инструмента.
  2. Зафиксируйте промпты и параметры запуска: модель, квантизация, значения -ngl и -c. Без этого сравнение через неделю будет бесполезным.
  3. Оценивайте по трём критериям: корректность (код запускается), полнота (учтены краевые случаи), понятность объяснения. Оценка «нравится или нет» здесь не работает.
  4. Сравните с эталоном: свой ручной ответ или ответ облачной модели на ту же задачу. Это даёт шкалу, а не абсолютную оценку.
  5. Проверяйте стабильность: одна и та же модель на одном промпте в разных запусках должна давать сопоставимый результат.

Перед скачиванием проверьте, есть ли у модели GGUF-сборка. Если она поставляется только в safetensors или в формате под конкретный фреймворк, запуск на 4 ГБ VRAM с выгрузкой слоёв в RAM превращается в отдельный проект. Второй фильтр - размер контекста в конфиге: заявленные 128K в карточке не означают, что вы удержите такой контекст на 20 ГБ RAM.

Когда локальная LLM на слабом железе - не лучший выбор

Есть сценарии, где GTX 1050 Mobile проигрывает по определению:

  • анализ крупных бинарников и модулей целиком: нужен контекст от 32K, а его KV-кэш на 4 ГБ VRAM не оставляет шансов;
  • многошаговые задачи, где модель должна удерживать длинную цепочку рассуждений и промежуточных результатов;
  • работа с высокой ценой ошибки: разбор сложной уязвимости или отчёт, по которому будут принимать решения.

В этих случаях облачные API или арендованный GPU оказываются быстрее и часто дешевле, чем ожидание на единицах токенов в секунду. Методика расчёта точки перехода между своим железом и подпиской разобрана в отдельном материале: Локальный AI против облака.

Локальный запуск остаётся безальтернативным, когда данные нельзя отправлять наружу: внутренние бинарники, персональные данные, чужие прошивки под NDA. Здесь работает гибридная схема: 7B модель делает черновую работу (переименование переменных, навигация по декомпилированному коду, заготовки скриптов), а финальную проверку вы выполняете сами или на машине с нормальным GPU.

Стартовая связка для этого ноутбука выглядит так: кодовые модели 6-7B в Q4_K_M с частичной выгрузкой слоёв в RAM, тестовый набор из 5-10 задач до того, как вы удалите неподошедшие модели, инструменты вроде Frida, jadx и rizin для рутины и облако для задач с контекстом в десятки тысяч токенов. CyberTiel и похожие модели без публичных независимых бенчмарков держите в очереди на проверку, но не в центре рабочего процесса.

Подписаться на канал