Первый раз щупаю эту тему.
В целом, не так давно на слуху появился 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-kernel-dkms
Спустя несколько дней уже немного сложно вспомнить полный список пакетов для базового варианта (кстати, DVD1 у меня при выборе программного обеспечения без выбора Gnome начал его ставить – глюк? Надо будет проверить, заодно и список пакетов для этой заметки уточнить). Так или иначе, нужен работающий драйвер Nvidia и поддержка Cuda. Проверяем все в выводе команды nvidia-smi. После майнинг-ригов немного непривычно, что не требуется запущенный X-сервер (хотя там, возможно, было требование из-за разгона карт и управления питанием). Хотя nvidia-driver по зависимостям таки притягивает xorg-core, но запущенного процесса нет.
Далее ставим 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.
Продолжение следует.