Нейробомж - или запускаем большие языковые модели на компьютере, найденном на помойке.

В статье рассказывается, как с помощью утилиты ollama запускать нейросети на древнем компьютере.

Анатолий Остроумов

aineurollmollamalinux

1488 Words

2026-08-07 18: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/ . Монитора нет, и в данном случае он и не нужен, так как у меня есть доступ к консоли, через который я и буду всё настраивать.

База

Обычно, нейросети классифицируются тремя важными параметрами:

  1. Контекстное окно (context window) - то есть, память на команды и информацию, грубо говоря, сколько символов инструкции и входящих данных может держать в памяти эта языковая модель
  2. Скорость работы (speed - tokens per second) - токены в секунду. Грубо говоря, с какой скоростью языковая модель будет читать входящую информацию и формировать ответ
  3. Использование инструментов - может ли языковая модель вызывать через Model Context Protocol внешние ресурсы типа консоли, клиентов базы данных и т.д. для взаимодействия с внешним миром.

В этом исследовании я рассмотрю несколько нейросетей, которые могут быть запущены на моём железе и сравню результаты.

Подготовка - llmfit

Прежде, чем загружать и запускать языковые модели, можно установить утилиту llmfit - со страницы релизов https://github.com/AlexsJones/llmfit/releases Это TUI приложение извлекает параметры системы (процессор, память и т.д.) и показывает список нейросетей, которые могли бы запуститься на этом железе. Его можно поместить, допустим, в директорию ~/bin, и запускать через консоль. Внезапно, какие-то языковые модели даже находятся в статусе fit=perfect - то есть, они должны работать на данном железе с хорошей производительностью:

llmfit.png

Поэтому, мной сделан вывод, что на нашем антикварном и винтажном компьютере можно попытаться что-то запустить. Я попробовал загрузить и проверить языковые модели, которые бы влезли целиком в оперативную память устройства (с запасом, то есть не более 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 вопроса и записывал время его выполнения

  1. Что такое первая производная функции?
  2. Кратко (не более 300 слов) перескажи сюжет произведения “Непобедимый” Станислава Лема.
  3. Гвоздь гораздо суше воды. Почему?
  4. Напиши мне на языке Go пример использования хранимых процедур в redis.

Перед тестированием моделей надо запустить сервис ollama командой ollama start и работать в другом терминале. В другом терминале я загружаю модель командой типа $ ollama pull qwen2:1.5b, а потом запускаю модель командой вида ollama run qwen2:1.5b. Когда появится приглашение к диалогу, то я задаю вопросы модели. Перед каждым вопросом контекст модели очищался с помощью встроенной в ollama команды /clear. Для всех моделей контекст был ограничен 4078 символами. В таблицу я пишу краткое описание производительности, полную беседу можно увидеть по ссылке с названием модели.

Результаты тестирования

МодельКонтекстРазмерПроизводительностьКод
qwen2:1.5b32768934 MB89 tok/sКрасивый, но не рабочий
qwen2.5-coder:1.5b32768986 MB79 tok/sНе совсем то, но почти рабочий
qwen2.5-3b1310721.9 GB40 tok/sСильно не то - про Postgresql
phi4-mini1310722.5 GB34 tok/sGo понимает, lua не знает
qwen2.5-coder:7b1310724.7 GB20 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 года выпуска.
  • Есть модели, которые печатают ответ на скорости живого человека, хотя пишут бред.
  • Есть более умные модели, но ответ они пишут медленнее.
  • В любом случае нейросети могут убедительно приврать, и их ответы лучше перепроверить.
  • Для базового знакомства с нейросетями и языковыми моделями описанный метод подходит, но какого-либо практического применения я на данный момент не нашёл.