|
|
|
Professor Seleznov
|
Я решил проверить, на что способен мой старый компьютер сRadeonRX580под управлениемFedora. В этой статье я пошагово разберу, как завести современный ИИ-стек (Ollama,n8n,OpenWebUI) через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-freeworld sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld sudo dnf install mesa-vulkan-drivers.x86_64 vulkan-tools libdrm-amdgpu
После чего проверил использование видеокарты для ускорения Vulkan.

Подтверждение доступности GPU через Vulkan-драйвер RADV Vulkan в Ollama Следующими командами я установил Ollama нативно с официального сайта и отредактировал файл сервиса для работы с Vulkan:
curl -fsSL https://ollama.com/install.sh | sh sudo 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— «безголовый» браузер для парсинга веб-страниц агентами.

Управление ИИ-стеком через интерфейс Podman Desktop в Fedora. Сетевая магия: 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-системы.

Настроенные агенты для работы с кодом и текстом в интерфейсе Open WebUI». Автоматизация сценариев в n8n Для реализации сложных цепочек я добавил в бандл n8n. Благодаря его нахождению в одной сети Podman с остальными сервисами, у него есть беспрепятственный доступ к API Ollama. Это позволило настраить процессы автоматизации, например, для парсинга сайтов или анализа локальных логов.

Сценарий автоматизации веб-поиска в n8n. Реальная производительность моделей Мне стало интересно на, что способен мой компьютер на базе 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) я получил следующие показатели скорости генерации:

Результаты замеров для Llama 3.1 (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, где задержки приводят к таймаутам.

Результаты замеров для Qwen 3.5 (9B)
- Скорость генерации (eval rate): 16.93 tokens/s.
- Скорость обработки промпта (prompt eval rate): 37.78 tokens/s.
На мой взгляд для модели с 9 миллиардами параметров, работающей в гибридном режиме на железе 2017 года, это выдающийся результат. Скорость в 16.93 t/s обеспечивает плавный вывод текста, сопоставимый с комфортным темпом чтения, что делает использование модели Qwen 3.5 (9B) в качестве ежедневного ассистента абсолютно оправданным.

Результаты замеров для DeepSeek-R1 (8B)
- Скорость генерации (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 вдохнуть вторую жизнь в свое железо. Буду рад ответить на вопросы в комментариях!-Источник
|
|
|
|