Оптимальные параметры llama.cpp + qwen3.6 на Strix Halo

опубликовано:

Оптимальная конфигурация для запуска Qwen3.6-27B UD-Q4_K_XL на MiniPC Strix Halo с AMD Ryzen AI Max+ 395 (128 GiB LPDDR5x, бэкенд Vulkan или HIP).

Требования

КомпонентОписание
ЖелезоFEVM FA-EX1 – Ryzen AI Max+ 395, Radeon 8060S (gfx1151), 128 GiB LPDDR5x-8500 (~215 ГБ/с, ~112 GiB GTT на Linux)
llama.cppРелиз b10064
МодельQwen3.6-27B UD-Q4_K_XL.gguf (~17.5 GiB)
Модель (MTP)Qwen3.6-27B-MTP UD-Q4_K_XL – необходима для MTP
mmprojmmproj-BF16.gguf (мультимодальность, опционально)
Шаблон чатаchat_template.jinja v21.3

Базовый запуск (Vulkan)

Bash
#!/usr/bin/env bash

LLAMA_SERVER=/mnt/local/nix/servers/agents/llama/main/llama-server
MODEL=/path/to/Qwen3.6-27B-UD-Q4_K_XL.gguf
TEMPLATE=/path/to/chat_template.jinja

$LLAMA_SERVER \
    --host 0.0.0.0 \
    --port 1234 \
    -c 0 \
    --batch-size 2048 \
    --ubatch-size 512 \
    --temp 0.7 \
    --top-p 0.8 \
    --top-k 20 \
    --min-p 0.05 \
    --prio 2 \
    --cpu-strict 1 \
    --no-warmup \
    --no-mmap \
    --jinja \
    --chat-template-file ${TEMPLATE} \
    -ctk q8_0 \
    -ctv q8_0 \
    --cache-reuse 256 \
    --cache-ram 32768 \
    -np 1 \
    --metrics \
    --alias "qwen3.6-27b-q4_k_xl" \
    -m ${MODEL}

Параметры и обоснование

ПараметрЗначениеПочему
-c (context)0Контекст по умолчанию - 262144, но лучше ограничить до 131072
--batch-size2048Оптимально для обработки промпта при пропускной способности 215 ГБ/с
--ubatch-size512Физический размер микро-батча. Снижает пиковое потребление VRAM/RAM при prefill
--temp0.7Стандартный баланс креативности. Выше 1.0 может давать галлюцинации у Q4 квантования
--top-p0.8Отсекает токены с низкой кумулятивной вероятностью, улучшает стабильность
--top-k20Ограничивает выборку фиксированным числом токенов
--min-p0.0Отключён – не нужен при корректных top-p/top-k
--prio 2 --cpu-strict 1–Выставляет повышенный приоритет процессу в ОС для предотвращения фризов, строгое распределение потоков
--no-mmap–Избегает проблем с маппингом на больших файлах
-ctk q8_0 -ctv q8_0q8_0Сжимает KV-кэш для экономии памяти на больших контекстах ценой небольшого падения точности и скорости
--cache-reuse256Полезно только в многопользовательских чат-ботах (серверах) для сохранения контекста системы (system prompt)
-np 11Количество параллельных слотов для одновременных запросов. Для одного пользователя 1 – оптимально

Мультимодальность (mmproj)

Для работы с изображениями добавьте флаг --mmproj:

Bash
MODEL_MM=/path/to/mmproj-BF16.gguf

# ... в команду запуска добавить:
    --mmproj ${MODEL_MM} \

Продвинутый запуск (HIP + MTP speculative decoding)

MTP (Multi-Token Prediction) использует встроенные головы модели для предсказания нескольких токенов одновременно – без загрузки отдельной draft-модели. На Strix Halo это даёт ~21 т/с против ~12 т/с без MTP при коэффициенте принятия токенов 93–95%.

Bash
#!/usr/bin/env bash

LLAMA_SERVER=/mnt/local/nix/servers/agents/llama/main/llama-server
MODEL=/path/to/Qwen3.6-27B-MTP-UD-Q4_K_XL.gguf
TEMPLATE=/path/to/chat_template.jinja
MODEL_MM=/path/to/mmproj-BF16.gguf

export ROCBLAS_USE_HIPBLASLT=1

$LLAMA_SERVER \
    --host 0.0.0.0 \
    --port 1234 \
    -c 0 \
    --batch-size 2048 \
    --ubatch-size 512 \
    --temp 0.7 \
    --top-p 0.8 \
    --top-k 20 \
    --min-p 0.0 \
    --prio 2 \
    --cpu-strict 1 \
    --no-warmup \
    --no-mmap \
    --jinja \
    --chat-template-file ${TEMPLATE} \
    -ctk q8_0 \
    -ctv q8_0 \
    --cache-reuse 256 \
    --cache-ram 32768 \
    -np 1 \
    --metrics \
    --alias "qwen3.6-27b-mtp-q4_k_xl-agent" \
    --spec-type draft-mtp \
    --spec-draft-n-max 3 \
    --spec-draft-p-min 0.75 \
    --mmproj ${MODEL_MM} \
    -m ${MODEL}

Параметры MTP

ПараметрЗначениеПочему
--spec-type draft-mtpdraft-mtpИспользует встроенные MTP-головы модели как drafter (черновик)
--spec-draft-n-max3До 3 токенов на speculation, больше – падает коэффициент принятия токенов
--spec-draft-p-min0.75Минимальная вероятность принятия draft-токена (токена черновика)

Сборка llama.cpp для HIP

Bash
cmake -DGGML_HIP=ON \
  -DGPU_TARGETS=gfx1151 \
  -DGGML_HIP_ROCWMMA_FATTN=ON \
  -DGGML_HIP_NO_VMM=ON \
  ..

Производительность

Бенчмарки (agentic coding)

КонфигВызовы
инструментов
Сложные задачиPolyglotДекодированиеКоэффициент
принятия
токенов
Q4_K_XL + MTP99.3%93.8%65%21 → 16 т/с93–95%
Q6_K + MTP100%68.8%65%21 → 16 т/с92–94%
Q4 без spec decode–––~12 т/с–

Ожидаемая производительность (Vulkan, без MTP)

МетрикаЗначение
Обработка промпта (pp512)~250–350 т/с
Генерация (tg128)~10–12 т/с
Теоретический максимум215 / 17.5 ≈ 12.3 т/с

Модель UD-Q4_K_XL весит ~17.5 GiB. При безлимитном контексте KV-кэш растёт по мере необходимости; с -ctk q8_0 -ctv q8_0 кэш занимает меньше места.

Температура и TDP

При запуске в режиме HIP + MTP MPC потребляет до 130W, температура CPU/GPU держится в диапазоне 85–92°C. Это нормальный рабочий режим для Strix Halo, но:

  • Убедитесь в адекватном охлаждении и воздушном потоке
  • Мониторьте температуру через sensors или rocm-smi

Для других задач

Кодогенерация (повышенная точность)

Bash
--temp 0.3 --top-p 0.5 --top-k 5 \
--repeat-penalty 1.1

Креативный текст

Bash
--temp 1.0 --top-p 0.95 --top-k 40 \
--repeat-penalty 1.15

Известные проблемы

  • -ctk / -ctv по умолчанию – при значениях по умолчанию скорость prefill падает до ~70 т/с на контексте 80K. Явно указывайте -ctk q8_0 -ctv q8_0.
  • Шаблон чата обязателен – используйте chat_template.jinja v21.3, стандартный шаблон может вызывать прерывание циклов и зависание вызовов инструментов (tool calls).
  • Flash attention может не работать с некоторыми GGUF моделями. Отключите --flash-attn off, если видите артефакты в выводе.
  • Vulkan backend на Linux требует свежих драйверов AMD (amdgpu + Mesa 24.1+).

Ссылки

Llama.cpp Qwen3.6 Strix-Halo Vulkan Hip Inference Amd