Я решил проверить, на что способен мой старый компьютер с Radeon RX 580 под управлением Fedora. В этой статье я пошагово разберу, как завести современный ИИ-стек (Ollama, n8n, Open WebUI) через Vulkan без боли с ROCm, и почему 15-35 токенов в секунду на железе 2017 года — это реальность, доступная каждому.
Мой компьютер у меня с 2018 года. Fedora я использую в качестве своей единственной системы уже более 5 лет. Поэтому для меня она не является результатом долгих сравнений дистрибутивов специально под ИИ, а проверенная годами рабочая лошадка. Когда в этом году я решил развернуть локальную ИИ-станцию, вопрос выбора ОС не стоял. Однако Fedora подкинула свои вызовы: Podman вместо Docker, работа с SELinux и нативная поддержка Vulkan для моей видеокарты AMD. В этой статье я покажу, как я интегрировал современный ИИ-стек в стабильную систему, не превращая её в полигон для экспериментов.
Vulkan против ROCm в Fedora
Большинство руководств по запуску локальных LLM на картах AMD, найденных мной, сводятся к установке ROCm и использованию видеокарт начиная с 5000-ой серии. Для владельцев «народной» Radeon RX 580 (Polaris) в среде Fedora это путь в никуда: официальная поддержка этого поколения в последней версии ROCm прекращена.
Альтернатива — Vulkan. Благодаря свежим драйверам Mesa, можно запустить Ollama используя Vulkan-раннер .
Mesa (Free) из RPM Fusion
Я использую Mesa из репозитория RPM Fusion. Благодря чему, Vulkan-инференс задействует все возможности моей RX 580.
Следующими командами я заменил стандартные драйверы Mesa из репозиториев Fedora на версии с поддержкой аппаратного ускорения (freeworld) из репозитория RPM Fusion:
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworldsudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworldsudo dnf install mesa-vulkan-drivers.x86_64 vulkan-tools libdrm-amdgpu
После чего проверил использование видеокарты для ускорения Vulkan.
Vulkan в Ollama
Следующими командами я установил Ollama нативно с официального сайта и отредактировал файл сервиса для работы с Vulkan:
curl -fsSL https://ollama.com/install.sh | shsudo systemctl edit ollama.service
В открывшемся файле я прописал переменную для запуска Ollama с использованием Vulkan:
[Service]Environment="OLLAMA_VULKAN=1"
Следующими командами я перезапустил Ollama:
sudo systemctl daemon-reload && sudo systemctl restart ollama
Логи Ollama
После перезапуска сервиса критически важно убедиться, что Ollama корректно инициализировала Vulkan-раннер и «увидела» видеокарту. В Fedora (systemd-дистрибутиве) основным инструментом диагностики является journalctl.
Этой командой я просмотрел логи Ollama в реальном времени:
sudo journalctl -u ollama -f
На что обратить внимание в выводе:
В процессе загрузки модели Ollama должна выдать серию информационных сообщений об обнаруженных устройствах. Меня интересовали строки, подтверждающие использование Vulkan.
Почему это важно:
В логах виден не только факт обнаружения видеокарты, но и точное распределение памяти. Например, строка msg=»inference compute» id=00000000-0a00-0000-0000-000000000000 filter_id=»» library=Vulkan compute=0.0 name=Vulkan0 description=»AMD Radeon RX 580 Series (RADV POLARIS10)» libdirs=ollama,vulkan driver=0.0 pci_id=0000:0a:00.0 type=discrete total=»8.0 GiB» available=»7.0 GiB» говорит о том, что видеокарта взяла на себя основную нагрузку по хранению контекста, что и дало мне искомый прирост скорости.
Контейнеризация и инфраструктура в Podman
Установив Ollama нативно для лучшей производительности, я настроил пользовательский интерфейс с инструментами автоматизации. В Fedora логичным выбором является Podman. Изначально я запускал контейнеры для каждого сервиса по отдельности, но для удобства управления и сетевой связности объединил их в единый бандл через podman-compose.
Архитектура «AI-Bundle»
Мой рабочий стек включает четыре ключевых компонента, работающих в связке:
-
Open WebUI — основной интерфейс взаимодействия с моделями.
-
SearXNG — мета-поисковик для реализации функций RAG.
-
n8n — платформа для автоматизации сценариев ( workflow).
-
Browserless — «безголовый» браузер для парсинга веб-страниц агентами.
Сетевая магия: host.containers.internal
Главная проблема при смешанной установке (Ollama на хосте, остальное в контейнерах) — как заставить их «видеть» друг друга. Использование localhost внутри контейнера не сработает. Поэтому я пробросил Ollama через extra_hosts с параметром host-gateway.
Фрагмент рабочего docker-compose.yaml:
services: open-webui: image: ghcr.io/open-webui/open-webui:main ports: - "3000:8080" extra_hosts: - "host.containers.internal:host-gateway" environment: - OLLAMA_BASE_URL=http://host.containers.internal:11434 volumes: - ./open-webui-data:/app/backend/data:Z
Благодаря этой настройке, я заставил Open WebUI обращаться к Ollama по адресу http://containers.internal, что прозрачно для системы.
SELinux и флаг :Z
Специфика Fedora — активный SELinux. Я столкнулся с ошибкой Permission Denied при монтировании локальных папок. Чтобы Podman мог корректно работать с правами доступа, ко всем путям в секции volumes я добавил флаг :Z. Это автоматически изменило контекст безопасности папок, позволяя контейнеру записывать данные.
n8n: volumes: - ./n8n-data:/home/node/.n8n:Z
RAG, SearXNG и Агенты
Главная проблема локальных моделей — они ограничены данными на которых обучались. Чтобы сделать систему по-настоящему полезной, я интегрировал функции RAG (Retrieval-Augmented Generation) и инструменты автоматизации. Это позволило ИИ не просто «галлюцинировать» на базе старых «знаний», а работать с актуальной информацией из сети.
Веб-поиск через SearXNG
Для реализации веб-поиска я использовал SearXNG. Он выступает посредником между нейронкой и поисковыми системами.
Критически важный нюанс: чтобы Open WebUI смог «прочитать» результаты поиска, в конфигурационном файле SearXNG я принудительно включил выдачу в формате JSON. В файле settings.yml это выглядит так:
search: formats: [json]
Без этой маленькой правки магия веб-поиска в интерфейсе ИИ не работает.
Специализированные агенты в Open WebUI
Одной из самых мощных функций Open WebUI является возможность создания Агентов с преднастроенными системными промптами. На моем компьютере это позволяет эффективно обходить ограничение «одна модель — один чат», просто выбирая узкоспециализированный инструмент под конкретную задачу. Например:
-
Technical Writer: агент, настроенный на сухую техническую вычитку и оформление документации.
-
C++ Programmer: помощник, ориентированный на специфику разработки под Linux-системы.
Автоматизация сценариев в n8n
Для реализации сложных цепочек я добавил в бандл n8n. Благодаря его нахождению в одной сети Podman с остальными сервисами, у него есть беспрепятственный доступ к API Ollama. Это позволило настраить процессы автоматизации, например, для парсинга сайтов или анализа локальных логов.
Реальная производительность моделей
Мне стало интересно на, что способен мой компьютер на базе Ryzen 7 1700 и Radeon RX 580 8GB при работе с LLM. И как выяснилось, он способен на многое.
Производительность в цифрах
Поскольку современные модели весом от 5 Гб и выше требуют значительных ресурсов, ключевым фактором стало распределение нагрузки. Благодаря Vulkan-раннеру, я заставил Ollama эффективно использовать 8 Гб видеопамяти моей видеокарты, а недостающий объем добирать из системной ОЗУ (32 Гб DDR4).
В таком гибридном режиме (примерно 72% на GPU) при использовании Llama 3.1 (8B), Qwen 3.5 (9B) и DeepSeek-R1 (8B) я получил следующие показатели скорости генерации:
-
Скорость генерации (eval rate): 33.70 tokens/s.
-
Скорость обработки промпта (prompt eval rate): 52.17 tokens/s.
Показатель в 33.70 t/s при полном задействовании видеокарты моделью, на мой взгляд, является очень высоким. Такая скорость генерации на архитектуре Polaris 10 (AMD RX 580) наглядно доказала эффективность Vulkan-раннера. Благодаря чему, модель отвечает практически мгновенно, что критически важно для работы агентов в связке с n8n, где задержки приводят к таймаутам.
-
Скорость генерации (eval rate): 16.93 tokens/s.
-
Скорость обработки промпта (prompt eval rate): 37.78 tokens/s.
На мой взгляд для модели с 9 миллиардами параметров, работающей в гибридном режиме на железе 2017 года, это выдающийся результат. Скорость в 16.93 t/s обеспечивает плавный вывод текста, сопоставимый с комфортным темпом чтения, что делает использование модели Qwen 3.5 (9B) в качестве ежедневного ассистента абсолютно оправданным.
-
Скорость генерации (eval rate): 29.74 tokens/s.
-
Скорость обработки промпта (prompt eval rate): 35.58 tokens/s.
Меня удивила скорость работы DeepSeek-R1 (8B) через Vulkan — почти 30 токенов в секунду позволяют наблюдать за «мыслями» модели практически без задержек. Это идеальный инструмент для тех, кому важна логика и глубокий анализ запросов в полностью автономном режиме.
Итоги и выводы
Я думаю, что связка Fedora + AMD + Vulkan доказала свою жизнеспособность. Основные выводы:
-
Vulkan — спасение для старых карт AMD. Он дает «второе дыхание» картам поколения Polaris.
-
Podman как стандарт. Использование контейнерных бандлов позволяет держать систему в чистоте, а специфика SELinux легко решается флагом :Z.
-
Автономность — это реально. Свой ИИ-стек не зависит от подписок и внешних корпораций.
Надеюсь, мой опыт поможет владельцам карт AMD вдохнуть вторую жизнь в свое железо. Буду рад ответить на вопросы в комментариях!
ссылка на оригинал статьи https://habr.com/ru/articles/1033520/