История об ИИ · 06
64 гигабайта памяти ищут работу. Желательно интеллектуальную.
Старый компьютер, много RAM и новая работа: пробуем локальный ИИ на процессоре, с реальными примерами и чувством юмора.
Опубликовано AI Model Green Zone
Продолжить чтение →Подчёркнутые термины ведут в глоссарий. Наведи курсор или перейди клавишей Tab для короткой подсказки.
Если почитать несколько руководств по запуску искусственного интеллекта дома, довольно быстро возникает ощущение, что начать нужно с покупки видеокарты. Потом выясняется, что лучше купить другую. Потом — что для неё потребуется новый блок питания. На этом месте хочется закрыть браузер, потому что ты вообще-то собирался попробовать поговорить с моделью, а не пересобирать компьютер и пересматривать семейный бюджет.
И всё это время под столом стоит вполне приличная машина.
Возможно, ей уже несколько лет. Возможно, это старая рабочая станция, которую когда-то покупали для серьёзной работы. А у кого-то вообще сохранился сервер: два процессора, много памяти, убедительный металлический корпус. Раньше он обслуживал офис, теперь преимущественно обслуживает собственные вентиляторы.
Жалко ведь. Компьютер работает, памяти в нём 32, 64 или даже 128 гигабайт. Неужели без дорогой видеокарты всё это бесполезно для языковой модели?
Нет, не бесполезно. И здесь начинается довольно интересная история.
Языковые модели можно запускать на процессоре, используя обычную оперативную память. Для этого существуют программы, в том числе llama.cpp, которые поддерживают CPU-вычисления. Нужно, чтобы выбранная модель поддерживалась конкретной версией программы, но сама возможность давно вышла за пределы красивых демонстраций. Документация llama.cpp
Мы иногда говорим «запустить модель в RAM», и это удобное сокращение. Только память сама ничего не вычисляет. Она хранит веса модели и рабочие данные, а процессор выполняет операции. Примерно как шкаф с продуктами и повар: просторный шкаф полезен, но ужин от одного его присутствия не появится.
Кстати, постоянное подключение к интернету для такого разговора с моделью не обязательно. После скачивания файлов она может работать локально, если само приложение не использует облако или внешние инструменты. Интернет уже помог доставить несколько гигабайтов и теперь вполне может отдохнуть.
Всё это звучит обнадёживающе, но лучше посмотреть, что получилось у людей, которые действительно попробовали.
Мы нашли несколько опубликованных примеров. Сами эти измерения не повторяли, поэтому дальше будут именно результаты авторов — с их оборудованием, программами и настройками.
| Компьютер | Память | Модель и программа | Опубликованный результат |
|---|---|---|---|
| AMD Ryzen 5 5600, Linux | 62,7 GB по отчёту | Llama 3.1 8B Instruct, Q4_K_M, через llamafile | При 4 096 входных и 256 выходных токенах — 7,2 токена/с при генерации; первый токен через 98,36 секунды. LocalScore |
| HP Z420, Xeon E5-2690 v2 — процессор 2013 года | 64 GB DDR3 ECC | Qwen3.6-35B-A3B, Q6_K, через llama.cpp | Автор сообщает около 8,5 токена/с при генерации на 10 потоках CPU, без GPU-ускорения. Отчёт владельца |
| Двухпроцессорная система AMD EPYC 7K62 | 16 × 64 GB RAM | DeepSeek-R1 671B, Q5_K_S | Автор сообщил 2,9 токена/с на 96 потоках. Файл модели занимал примерно 462 GB. Описание эксперимента |
Меня в этой подборке особенно привлекает второй пример. Процессор 2013 года, DDR3, старая рабочая станция — всё то, на что в разговоре о современном ИИ легко махнуть рукой. А человек взял и попробовал.
Третий пример, конечно, уже из другой весовой категории. Там одна оперативная память занимает в воображении больше места, чем весь мой первоначальный замысел этой статьи. Но начинать с такого сервера совершенно необязательно. Для знакомства с плаванием всё-таки не требуется арендовать Атлантический океан.
И ещё: эти строки нельзя читать как соревнование процессоров. Модели разные, программы разные, условия измерения тоже. Было бы слишком смело объявить старый Xeon победителем Ryzen только потому, что в одной строке число получилось больше.
Зато видно другое: отсутствие современной видеокарты ещё не означает, что эксперимент не состоится. Даже DDR3, как выясняется, не превращается в тыкву в день выхода DDR5.
Теперь вернёмся к более знакомой ситуации. Допустим, у тебя есть компьютер с 64 гигабайтами RAM. Ты открываешь каталог моделей, находишь файл примерно на 60 гигабайт и думаешь: вот, почти точно под размер. Даже немного останется.
Здесь я бы всё-таки притормозил.
Операционная система ведь никуда не переезжает. Браузер тоже остаётся — вместе со всеми вкладками, которые ты обязательно прочитаешь, просто не сегодня. А программе запуска модели ещё потребуется место для работы.
Кроме весов, память занимают рабочие буферы и данные обрабатываемого разговора. У многих моделей значительную часть этих данных составляет KV-кэш: сохранённые промежуточные результаты, позволяющие не повторять часть вычислений для уже прочитанного текста. Его размер зависит от архитектуры модели, длины контекста и настроек. Объяснение KV-кэша
Поэтому размер файла на странице загрузки — полезная цифра, но не окончательный ответ на вопрос «сколько памяти понадобится».
В том самом опыте с HP Z420 автор приводит показательное сравнение: файл модели — приблизительно 29,3 GB, а память процесса, измеренная как RSS, — около 34,8 GB. И это ещё не расход всего компьютера. Не стоит превращать разницу между этими числами в универсальную надбавку, но сам принцип здесь хорошо виден. Измерения автора
Хочется, конечно, получить простое правило: «оставь столько-то гигабайт, и всё будет хорошо». Было бы удобно. Но для короткого разговора с маленькой моделью и для большого документа у совершенно другой модели запас потребуется разный.
Можно хотя бы начать с понятного плана. Возьмём условный бюджет 64 GiB, в единицах нашего калькулятора, и распределим его так:
| На что отводим память | Пример бюджета |
|---|---|
| Система и остальные приложения | 8 GiB |
| Выбранный файл весов | 32 GiB |
| Кэш контекста и рабочие области программы | 8 GiB |
| Остающийся запас | 16 GiB |
Это именно пример, а не инструкция для всех компьютеров. Восемь гигабайт на рабочие данные могут оказаться щедрым запасом в одном случае и недостаточными в другом. Расход системы лучше посмотреть у себя, а кэш и остальные потребности оценивать для выбранной модели и задачи.
Обрати внимание на последнюю строку. Там осталось свободное место, и с этим всё в порядке. За стопроцентное заселение RAM медаль не дают.
Если памяти начнёт не хватать, система может переносить часть данных на диск. Иногда это позволяет продолжить работу, но постоянный обмен с диском способен превратить разговор в очень медленную переписку. Возможна и остановка процесса из-за нехватки памяти. SSD полезен, когда нужно загрузить модель, однако рассчитывать на него как на равноценную замену RAM не стоит.
Хорошо, с объёмом разобрались. Предположим, модель поместилась с запасом. Почему тогда она всё равно может отвечать медленно?
Вот здесь в разговор возвращается процессор, которому до этого мы преимущественно считали гигабайты.
CPU должен выполнить множество операций и получить для них данные из памяти. Значение имеют его архитектура, поддерживаемые инструкции, частоты, кэш, число ядер и то, насколько удачно программа всем этим пользуется.
Про ядра особенно легко сделать поспешный вывод. Восемь хорошо, шестнадцать лучше, тридцать два — значит, ещё вдвое быстрее?
Иногда дополнительные ядра действительно помогают. Но если вычисления упираются в передачу данных из памяти, часть потоков будет ждать. А слишком большое число потоков может даже ухудшить результат — разработчики llama.cpp отдельно обращают на это внимание. Рекомендации разработчиков
Тридцать два повара вокруг одной разделочной доски — впечатляющий штат. Просто обед от этого не обязательно появится раньше.
С памятью похожая история. Мы привыкли спрашивать, сколько её установлено, но для модели важно ещё и то, как быстро процессор может получать из неё данные.
Поэтому DDR3, DDR4 или DDR5 — только часть описания. Имеют значение фактическая скорость памяти и число используемых каналов. Причём четыре планки не обязательно означают четыре канала: всё зависит от платформы и установки модулей. Пропускная способность связана со скоростью передачи, шириной интерфейса и количеством каналов. Пояснение Intel
Вот почему старая серверная платформа иногда оказывается интереснее, чем можно предположить по году выпуска. У неё могут быть свои преимущества в организации памяти. А могут быть и недостатки, которые проявятся только при запуске конкретной программы.
С двумя процессорами тоже придётся познакомиться чуть ближе. У каждого обычно есть своя локальная память, и доступ к памяти соседнего процессора обходится дороже. Это называется NUMA. От того, как программа распределяет вычисления и данные, зависит, насколько полезным окажется второй CPU. Документация Intel
В нашей кухне появился второй повар со своим складом. Хорошая новость. Правда, иногда за продуктами ему приходится идти через двор.
Не обязательно разбираться во всех этих деталях до первого запуска. Но полезно помнить о них, когда результаты вдруг не совпадают с красивой арифметикой «вдвое больше процессоров — вдвое быстрее».
Есть ещё одна вещь, которую легко принять за неисправность.
Ты задаёшь вопрос, программа молчит. Вентиляторы работают. На экране пока ничего.
Дело может быть в том, что модель ещё читает твой запрос. Перед генерацией ответа ей нужно обработать входной текст, а короткий вопрос и приложенный договор на пятьдесят страниц требуют разной работы.
Вернись на минуту к первой строке нашей таблицы. Там генерация шла со скоростью 7,2 токена в секунду, но до первого токена прошло почти сто секунд. Эти числа друг другу не противоречат: они описывают разные этапы.
Поэтому при сравнении стоит смотреть и на время до начала ответа, и на скорость дальнейшей генерации. В llama-bench обработка входного текста и генерация измеряются отдельно. Описание измерений
Длинный ответ, естественно, тоже займёт время. Если модель поддерживает режим рассуждений, она может генерировать дополнительные токены до окончательного ответа. Иногда это полезно. Иногда тебе всего лишь нужна дата доставки из письма, а модель уже открывает философский симпозиум о природе времени.
Так с чего всё-таки начинать, чтобы первый вечер не прошёл исключительно в ожидании?
Я бы выбрал небольшую instruct-модель в поддерживаемом квантованном формате и дал ей короткую, знакомую задачу. Среди вариантов для исследования — Qwen3.5-4B и Phi-4-mini на 3,8 миллиарда параметров. Потом можно попробовать класс 7–8B и посмотреть, даст ли более крупная модель преимущество именно в твоей работе. Все эти варианты доступны в каталогах программ запуска. Qwen3.5-4B, Phi-4-mini, Qwen3-8B
Для первой пробы можно рассмотреть Q4_K_M, если такой файл поддерживается, а затем сравнить с другой точностью. Квантование уменьшает объём весов, но может влиять на ответы. Насколько это заметно и важно, зависит от модели и задания. Документация квантования
И не нужно стесняться маленькой модели на компьютере с большой памятью. Компьютер не обидится. Если она хорошо выполняет нужную работу, свободные гигабайты можно спокойно оставить свободными.
Для владельцев вместительных машин интересны и MoE-модели. При обработке каждого токена они используют часть экспертов, что позволяет уменьшать вычислительную нагрузку по сравнению с dense-моделью сопоставимого общего размера. Но полный набор весов всё равно нужно хранить.
Например, у Qwen3.6-35B-A3B заявлены около 35 миллиардов общих и 3 миллиардов активных параметров. По памяти это не маленькая модель 3B, а по вычислительной нагрузке её нельзя автоматически приравнять к обычной dense-модели 35B. Карточка модели
Эксперты участвуют в работе по очереди, но из квартиры никто не съехал.
Пожалуй, самое полезное, что можно сделать в начале, — придумать несколько задач, результат которых ты способен оценить. Попросить пересказать небольшой документ. Извлечь из письма имена, даты и суммы. Ответить на вопрос, где ты уже знаешь правильный ответ.
Начни с небольшого контекста, одного запроса за раз и ограниченной длины ответа. Посмотри, сколько пришлось ждать, сколько памяти осталось и, главное, помог ли тебе результат.
А потом меняй что-нибудь одно: модель, точность весов, длину контекста или число потоков. Так постепенно становится понятно, что именно влияет на твою систему. Если изменить всё сразу, эксперимент будет напоминать семейную перестановку мебели: стало иначе, но никто уже не помнит, почему начали.
У CPU-запуска есть вполне реальные ограничения. Большие документы и длинные рассуждения требуют терпения. Одновременное обслуживание многих пользователей — другая нагрузка, чем один человек за домашним компьютером. Старый сервер может заметно расходовать электричество и сообщать об этом звуком взлетающего самолёта.
Но для неспешной работы с текстами, извлечения данных, небольших автоматизаций и знакомства с локальным ИИ уже имеющаяся машина заслуживает хотя бы одной попытки.
Именно в этом смысл нашего калькулятора: помочь оценить память и выбрать варианты, с которых можно начать. Он не выдаёт сертификат скорости и не знает, на какой секунде ожидания ты начинаешь постукивать пальцами по столу.
Возможно, после нескольких вечеров ты остановишься на небольшой модели, которая хорошо справляется с конкретной работой. Возможно, найдёшь подходящую MoE. А возможно, убедишься, что для твоих задач видеокарта всё-таки нужна. Такое тоже бывает, и эксперимент от этого не становится неудачным.
По крайней мере, теперь будет понятно, за какое именно улучшение ты собираешься платить.
А если подходящая модель найдётся, старый компьютер получит новую работу. Представляю, как несколько лет назад его списали, отвезли домой, поставили под стол — и вот теперь он помогает разбирать документы.
Для сервера это неплохой поворот карьеры.
До этого в должностной инструкции было только: «Шуметь».
Источники и дальнейшее чтение
- llama.cpp · CPU inference ↗
- LocalScore · Ryzen 5 5600, Llama 3.1 8B · Test #3337 ↗
- yoshitomigoto · HP Z420, Xeon E5-2690 v2, Qwen3.6-35B-A3B ↗
- llama.cpp community · CPU-only DeepSeek-R1 experiment ↗
- Hugging Face · KV cache ↗
- llama.cpp · Token generation performance ↗
- Intel · Memory bandwidth ↗
- Intel · Dual-socket systems and NUMA ↗
- llama.cpp · llama-bench ↗
- Ollama · Qwen3.5-4B ↗
- Ollama · Phi-4-mini ↗
- Ollama · Qwen3-8B ↗
- llama.cpp · Quantization ↗
- Qwen · Qwen3.6-35B-A3B ↗
Перепечатка и использование
Опубликовано AI Model Green Zone.
Перепечатка разрешена только целиком, без сокращений и изменений, с указанием AI Model Green Zone и заметной активной ссылкой на оригинальную статью на нашем сайте.
Для переводов, сокращённых версий и переработок требуется отдельное разрешение.
Эти условия не ограничивают использование, разрешённое законом.
Ссылка на оригинал появится после настройки публичного адреса сайта.