sudo, 64 ГБ унифицированной памяти и больше, ~100 ГБ свободного места на диске, git, cmake, gcc-c++, llama.cpp (сборка с HIP-бэкендом), GGUF-веса модели семейства Qwen, стек HALOGEN из документации проекта.
sudo, членство в группах video и render (без этого ядро не даст доступ к /dev/kfd).git, cmake, gcc-c++, make, python3-devel, rocminfo.Q4_K_M — компромисс между качеством и объёмом). Точное имя файла и репозитория сверьте с карточкой модели на Hugging Face.Чек-лист готовности:
sudo работает без пароля-сюрпризовvideo и render/models)Если Strix Halo под рукой нет, а запустить модель хочется на обычном железе — начните с материала Как запустить ИИ-модель локально на своём компьютере: гайд для начинающих.
Что сделать: убедиться, что система видит APU, что памяти достаточно и что установлены сборочные зависимости.
Зачем: 90% провалов на Strix Halo — не «плохая модель», а незамеченное отсутствие прав на GPU-устройства или нехватка места под веса и кэш сборки.
Как проверить: выполните блок и сравните вывод с ожидаемым.
cat /etc/fedora-release
lscpu | grep -i "model name"
free -h
df -h /home
lspci -nn | grep -Ei "vga|display"
Ожидаемый результат: строка Fedora release 43, название процессора семейства Ryzen AI Max, несколько десятков гигабайт в столбце Mem, и в lspci — устройство AMD с упоминанием Radeon 8060S. У части прошивок iGPU определяется как AMD Device xxxx — это нормально, важен сам факт наличия AMD-дисплейного контроллера.
Пример: при 128 ГБ RAM строка free -h покажет примерно Mem: 125Gi, и это тот пул, из которого дальше будет выдана память под веса модели.
Установите зависимости и добавьте себя в группы доступа к GPU:
sudo dnf install -y git cmake gcc-c++ make python3-devel rocminfo
sudo usermod -aG video,render "$USER"
После usermod обязателен полный выход из сессии и повторный вход — иначе новая группа не применится к текущему процессу.
id -nG
ls -l /dev/kfd /dev/dri/renderD*
Ожидаемый результат: в выводе id -nG есть video и render, а ls показывает устройства /dev/kfd и /dev/dri/renderD128. Почему это работает: amdgpu создаёт эти узлы при загрузке, а группы video/render дают права на запись в них — без прав HIP-бэкенд не инициализируется.

Что сделать: развернуть сборотное окружение HALOGEN, собрать llama.cpp с HIP-бэкендом, скачать веса Qwen и поднять OpenAI-совместимый сервер на порту 8080.
Зачем: HALOGEN даёт согласованный набор драйверов и библиотек под gfx-архитектуру Strix Halo, а llama-server превращает локальную модель в HTTP-API, к которому подключаются любые клиенты, понимающие формат OpenAI.
Как проверить: по шагам ниже — сначала сборка, потом загрузка слоёв на GPU в логе.
Шаг 2.1. Разверните HALOGEN по инструкции проекта (URL репозитория и точные команды установки берите из документации HALOGEN — здесь они не приводятся, чтобы не давать устаревших путей). После установки проверьте, что ROCm видит GPU:
rocminfo | grep -m1 -A2 "Agent 2"
Ожидаемый результат: блок с Name: gfx1151 (или иной gfx-идентификатор вашего APU) и типом GPU. Если вывод пуст или содержит ошибку — см. раздел «Возможные проблемы».
Шаг 2.2. Соберите llama.cpp с HIP:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_HIP=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j"$(nproc)" --target llama-server
Ожидаемый результат: в конце сборки появляется build/bin/llama-server. Почему это работает: флаг GGML_HIP=ON включает HIP-бэкенд, и вычисления уходят на iGPU вместо CPU.
Шаг 2.3. Скачайте веса в каталог /models (имя репозитория и файла подставьте свои):
sudo mkdir -p /models && sudo chown "$USER":"$USER" /models
huggingface-cli download <репозиторий-Qwen-GGUF> \
--include "*Q4_K_M*.gguf" \
--local-dir /models
ls -lh /models
Пример: в /models появляется один файл вида qwen-...-Q4_K_M.gguf размером в десятки гигабайт — именно его путь вы подставите в следующую команду.
Шаг 2.4. Запустите сервер:
./build/bin/llama-server \
--model /models/<имя-файла-Qwen>.gguf \
--host 127.0.0.1 \
--port 8080 \
--ctx-size 8192 \
--n-gpu-layers 999
Разбор флагов: --ctx-size — размер контекстного окна в токенах (чем больше, тем больше памяти под KV-кэш); --n-gpu-layers 999 — «выгрузить на GPU столько слоёв, сколько есть»; --host 127.0.0.1 — слушать только локально.
Ожидаемый результат в логе: строка вида llama server listening at http://127.0.0.1:8080 и строка load_tensors: offloading ... repeating layers to GPU. Если в логе offloading 0 repeating layers to GPU — модель считается на CPU, и это первый признак, что HIP-бэкенд не подхватился.

Что сделать: проверить health-эндпоинт, отправить реальный запрос к модели и убедиться, что генерация идёт на iGPU.
Зачем: успешный старт процесса не гарантирует, что модель отвечает; проверка идёт от «сервер жив» к «модель отвечает» к «считает GPU».
Как проверить: три команды подряд.
curl -s http://127.0.0.1:8080/health
Ожидаемый вывод: {"status":"ok"}.
curl -s http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "local",
"messages": [{"role": "user", "content": "Объясни в одном предложении, что такое унифицированная память."}]
}'
Ожидаемый результат: JSON с непустым полем choices[0].message.content. Поле model в запросе может игнорироваться сервером — важно, что ответ пришёл в формате OpenAI, значит к нему можно подключить любой совместимый клиент.
cat /sys/class/drm/card*/device/gpu_busy_percent
Во время генерации значение должно быть заметно больше нуля. Это и есть финальный признак успеха: модель отвечает, а нагрузка лежит на iGPU, а не на CPU.
Пример: запрос про унифицированную память возвращает одну фразу, а gpu_busy_percent в момент генерации показывает двузначное число и падает до нуля после ответа.
Проблема. Сервер падает при старте, модель не грузится на GPU
error: unable to open /dev/kfd (или Permission denied при обращении к /dev/kfd)video и render, либо не перелогинился после usermod.id -nG; если групп нет — выполните sudo usermod -aG video,render "$USER", полностью выйдите из сессии и войдите снова, затем перезапустите сервер и проверьте ls -l /dev/kfd.Проблема. Процесс убит при загрузке весов или контекст не создаётся
Killed в терминале или сообщение вида failed to allocate buffer for kv cache--ctx-size (например, с 8192 до 4096), возьмите более компактное квантование (Q4_K_M вместо Q6_K/Q8_0) и при необходимости увеличьте лимит памяти под iGPU в BIOS/UEFI — конкретное название пункта зависит от прошивки, сверьтесь с документацией производителя устройства.Проблема. Клиент не подключается к серверу
curl: (7) Failed to connect to 127.0.0.1 port 8080127.0.0.1.ss -ltnp | grep 8080; если порт не занят — смотрите лог llama-server. Для доступа по сети перезапустите с --host 0.0.0.0 и откройте порт: sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload.Вы получили локальный OpenAI-совместимый сервер с Qwen на Strix Halo и убедились, что генерация идёт на iGPU. Дальше имеет смысл сравнить несколько моделей между собой по удобству и скорости — например, по материалу Как запустить новую открытую модель Meta локально и сравнить её с DeepSeek и Qwen, а список доступных открытых весов посмотреть в подборке Какие ИИ-модели имеют открытые веса и как их запустить бесплатно.
Нужна ли дискретная видеокарта для запуска LLM на Strix Halo?
Нет. Strix Halo — APU с унифицированной памятью: CPU и встроенная графика используют один пул RAM, поэтому отдельная видеокарта с собственной VRAM не требуется.
Почему модель не помещается в память, если RAM много?
Часть общей памяти резервируется под iGPU настройкой прошивки, а остальное делят между собой веса модели, KV-кэш контекста и система. Уменьшите --ctx-size или возьмите более компактное квантование.
Что означает offloading 0 repeating layers to GPU в логе?
Это признак того, что модель считает на CPU: HIP-бэкенд не собрался или не видит GPU. Проверьте вывод rocminfo и то, что llama-server собран с -DGGML_HIP=ON.
Можно ли обращаться к серверу с другого устройства в сети?
Да, если запустить сервер с --host 0.0.0.0 и открыть порт 8080 в firewalld. По умолчанию сервер слушает только 127.0.0.1, и с другой машины он недоступен.