Первый раз щупаю эту тему.
В целом, не так давно на слуху появился jabber-клиент Fluux Messenger — примечателен тем, что от Process One, разработчиков одного из самых популярных jabber-серверов. Как минимум, находится среди их репозиториев.
А еще там появился Fluux Agent. Роадмап многообещающий: на сейчас он уже может выступать интерфейсом к Ollama или работать с «облачными» сервисами; может работать 1 на 1 или через конференцию; выступать в качестве бота или компонента сервера. А в будущем планируется возможность сделать общение между такими ботами — федеративную AI-сеть.
Идеей заинтересовался; возможностью попробовать запустить локального AI-агента и посмотреть, на что оно вообще годно — тоже. Подсобрал по разным уголкам дома железо и решил развернуть все на нем. В ход пошла старая основа от NAS’а — Athlon 740 и 32 ГБ оперативки с той же материнкой, на которой все было установлено. А в качестве GPU-основы для вычислений — пара видеокарт от майнинг-ригов. Самыми мощными у меня в хозяйстве были Nvidia 1080TI с 11 ГБ памяти, пару из них и задействовал.
Систему развернул на SSD с одного из майнинг-ригов. Прежде всего, что надо? Начал с установки актуального Debian 13, далее доставляем:
apt-get install linux-headers-amd64 libcuda1 nvidia-smi nvidia-driver nvidia-persistenced nvidia-kernel-dkms curl --no-install-recommends
Спустя несколько дней уже немного сложно вспомнить полный список пакетов для базового варианта (кстати, DVD1 у меня при выборе программного обеспечения без выбора Gnome начал его ставить — глюк? Надо будет проверить, заодно и список пакетов для этой заметки уточнить). Так или иначе, нужен работающий драйвер Nvidia и поддержка Cuda. Проверяем все в выводе команды nvidia-smi. После майнинг-ригов немного непривычно, что не требуется запущенный X-сервер (хотя там, возможно, было требование из-за разгона карт и управления питанием). Хотя nvidia-driver по зависимостям таки притягивает xorg-core, но запущенного процесса нет. Update: проверил пакеты, уточнил команду выше. DKMS-модуль, в общем-то, тянется по зависимостям, но пусть будет указан. А вот без nvidia-persistenced карты не хотели в простое становиться в P8, несмотря на все советы гугло-ИИ, и потребляли 40-60 Вт без нагрузки.
Далее ставим Ollama — запускалку AI-моделей. Фактически, все сводится к запуску sh-архива с сайта, как это описано тут: https://docs.ollama.com/linux. Мало того, оно даже рут-права через sudo пробует автоматически, без каких-либо запросов (запускал от юзера). Но в целом, на указанной страничке все весьма подробно расписано в том числе по шагам на случай, если захочется сделать все руками.
К Ollama хорошо бы веб-интерфейс. По запросу в гугле предлагается Open WebUI. С ним на Debian 13 чуть сложнее: все бы хорошо и оно ставится элементарно через pip, но Open WebUI не работает с Python 3.13, только с более старыми (инструкция в целом). А вот тут расписано, как поставить нужную версию Python’а и все остальное на Debian 13. Этим и воспользовался (попытки создать venv на Debian 12 в чруте, а потом подсунуть все созданное на Debian 13 ни к чему не привели).
Веб-интерфейс, кхм… объемный. У меня занимает на сейчас 5,6 ГБ, так что стоит запастись местом.
Ollama запущена, веб-интерфейс запущен. Идем на http://127.0.0.1:8080, создаем учетку, авторизуемся. В разделе администраторских настроек можем скачать нужные модели.
https://habr.com/ru/articles/951962/ — Подробно расписано о том, как выбрать модель и сколько это занимает ресурсов. В веб-интерфейсе можно тянуть модели напрямую с библиотеки, ознакомиться с ней можно тут. Есть модели самого разного назначения и под самые разные ресурсы. Для дальнейшего использования с ботом стоит обратить внимание на те, где стоит пометка tools — например, translategemma, которую я хотел использовать для бота-переводчика, с ботом работать сходу не захотела, только через веб-интерфейс. Наверняка можно будет потом что-то поправить, но пока я не знаю как.
В целом, модели достаточно объемные, так что место начало заканчиваться достаточно быстро. Для быстрой подгрузки хорошо бы иметь шустрый SSD. На сейчас еще спасает то, что при повторном вызове модели (у меня она через время выгружается. Update: идем в «Настройки — Общие — Продвинутые» и внизу ставим -1m для keep alive) она быстро подгружается за счет файлового кэша в оперативной памяти. А вот у людей, у кого много часто сменяемых моделей и/или десятки гигабайт видеопамяти — там без быстрого NVMe, наверное, тяжко будет.
Статья «10 советов по Open WebUI, которые помогут в работе с нейросетями«. Попутно могу отметить, что для работы с аудио нужен доступ к веб-интерфейсу через HTTPS. Пробовал вносить адрес в список исключений в браузере, но пока не помогло.
Ну и, напоследок — бот. Скачиваем репозиторий, установка расписана в разделе «Launch». Для начала сделал запуск в режиме бота, а не транспорта (будут ли преимущества именно в транспорт-режиме — пока не знаю). cargo run в первый раз компилирует проект, потом запускает. Общий размер вышел 1,3 ГБ. Проект пока сильно сырой, при старте была ругань на отсутствующие переменные, в итоге service-файл выглядит примерно так:
[Unit] Description=Fluux Agent XMPP Bot After=network.target [Service] Type=simple User=fluux-agent Group=fluux-agent WorkingDirectory=/home/fluux-agent/fluux-agent/ Environment="ANTHROPIC_API_KEY=1" Environment="TAVILY_API_KEY=1" Environment="PERPLEXITY_API_KEY=1" Environment="VAR_NAME=1" Environment="BOT_PASSWORD=1" ExecStart=/usr/bin/cargo run Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
В дальнейшем все вполне неплохо. Добавил бота в ростер и в несколько конференций. Для работы с разными моделями сделал несколько копий с разными конфиг-файлами (так что да, снова затраты места).
По ресурсам и скорости работы. Машинка потребляет примерно 76 Вт в простое — поставил Aerocool Strike X 900W с серебряным сертификатом, как наименее мощный из тех, что были, но выше 350-ки Seasonic’а, который использовал в NAS. На деле можно взять какой-то более толковый БП с более высоким КПД. В пике потребление достигает 450 Вт. Модель на сейчас использую «qwen3:30b-a3b-thinking-2507-q4_K_M», она вмещается в память двух видеокарт. Хотя пишут, что можно использовать и модели, которые не вмещаются в память — режим GPU Offload. Но даже сейчас ответы занимают от 10 секунд до минуты (холодный запуск — если модель надо подгружать в память), так что злоупотреблять не стоит. Кроме того, при параллельном использовании нескольких ботов с разными моделями они постоянно будут переподгружаться — тоже стоит иметь в виду. Либо можно использовать несколько более мелких, но менее точных моделей.
Видеокарты в итоге работают в режиме x16 для первой и x4 для второй, у материнки PCIE v 2.0 — так что есть еще куда разгуляться. Можно было бы подыскать материнку с большим числом слотов и поставить 3 карты — но это единственный на сейчас комплект, куда можно поставить относительно мощный процессор и под который имеется большой объем памяти.
По занятой оперативной памяти — 1,3 ГБ под Open WebUI, около гигабайта для процесса ollama, работающего с моделью (но в процессе экспериментов было и 20 ГБ с какой-то моделью), чуть больше 40 МБ для fluux-agent.
Update 2026-03-24: большой апдейт.
- Во-первых, я таки сменил платформу. Решил, что не обязательно цепляться за Athlon 740, а DDR3-память можно поставить в одну из материнок, бывших в старых ригах. Процессоры, правда, у меня там, в основном, Athlon X2 250, поэтому взял с olx’а AMD FX 8320 примерно за 20$ (а когда-то стоил под 2 сотни!). Приехал с чуть помятыми ногами, но смог исправить. Так или иначе, выбор материнок существенно расширился. Из кандидатов теперь были Asrock 970 Extreme4 и купленная когда-то за копейки
Gigabyte GA-990FXA-UD5 с восстановленными линиями между CPU и оперативной памятью. К сожалению, выяснилось, что у Гигабайта работают только 2 слота, а 16 ГБ памяти было б маловато. Хотя по слотам, конечно, там было бы где разгуляться. Начал работать с Асроком. Сначала пересобрал все на базе того же системного блока, но при более-менее длительной работе картам было жарковато. Да и хотелось попробовать вариант на 3 карты. В итоге собрал все в стоечном корпусе от майнинг-рига, задействовав райзеры х16. По конфигурации слотов тут выходило x8+x8+x4, но на скорости работы первых двух карт заметно это не сказалось.
-
Во-вторых, заменил БП на киловаттный платиновый Superflower с майнинг рига. Потребление в простое упало где-то на 3 Вт — до 79,5-80 Вт.
-
В-третьих, добавил третью карту. Однако на той же модели (влазящей в 20 ГБ) заполнение карт идет последовательно — т.е., третья ОБЫЧНО не задействуется. Если же спровоцировать «размазывание» модели на все 3 карты — выходит медленнее. На запрос «2+2» вышло так:
-
qwen3:30b-a3b-thinking-2507-q4_K_M, на 2 картах: 2,42 сек, 57,24 токен/сек.
-
qwen3:30b-a3b-thinking-2507-q4_K_M, на 3 картах: 3.35 сек, 49.52 tokens/s
- Тот же запрос, но для qwen3:30b-a3b-thinking-2507-q8_0 на 32 ГБ, где задействовались уже все 3 карты, выполнялся уже почти 11 секунд с 12.05 tokens/s.
-
В общем, чуда не будет и без необходимости жирные модели гонять нет смысла, скорость падает очень сильно. Третью карту пока снимать не буду, будет полезна или при совместном использовании нескольких мелких моделей, или может со временем подберу что-то более удачное, но требующее большой объем памяти. Потребление в простое поднялось до 90 Вт. При достаточной выработке с панелей — некритично, пусть крутится.
На пробу запускал codellama:70b-python-q5_0, занимающую 47 ГБ — тут уже задействовалась и системная память (но, к слову, чуть больше гигабайта на каждой карте простаивало — не совсем оптимально распределялось между устройствами), и процессор (в остальное время, кстати, он особо не нагружается, от силы наполовину). «2+2» решало 2 минуты 57 секунд с 0.66 tokens/s.
Для предотвращения выгрузки модели и ускорения ответов делаем следующее:
sudo systemctl edit ollama.service
Вписываем там:
[Service]
Environment="OLLAMA_KEEP_ALIVE=-1"
Продолжение следует.
2 мысли о “Debian 13, Ollama + OpenwebUI и Fluux Agent: заводим персональный AI в Jabber”