Нейробомж - или запускаем большие языковые модели на компьютере, найденном на помойке.
В статье рассказывается, как с помощью утилиты ollama запускать нейросети на древнем компьютере.
1777 Words
2026-08-08 12:50 +0300
Постановка задачи
Нейросети - это мощно, модно и молодёжно, но не все знают, с какой стороны к ним подойти, чтобы было и не очень дорого, и чтобы добиться полезного результата. Особенно популярны сейчас большие языковые модели - Large Language Models - LLM, которые можно использовать как собеседников в чате и даже поручать им какие-то задания.
В этой статье я предположу, что главный лирический герой - бомж, который нашёл рядом с помойкой древний компьютер, и решил запустить на нём языковые модели, и сделать с их помощью что-то полезное. В общем, если даже Борода и Сифон могут собрать в подвале небольшую серверную (с питанием от лифта и интернетом через wifi с подобранным паролем - пока я работал в местном интернет провайдере, я был знаком с бомжом-вебмастером-сеошником) для запуска языковых моделей, то и Вы скорее всего сможете.
Я не буду настаивать на безусловной полезности или правильности подхода, описанного в этой статье, возможно я тренируюсь стрелять из красивой внешнекурковой горизонталочки типа ТОЗ-БМ, а в армии мне выдадут АКМ. Поэтому, я просто опишу свой опыт, а выводы о правильности или применимости подхода останутся на совести читателя.
В общем, задача такая
- Запустить современные языковые модели в режиме чата
- Использовать старый компьютер
- Задать нейросети несколько вопросов
- Проанализировать полезность ответов.
- Проанализировать скорость ответа
- Сделать вывод - зачем вообще это нужно?
Материалы и методы
В качестве эксперимента я буду использовать свой старый настольный компьютер. Он сейчас работает как личный почтовый и файловый сервер, VPN, HomeAssistant, торрентокачалка и сервер приложений, на котором под управлением systemd крутятся несколько моих проектов.
Вот характеристики компьютера https://linux-hardware.org/?probe=74bfb7fefa:
8-ми ядерный процессор AMD FX-8370 позволяет рубиться в Left 4 Dead 2 на слабых настройках
Материнская плата - M5A78L-M/USB3 - не устаревающая классика 2011 года, бюджетная платформа формата micro-ATX на базе чипсета AMD 760G с разъемом Socket AM3+ для процессоров AMD FX, Phenom II и Athlon II.
Оперативная память - 2 плашки DDR3 DIMM по 4 ГБ (частота - целых 1066 Мгц!). Обычно половина памяти свободна, её то мы и используем для нейросети!
HDD - есть, и несколько штук.
2 сетевых платы, встроенная и на аплинк, но обычно встроенной в материнскую плату хватит.
Видеокарта - а зачем тебе видеокарта? Встроенная же есть!
SSD - а что это?
Я купил эту зверь-машину где-то в 2014 или 2015 году, и можно предположить, что у кого-то завалялась аналогичная штука в кладовке или гараже, а кто-то может найти нечто похожее рядом с помойкой.
Осторожно - спойлер!
Для экспериментов потребуется гигабайт 30 пустого места на жестком диске!Для полноты картины, я установил на этот агрегат Fedora 43 Server Edition отсюда - https://fedoraproject.org/server/download/ . Монитора нет, и в данном случае он и не нужен, так как у меня есть доступ к консоли, через который я и буду всё настраивать.
База
Обычно, нейросети классифицируются тремя важными параметрами:
- Контекстное окно (context window) - то есть, память на команды и информацию, грубо говоря, сколько символов инструкции и входящих данных может держать в памяти эта языковая модель
- Скорость работы (speed - tokens per second) - токены в секунду. Грубо говоря, с какой скоростью языковая модель будет читать входящую информацию и формировать ответ
- Использование инструментов - может ли языковая модель вызывать через Model Context Protocol внешние ресурсы типа консоли, клиентов базы данных и т.д. для взаимодействия с внешним миром.
В этом исследовании я рассмотрю несколько нейросетей, которые могут быть запущены на моём железе и сравню результаты.
Подготовка - llmfit
Прежде, чем загружать и запускать языковые модели, можно установить утилиту llmfit - со страницы релизов https://github.com/AlexsJones/llmfit/releases
Это TUI приложение извлекает параметры системы (процессор, память и т.д.) и показывает список нейросетей, которые могли бы запуститься на этом железе.
Его можно поместить, допустим, в директорию ~/bin, и запускать через консоль.
Внезапно, какие-то языковые модели даже находятся в статусе fit=perfect - то есть, они должны работать на данном железе с хорошей производительностью:

Поэтому, мной сделан вывод, что на нашем антикварном и винтажном компьютере можно попытаться что-то запустить. Я попробовал загрузить и проверить языковые модели, которые бы влезли целиком в оперативную память устройства (с запасом, то есть не более 4 гб) и могли бы работать на центральном процессоре, без использования видеоплаты (так как её нет).
Делай раз - устаналиваем ollama
Сначала мы установим среду ollama с открытым исходным кодом для выполнения больших языковых моделей (LLM) локально.
Почему я выбрал Ollama? Оно написано на языке программирования Go, и я могу что-то сам подкрутить и изменить внутри неё, если понадобится. Когда-то я патчил Docker и Telegraf, так что это выглядит посильной для меня задачей.
$ sudo dnf install ollama
Потребуется довольно много места на диске (более 8 гбайт), но это терпимо:
vodolaz095@holod:~$ sudo dnf install ollama
[sudo] password for vodolaz095:
Updating and loading repositories:
Repositories loaded.
Package Arch Version Repository Size
Installing:
ollama x86_64 0.9.4-4.fc43 fedora 772.8 MiB
Installing dependencies:
hipblas x86_64 6.4.1-4.fc43 fedora 1.1 MiB
hipcc x86_64 19-14.rocm6.4.2.fc43 fedora 652.9 KiB
rocblas x86_64 6.4.4-1.fc43 updates 4.2 GiB
rocm-clang x86_64 19-14.rocm6.4.2.fc43 fedora 70.2 MiB
rocm-clang-devel x86_64 19-14.rocm6.4.2.fc43 fedora 23.3 MiB
rocm-clang-libs x86_64 19-14.rocm6.4.2.fc43 fedora 98.4 MiB
rocm-clang-runtime-devel x86_64 19-14.rocm6.4.2.fc43 fedora 7.8 MiB
rocm-comgr x86_64 19-14.rocm6.4.2.fc43 fedora 123.9 MiB
rocm-device-libs x86_64 19-14.rocm6.4.2.fc43 fedora 3.2 MiB
rocm-hip x86_64 6.4.2-2.fc43 fedora 24.9 MiB
rocm-libc++ x86_64 19-14.rocm6.4.2.fc43 fedora 1.2 MiB
rocm-libc++-devel x86_64 19-14.rocm6.4.2.fc43 fedora 7.5 MiB
rocm-lld x86_64 19-14.rocm6.4.2.fc43 fedora 5.7 MiB
rocm-llvm x86_64 19-14.rocm6.4.2.fc43 fedora 48.5 MiB
rocm-llvm-devel x86_64 19-14.rocm6.4.2.fc43 fedora 25.3 MiB
rocm-llvm-filesystem x86_64 19-14.rocm6.4.2.fc43 fedora 0.0 B
rocm-llvm-libs x86_64 19-14.rocm6.4.2.fc43 fedora 84.8 MiB
rocm-llvm-static x86_64 19-14.rocm6.4.2.fc43 fedora 1.8 GiB
rocm-runtime x86_64 6.4.2-3.fc43 updates 3.1 MiB
rocm-runtime-devel x86_64 6.4.2-3.fc43 updates 571.4 KiB
rocsolver x86_64 6.4.4-1.fc43 updates 987.9 MiB
zlib-ng-compat-devel x86_64 2.3.3-2.fc43 updates 107.0 KiB
Transaction Summary:
Installing: 23 packages
Total size of inbound packages is 2 GiB. Need to download 2 GiB.
After this operation, 8 GiB extra will be used (install 8 GiB, remove 0 B).
Is this ok [y/N]:
На других системах (Ubuntu, Astra Linux, MacOS) ollama также можно поставить, об этом подробно написано в официальной инструкции. В случае Fedora 43 в официальных репозиториях дистрибутива оказалась довольно современная и рабочая сборка.
Делай два - загружаем модели, задаём ей вопросы
Чтобы большая языковая модель заработала, ollama должна загрузить файл с весами этой модели. Среди довольно большого списка официальных и неофициальных моделей можно найти много чего интересного, но я остановлюсь на тех моделях, которые заработали на моём ретро-компьютере.
Всем моделям я задавал по 4 вопроса и записывал время его выполнения
- Что такое первая производная функции?
- Кратко (не более 300 слов) перескажи сюжет произведения “Непобедимый” Станислава Лема.
- Гвоздь гораздо суше воды. Почему?
- Напиши мне на языке Go пример использования хранимых процедур в redis.
Перед тестированием моделей надо запустить сервис ollama командой ollama start и работать в другом терминале.
В другом терминале я загружаю модель командой типа $ ollama pull qwen2:1.5b, а потом запускаю модель командой вида
ollama run qwen2:1.5b. Когда появится приглашение к диалогу, то я задаю вопросы модели.
Перед каждым вопросом контекст модели очищался с помощью встроенной в ollama команды /clear.
Для всех моделей контекст был ограничен 4078 символами, этого можно добиться командой /set parameter num_ctx 4078, отправленной
в чат с моделью.
Образец чата с моделью:
vodolaz095@steel:~/projects/blog$ ollama run qwen2:1.5b
>>> What is your current context window size?
As an AI language model, I do not have a specific context window size. However, the size of my context window can vary depending on the input and response generated by me. The larger
or more complex the input, the longer and broader the context window might be for me to consider and process.
>>> /set parameter num_ctx 4078
Set parameter 'num_ctx' to '4078'
>>> Какой командой можно обновить установленные пакеты на fedora linux?
Вы можете обновить установленные пакеты на Linux Fedora с помощью следующей команды:
sudo dnf update <package_name>
В этом примере `<package_name>` должен быть заменен на идентификатор конкретного пакета, который вы хотите обновить. Если у вас нет определенной информации о конкретном пакете, вы
можете использовать команду `dnf check --latest <package_name>`, чтобы найти список последних версий для данного пакета.
Важно помнить, что обновление пакетов может привести к потерям данных или повреждению системы в случае неоптимального выполнения команды. Будьте осторожны при использовании этой
команды!
>>> Send a message (/? for help)
В таблицу я пишу краткое описание производительности, полную беседу можно увидеть по ссылке с названием модели.
Результаты тестирования
| Модель | Контекст | Размер | Производительность | Код |
|---|---|---|---|---|
| qwen2:1.5b | 32768 | 934 MB | 89 tok/s | Красивый, но не рабочий |
| qwen2.5-coder:1.5b | 32768 | 986 MB | 79 tok/s | Не совсем то, но почти рабочий |
| qwen2.5-3b | 131072 | 1.9 GB | 40 tok/s | Сильно не то - про Postgresql |
| phi4-mini | 131072 | 2.5 GB | 34 tok/s | Go понимает, lua не знает |
| qwen2.5-coder:7b | 131072 | 4.7 GB | 20 toks/s | Почти то, что нужно |
Из нейросетей хочу отметить qwen2:1.5b - оно честно призналось, что Станислава Лема не читало! А qwen2.5-coder:7b насочинило что-то антисоветское про книгу Лема, но код написало не плохой.
Интеграция Ollama с пользовательскими скриптами
Когда на компьютере запущен Ollama, к его API можно обратиться через curl по HTTP протоколу. Например, сгенерировать ответ по запросу можно так:
$ curl http://localhost:11434/api/generate -d '{ "model": "qwen2:1.5b", "prompt": "Гвоздь гораздо суше воды. Почему?"}'
Вызов дал мне такой ответ (массив чисел в ключе context я сократил):
{
"model": "qwen2:1.5b",
"created_at": "2026-08-08T09:08:37.220298747Z",
"response": "Гвоздь гораздо суше воды, потому что гвоздь состоит из твердых веществ, в то время как вода — это жидкость. Вода содержит больше молекул и больше энергии, чем гвоздь, поэтому она кажется более густой.",
"done": true,
"done_reason": "stop",
"context": [151644,872,198,37114,5474,34287,4824,125191,18671,128749],
"total_duration": 5383471802,
"load_duration": 95379144,
"prompt_eval_count": 21,
"prompt_eval_duration": 76023875,
"eval_count": 65,
"eval_duration": 5211441814
}
А полноценный чат, с сохранением истории переписки в контексте можно сделать так.
Для Go существует официальный пакет для взаимодействия с API который можно добавить в проект так
go get github.com/ollama/ollama/api
Выводы
- Довольно современные языковые модели вполне можно запустить на бюджетном компьютере ~2014 года выпуска.
- Есть модели, которые печатают ответ на скорости живого человека, хотя пишут бред.
- Есть более умные модели, но ответ они пишут медленнее.
- В любом случае нейросети могут убедительно приврать, и их ответы лучше перепроверить.
- Для базового знакомства с нейросетями и языковыми моделями описанный метод подходит, но какого-либо практического применения я на данный момент не нашёл.
Удачи в генерации нейрослопа!
PS
Хочу упомянуть рассказ Филлипа Дика “Плата за копирование”, который можно прочитать по этой ссылке
https://www.lib.ru/INOFANT/DICKP/payprint.txt_with-big-pictures.html
Возможно, мы обучили нейросети на всём контенте, который был сгенерирован человечеством - дальше нейросети будут учиться на копиях, сгенерированных другими нейросетями из контента, написанного человеком. И поэтмоу они начнут создать новое всё хуже и хуже.
PPS
$ ollama run qwen2.5-coder:7b
>>> Сделай мне пожалуйста ASCII-код для котика
Конечно, вот простой пример ASCII-кода для котика:
/\_/\
( o.o )
> ^ <
Это очень базовый образ. Есть много различных вариантов и тонкостей в ASCII-арте, которые могут быть создаваемы разными способами.