📄

Локальный LLM-сервер на AMD Strix Halo: запуск Qwen3.8-Flash-Next через HALOGEN в Fedora 43

16.10.2026 LLM ?>

Запуск большой языковой модели локально больше не обязательно требует дискретной видеокарты с десятками гигабайт VRAM. AMD Strix Halo с 128 ГБ унифицированной памяти способен обслуживать крупные MoE-модели, если движок умеет работать с UMA-памятью, memory mapping и особенностями iGPU.

В этой статье — практическая настройка Qwen3.8-Flash-Next на Fedora 43 Server через HALOGEN, включая OpenAI-совместимый API, API-ключ, четыре параллельные сессии и внешний доступ через порт 9091.

HALOGEN — специализированный inference-движок именно для AMD Strix Halo (gfx1151) и семейства Qwen3.8-Flash-Next. Это не универсальная замена llama.cpp или vLLM: его преимущества достигаются именно за счёт узкой оптимизации под одну архитектуру GPU и одну модельную линейку.

Что представляет собой Qwen3.8-Flash-Next

Qwen3.8-Flash-Next — это не «обычная» dense-модель. Она использует смесь экспертов (MoE), гибридное внимание и отдельные N-gram embeddings.

ПараметрЗначение
Основная модель125 млрд параметров
Активируется на токеноколо 6 млрд параметров
N-gram embedding tableоколо 51 млрд параметров
MTP-headоколо 4 млрд параметров
Количество слоёв48
MoE-экспертов512 routed + 1 shared
Активных routed-экспертов10
Нативный контекст262 144 токена
Максимальный расширенный контекстдо 1 000 000 токенов
Возможноститекст и опционально изображения

MoE означает, что модель имеет большую суммарную ёмкость, но не выполняет вычисления по всем параметрам на каждом токене. Это позволяет получить более высокую производительность, чем у плотной модели аналогичного полного размера.

Почему HALOGEN хорошо подходит Strix Halo

Strix Halo использует unified memory architecture: CPU и встроенный GPU работают с общей LPDDR5X-памятью. У него нет отдельной физической VRAM, как у дискретной NVIDIA или Radeon.

HALOGEN учитывает это устройство:

  • ориентирован на GPU gfx1151;
  • использует собственный формат весов .hgn;
  • не требует копировать весь комплект весов в «VRAM»;
  • хранит N-gram lookup table через memory mapping;
  • использует MTP/speculative decoding для ускорения генерации;
  • предоставляет OpenAI-совместимый HTTP API.

Для запуска важно установить в BIOS параметр UMA Frame Buffer в минимальное фиксированное значение, а не оставлять Auto. HALOGEN нужен доступ к обычной памяти хоста, а крупный статический резерв под iGPU уменьшает доступный объём RAM.


Размер модели и требования к диску

Стандартный набор весов HALOGEN выглядит так:

ФайлРазмерНазначение
qwen38-flash-next-v2.hgn62,1 GiBОсновной checkpoint
qwen38-flash-next-ngram.hgn47,7 GiBN-gram lookup table
tokenizer/небольшойТокенизатор
Всегооколо 110 GiBТекстовая модель
qwen38-flash-next-vision.hgn0,84 GiBОпциональная поддержка изображений
qwen38-flash-next-mtp.hgn1,42 GiBDraft-head для стороннего GGUF

При первом запуске HALOGEN автоматически загрузит нужные файлы, если указать:

-e HALOGEN_DOWNLOAD=peonist-ai/halogen-qwen3.8-flash-next

Нужно заранее иметь хотя бы 120–140 ГБ свободного места: помимо самих весов нужны служебные файлы и запас для обновлений.

Ожидаемая производительность

По опубликованным результатам HALOGEN для Strix Halo ориентиры следующие:

СценарийПроизводительность
Генерация текстаоколо 54 токенов/с
Благоприятный сценарий speculative decodingдо 94 токенов/с
Генерация при редактировании кодадо 81 токена/с
Генерация tool callsоколо 71 токена/с
Prefill: промпт 8K токеновоколо 1 821 токена/с
Prefill: промпт 32K токеновоколо 1 740 токенов/с
Prefill: промпт 131K токеновоколо 1 675 токенов/с

Для практики это означает:

  • новый документ на 32K токенов будет обработан примерно за 19 секунд;
  • уже закэшированная история диалога продолжится заметно быстрее;
  • ответ на 1 000 токенов при скорости 54 токена/с будет генерироваться около 18–19 секунд;
  • реальная скорость зависит от текста, длины контекста, температуры, speculative decoding и параллельной нагрузки.

При четырёх одновременных сессиях HALOGEN делит вычислительный ресурс между потоками. Ориентир из документации:

  • примерно 76 токенов/с суммарно;
  • примерно 11–19 токенов/с на один параллельный поток.

Четыре слота полезны для API-сервера с несколькими клиентами, но не ускоряют единичный запрос.

Подготовка Fedora 43 Server

Установим Podman и базовые утилиты:

sudo dnf upgrade --refresh -y
sudo dnf install -y podman curl pciutils
sudo reboot

После перезагрузки проверим драйвер и GPU-устройства:

lspci -nnk | grep -A 4 -Ei 'VGA|Display|3D'

ls -l /dev/kfd /dev/dri/renderD*

free -h

Для работы с GPU пользователю обычно нужны группы render и video:

sudo usermod -aG render,video "$USER"

После этого необходимо полностью завершить SSH-сеанс и подключиться снова.

Создание API-ключа

HALOGEN может защищать API через переменную HALOGEN_API_KEY. Клиент передаёт её через стандартный заголовок:

Authorization: Bearer ВАШ_КЛЮЧ

Создадим файл окружения с правами доступа только для текущего пользователя:

mkdir -p "$HOME/.config/halogen" "$HOME/halogen-models"
chmod 700 "$HOME/.config/halogen"

(
  umask 077

  if [ ! -f "$HOME/.config/halogen/server.env" ]; then
    printf 'HALOGEN_API_KEY=%s\n' \
      "$(head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n')" \
      > "$HOME/.config/halogen/server.env"
  fi
)

chmod 600 "$HOME/.config/halogen/server.env"

Просмотреть ключ можно так:

cat "$HOME/.config/halogen/server.env"

Не добавляйте этот файл в Git, не передавайте его в мессенджерах и не храните в публичных конфигурациях.

Запуск HALOGEN с четырьмя параллельными сессиями

HALOGEN слушает порт 8731 внутри контейнера. Если внешний API должен быть доступен через порт 9091, порт-маппинг должен быть таким:

9091 на хосте → 8731 в контейнере

Команда запуска:

podman run -d \
  --name halogen \
  -p 0.0.0.0:9091:8731 \
  --device /dev/kfd \
  --device /dev/dri \
  --group-add keep-groups \
  --security-opt label=disable \
  --ipc=host \
  --ulimit memlock=-1:-1 \
  --env-file "$HOME/.config/halogen/server.env" \
  -e HALOGEN_KV_SLOTS=4 \
  -e HALOGEN_DOWNLOAD=peonist-ai/halogen-qwen3.8-flash-next \
  -v "$HOME/halogen-models:/models" \
  ghcr.io/peonist-ai/halogen-flash-server:0.18.5

Что означают ключевые параметры

ПараметрНазначение
-p 0.0.0.0:9678:8731Публикует API в интернете на порту 9678
--device /dev/kfdДоступ к AMD Compute Runtime
--device /dev/driДоступ к DRM/GPU
--group-add keep-groupsПередаёт контейнеру права групп пользователя
--security-opt label=disableОбход ограничений SELinux-разметки для GPU-доступа
--ipc=hostОбщий IPC namespace, как рекомендовано quickstart-конфигурацией
--ulimit memlock=-1:-1Снимает лимит блокируемой памяти
HALOGEN_KV_SLOTS=4До четырёх одновременно генерирующих диалогов
HALOGEN_DOWNLOAD=...Автоматическая загрузка весов при первом старте
--env-fileПодключает API-ключ без помещения его в командную строку

Посмотреть ход загрузки и инициализации модели:

podman logs -f halogen

И завершающая, на мой взгляд обязательная настройка — разрешить пользователю работать в фоне. Без этого, при закрытии ssh-консоли сервер будет выключаться.

sudo loginctl enable-linger "$USER"

Почему nvtop показывает около 27 ГБ видеопамяти

На Strix Halo показания nvtop часто вызывают вопросы: модель занимает около 110 ГиБ на SSD, основной checkpoint требует примерно 62 ГиБ резидентной памяти, но nvtop может показывать лишь около 27 ГБ GPU memory.

Это нормально.

Strix Halo не имеет отдельной физической VRAM. Его iGPU использует RAM хоста, а HALOGEN не обязан отображать весь объём модели как классическую GPU VRAM.

Память распределяется примерно так:

  1. Основные веса занимают около 62 ГиБ в резидентной памяти.
  2. N-gram table размером 47,7 ГиБ подключается через mmap.
  3. Linux загружает страницы N-gram table по мере необходимости и использует page cache.
  4. В nvtop обычно хорошо видны:
    • буферы GPU;
    • рабочие области вычислений;
    • KV-cache;
    • часть GPU memory mapping.
  5. При HALOGEN_KV_SLOTS=4 заметную часть отображаемых примерно 27 ГБ может занимать именно общий KV-pool и сопутствующее состояние слотов.

Поэтому показатель в nvtop не означает, что модель загрузилась «только на 27 ГБ» или работает не полностью.

Не публикуйте HTTP API в интернете без TLS

API-ключ защищает сервер от неавторизованных запросов, но не шифрует соединение. При прямом HTTP-доступе токен и содержимое запросов могут быть перехвачены в сети.

Корректная production-схема:

Интернет
    ↓ HTTPS :9091
Caddy / Nginx / Traefik
    ↓ HTTP 127.0.0.1:8731
HALOGEN

Итог

Связка из AMD Strix Halo, 128 ГБ RAM, Fedora 43 Server и HALOGEN позволяет развернуть быстрый локальный API для Qwen3.8-Flash-Next без дискретной GPU.

Практическая конфигурация даёт:

  • модель MoE на 125B параметров с 6B активных на токен;
  • около 110 ГиБ весов на диске;
  • около 50+ токенов/с для одного интерактивного потока;
  • до четырёх параллельных генераций через HALOGEN_KV_SLOTS=4;
  • OpenAI-совместимые /v1/chat/completions, /v1/completions и /v1/responses;
  • доступ извне через порт 9678;
  • API-авторизацию через HALOGEN_API_KEY.

Ключевое отличие этой конфигурации от обычного LLM-сервера — правильная работа с UMA-памятью: низкое значение UMA carve-out в BIOS, понимание роли memory-mapped N-gram table и отказ от попыток интерпретировать показания nvtop как полный объём памяти, занятой моделью.