Оптимальные параметры 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 |
| mmproj | mmproj-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-size | 2048 | Оптимально для обработки промпта при пропускной способности 215 ГБ/с |
--ubatch-size | 512 | Физический размер микро-батча. Снижает пиковое потребление VRAM/RAM при prefill |
--temp | 0.7 | Стандартный баланс креативности. Выше 1.0 может давать галлюцинации у Q4 квантования |
--top-p | 0.8 | Отсекает токены с низкой кумулятивной вероятностью, улучшает стабильность |
--top-k | 20 | Ограничивает выборку фиксированным числом токенов |
--min-p | 0.0 | Отключён – не нужен при корректных top-p/top-k |
--prio 2 --cpu-strict 1 | – | Выставляет повышенный приоритет процессу в ОС для предотвращения фризов, строгое распределение потоков |
--no-mmap | – | Избегает проблем с маппингом на больших файлах |
-ctk q8_0 -ctv q8_0 | q8_0 | Сжимает KV-кэш для экономии памяти на больших контекстах ценой небольшого падения точности и скорости |
--cache-reuse | 256 | Полезно только в многопользовательских чат-ботах (серверах) для сохранения контекста системы (system prompt) |
-np 1 | 1 | Количество параллельных слотов для одновременных запросов. Для одного пользователя 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-mtp | draft-mtp | Использует встроенные MTP-головы модели как drafter (черновик) |
--spec-draft-n-max | 3 | До 3 токенов на speculation, больше – падает коэффициент принятия токенов |
--spec-draft-p-min | 0.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 + MTP | 99.3% | 93.8% | 65% | 21 → 16 т/с | 93–95% |
| Q6_K + MTP | 100% | 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+).
Ссылки
- Статья о локальных моделях AI – обзор железа и конфигураций
- llama-bench
- Qwen3.6-27B UD-Q4_K_XL (стандартная, без MTP)
- Qwen3.6-27B-MTP UD-Q4_K_XL (с MTP)
- mmproj-BF16.gguf
- chat_template.jinja v21.3
- Reddit: Qwen 3.6 27b on Strix Halo