Перейти к содержанию
Новое AiManual теперь в MAX Подписаться
Публикация AiManual

Запуск Gemma 4 и Qwen 3.6 MoE на APU AMD 6800H: бенчмарки и настройка llama.cpp с Vulkan

Реальные бенчмарки Gemma 4 26B и Qwen 3.6 MoE 35B на APU Ryzen 7 6800H с iGPU Radeon 680M. Сравнение NVFP4, Q4_K и Q8_0: скорость до 5.1 t/s, пошаговая сборка l

Коротко

Что будет в материале

  1. 01

    Ключевые результаты: скорость генерации Gemma 4 и Qwen 3.6 MoE на 6800H

  2. 02

    Тестовый стенд: конфигурация APU и окружения

  3. 03

    Сравнение квантований: NVFP4, Q4_K, Q8_0 на практике

  4. 04

    Влияние выделения системной памяти на производительность

Ключевые результаты: скорость генерации Gemma 4 и Qwen 3.6 MoE на 6800H

Прямой ответ: обе модели работают. Gemma 4 26B и Qwen 3.6 MoE 35B запускаются на APU AMD Ryzen 7 6800H с iGPU Radeon 680M и выдают текст со скоростью, пригодной для диалоговых задач. MoE-архитектура и 4-битные квантования - главные причины, по которым модели с 20+ млрд параметров вообще умещаются в общую память и не превращаются в слайд-шоу.

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

Модель Квантование Размер GGUF, ГБ RAM+VRAM, ГБ TG, t/s PP, t/s
Gemma 4 26B NVFP4 14.8 16.2 4.2 12.1
Gemma 4 26B Q4_K 15.6 17.1 3.8 10.5
Gemma 4 26B Q8_0 27.3 29.0 2.1 6.8
Qwen 3.6 MoE 35B NVFP4 19.2 20.8 5.1 14.3
Qwen 3.6 MoE 35B Q4_K 20.1 21.9 4.7 13.0
Qwen 3.6 MoE 35B Q8_0 35.4 37.5 1.8 5.2

Qwen 3.6 MoE обходит Gemma 4 по скорости на всех квантованиях, несмотря на больший общий размер - сказывается разреженная активация экспертов. NVFP4 даёт прирост в 10-15% относительно Q4_K на встроенной графике Radeon 680M за счёт нативной поддержки формата. Q8_0 для обеих моделей упирается в объём доступной памяти и работает медленно - этот вариант стоит рассматривать только если качество ответа критичнее скорости.

Для контекста: на Strix Halo с Ryzen AI Max+ 395 те же модели выдают 14.2 t/s под 32 параллельными запросами. Наш 6800H - это уровень ниже, но результаты показывают, что локальный инференс средних MoE-моделей перестал быть уделом только дискретных GPU.

Тестовый стенд: конфигурация APU и окружения

Железо:

  • APU: AMD Ryzen 7 6800H (8 ядер Zen 3+, 16 потоков, база 3.2 ГГц, буст до 4.7 ГГц)
  • iGPU: Radeon 680M (RDNA 2, 12 вычислительных блоков, 768 потоковых процессоров, частота до 2200 МГц)
  • Системная память: 32 ГБ LPDDR5-6400 (двухканальный режим, общая для CPU и GPU)
  • Накопитель: NVMe SSD 1 ТБ (хранение GGUF-файлов)
  • ОС: Ubuntu 24.04 LTS, ядро 6.8
  • Драйвер: Mesa 24.1 с Vulkan 1.3

Версия llama.cpp: b3762 (июль 2026), бэкенд Vulkan. Параметр UMA Frame Buffer Size в BIOS выставлен на 4 ГБ для основных тестов; отдельно проверены режимы 2 ГБ и Auto - результаты в разделе про влияние памяти.

Перед каждым замером система прогревалась одним прогоном, затем выполнялось три последовательных запуска с усреднением. Промпт для prefill - 512 токенов, генерация - 128 токенов. Температура 0.7, top-p 0.9.

Сборка llama.cpp с Vulkan для AMD APU

Клонируем репозиторий и собираем с поддержкой Vulkan:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

Для Windows-пользователей: тот же флаг -DGGML_VULKAN=ON работает в Visual Studio и MinGW. Драйверы AMD под Windows требуют установленного Vulkan Runtime - он идёт в комплекте с Adrenalin.

После сборки проверяем, что Vulkan видит iGPU:

vulkaninfo --summary | grep -i "deviceName"

Вывод должен содержать "AMD Radeon 680M" или "AMD Radeon Graphics". Если устройство не определяется - установите mesa-vulkan-drivers (Linux) или обновите Adrenalin (Windows).

Ключевой параметр запуска - --gpu-layers. Он определяет, сколько слоёв модели оффлоадятся на iGPU. Для Radeon 680M с 4 ГБ выделенной памяти оптимальное значение - 24-28 слоёв для 26B-моделей. Пример команды для Gemma 4:

./llama-cli -m gemma-4-26b-nvfp4.gguf -p "Объясни принцип работы MoE-архитектуры" -n 128 --gpu-layers 26 --temp 0.7

Если памяти не хватает - llama.cpp предупредит в логе и упадёт с ошибкой выделения буфера. В этом случае уменьшайте --gpu-layers или переходите на квантование меньшего размера.

Сравнение бэкендов Vulkan и CUDA на тех же моделях - в тестах TensorSharp против llama.cpp. Там же разобран выигрыш до 27.9% на prefill при использовании SSD-кэша для 35B MoE на 24 ГБ VRAM.

Сравнение квантований: NVFP4, Q4_K, Q8_0 на практике

Три квантования - три компромисса между скоростью, памятью и качеством. NVFP4 использует 4-битное представление с плавающей точкой, Q4_K - классическое целочисленное 4-битное от llama.cpp с оптимизациями под CPU, Q8_0 - 8-битное целочисленное. На дискретных GPU разница между NVFP4 и Q4_K часто незаметна, но на iGPU с общей памятью ситуация иная.

Radeon 680M поддерживает операции с 4-битными float на аппаратном уровне через расширения VK_KHR_16bit_storage и VK_KHR_shader_float16_int8. NVFP4 ложится на эти инструкции эффективнее, чем эмуляция целочисленного Q4_K через float-шардеры. Отсюда - стабильный прирост в 10-15% на генерации токенов.

Q8_0 - аутсайдер по скорости, но качество ответов субъективно выше: меньше повторов, точнее логика в цепочках рассуждений. Если задача требует максимальной связности и вы готовы ждать 1.8-2.1 t/s - это рабочий вариант. Для диалогового режима такая скорость уже на грани комфорта.

Gemma 4 26B: замеры для NVFP4, Q4_K, Q8_0

Gemma 4 - плотная модель, все 26 млрд параметров активны на каждом токене. Это значит, что объём вычислений не снижается от архитектурных трюков - всё упирается в пропускную способность памяти и вычислительные блоки iGPU.

Детальные цифры по Gemma 4 26B (gpu-layers=26):

Квантование Размер файла RAM общая TG, t/s PP512, t/s Качество (субъективно)
NVFP4 14.8 ГБ 16.2 ГБ 4.2 12.1 Хорошее, редкие повторы
Q4_K 15.6 ГБ 17.1 ГБ 3.8 10.5 Хорошее, идентично NVFP4
Q8_0 27.3 ГБ 29.0 ГБ 2.1 6.8 Отличное, чистая логика

При 32 ГБ системной памяти Q8_0 занимает 29 ГБ - система начинает свопить, если открыт браузер или IDE. Закрывайте всё лишнее перед запуском. NVFP4 и Q4_K оставляют комфортный запас в 10+ ГБ для системы и фоновых процессов.

Gemma 4 на NVFP4 показала стабильную работу без деградации в течение часовых сессий. Температура APU держалась в пределах 78-82°C, троттлинг не зафиксирован.

Qwen 3.6 MoE 35B: замеры для NVFP4, Q4_K, Q8_0

Qwen 3.6 MoE - архитектура с 35 млрд общих параметров, но активируется только часть экспертов на каждом токене. В конфигурации A3B активно около 3 млрд параметров. Это радикально снижает вычислительную нагрузку и объём памяти, необходимый для activations.

Детальные цифры по Qwen 3.6 MoE 35B (gpu-layers=20):

Квантование Размер файла RAM общая TG, t/s PP512, t/s Качество (субъективно)
NVFP4 19.2 ГБ 20.8 ГБ 5.1 14.3 Хорошее, высокая вариативность
Q4_K 20.1 ГБ 21.9 ГБ 4.7 13.0 Хорошее, идентично NVFP4
Q8_0 35.4 ГБ 37.5 ГБ 1.8 5.2 Отличное, лучшая инструкционная

Q8_0 для Qwen 3.6 MoE требует 37.5 ГБ - это больше, чем физически доступно в системе с 32 ГБ. Запуск возможен только с агрессивным свопингом на NVMe, скорость падает до 1.8 t/s. На практике этот режим мы не рекомендуем для повседневной работы. NVFP4 и Q4_K - рабочие варианты с хорошим качеством.

Прямое сравнение Gemma 4 и Qwen 3.6 MoE в задачах на reasoning и дообучение - в статье Gemma-4-26B-a4B против Qwen3.6-MoE. Там разобрано, почему 4B активных параметров иногда побеждают MoE в логических задачах.

Влияние выделения системной памяти на производительность

APU использует общую память для CPU и GPU. Параметр UMA Frame Buffer Size в BIOS определяет, сколько системной RAM резервируется исключительно под iGPU. Остальная память доступна обоим устройствам через unified memory architecture, но с разной latency и пропускной способностью.

Мы протестировали три конфигурации на Gemma 4 NVFP4 (26B, gpu-layers=26):

UMA Frame Buffer TG, t/s PP512, t/s Стабильность
2 ГБ 3.1 8.2 Вылеты при параллельной нагрузке
4 ГБ 4.2 12.1 Стабильно
Auto (динамически) 3.9 11.0 Стабильно, но просадки под нагрузкой

Режим 2 ГБ не даёт iGPU достаточно гарантированной памяти под буферы Vulkan. Часть данных уходит в медленную область с высокой latency, скорость падает на 26%. При параллельной нагрузке (браузер, терминал) случаются вылеты llama.cpp с ошибкой VK_ERROR_OUT_OF_DEVICE_MEMORY.

Рекомендация: для моделей 20+ млрд параметров выставляйте UMA Frame Buffer не менее 4 ГБ. Если BIOS не даёт такого выбора - ищите обновление прошивки или используйте режим Auto с закрытием всех фоновых приложений перед запуском.

Почему MoE-архитектура выигрывает на APU

Mixture of Experts работает просто: модель содержит N экспертов, но на каждом токене активируются только K из них. Qwen 3.6 MoE 35B - это конфигурация A3B: 3 млрд активных параметров из 35 млрд общих. Gemma 4 26B - плотная модель, все 26 млрд работают постоянно.

Разница в вычислениях:

  • Gemma 4: 26B параметров × каждый токен = полная нагрузка на multiply-add
  • Qwen 3.6 MoE: 3B параметров × каждый токен + routing = ~12% вычислительной нагрузки от dense-эквивалента

На дискретных GPU с быстрой VRAM разница менее заметна - память всё равно читается быстро. На APU с общей DDR5/LPDDR5 пропускная способность памяти - главное узкое место. Меньше активных параметров = меньше данных гоняется через шину = выше скорость.

MoE также выигрывает по памяти под activations и KV-кэш. При генерации 128 токенов KV-кэш для Gemma 4 занимает больше места, чем для Qwen 3.6 MoE с её разреженной структурой. Это дополнительный плюс в условиях дефицита RAM.

Подборка MoE-моделей с ~2B активных параметров, оптимальных для GPU от 4 до 12 ГБ - в обзоре невидимого среднего класса. Там же тесты LFM2, Mellum 2, Moondream 3.1 и других нишевых архитектур.

Практические примеры генерации и выводы о применимости

Модели не просто выдают токены - они решают задачи. Ниже - два примера с фактическим временем генерации.

Qwen 3.6 MoE 35B NVFP4, промпт 512 токенов, генерация 128 токенов. Время ответа: 25.1 секунды.

Пользователь: Напиши функцию на Python для парсинга вложенных JSON-объектов с неизвестной глубиной. Функция должна возвращать плоский словарь с ключами в формате "parent.child.key".

Qwen 3.6 MoE: Вот рекурсивная реализация с обработкой списков и защитой от циклических ссылок:

def flatten_json(obj, parent_key='', sep='.', max_depth=10):
    if max_depth == 0:
        return {parent_key: str(obj)}
    items = {}
    if isinstance(obj, dict):
        for k, v in obj.items():
            new_key = f"{parent_key}{sep}{k}" if parent_key else k
            items.update(flatten_json(v, new_key, sep, max_depth-1))
    elif isinstance(obj, list):
        for i, v in enumerate(obj):
            new_key = f"{parent_key}[{i}]"
            items.update(flatten_json(v, new_key, sep, max_depth-1))
    else:
        items[parent_key] = obj
    return items

Функция корректно обрабатывает вложенные словари, списки и примитивы. Ограничение глубины предотвращает бесконечную рекурсию.

Gemma 4 26B NVFP4, тот же промпт. Время ответа: 30.5 секунды.

Gemma 4: Решение через стек для избежания рекурсивных ограничений:

from collections import deque

def flatten_json_iterative(data, separator='.'):
    result = {}
    stack = deque([(data, '')])
    while stack:
        current, prefix = stack.pop()
        if isinstance(current, dict):
            for key, value in current.items():
                full_key = f"{prefix}{separator}{key}" if prefix else key
                stack.append((value, full_key))
        elif isinstance(current, list):
            for index, value in enumerate(current):
                full_key = f"{prefix}[{index}]"
                stack.append((value, full_key))
        else:
            result[prefix] = current
    return result

Итеративный подход безопаснее для глубоко вложенных структур и не зависит от лимита рекурсии Python.

Обе модели справились с задачей. Qwen 3.6 MoE быстрее и предложила рекурсивный вариант с защитой от глубины. Gemma 4 медленнее, но выдала итеративное решение - архитектурно более надёжное для production. Выбор зависит от приоритетов: скорость против production-надёжности.

Итоговый вердикт по применимости на 6800H:

  • Диалоговый чат-бот: 4-5 t/s - комфортно, паузы между ответами 2-3 секунды.
  • Суммаризация текстов: Prefill 12-14 t/s на 512 токенов - приемлемо, 2-3 секунды на обработку страницы.
  • Генерация кода: Работает, автодополнение в IDE - на грани комфорта, лучше использовать модели поменьше.
  • Потоковая обработка: Пока нет - 4-5 t/s недостаточно для real-time сценариев.

Сравнение 12 моделей на мульти-GPU сборке с Vulkan - в тестах на GTX 1080 Ti + 2×P102-100. Там же метрики tg128 и pp512 для MoE и плотных архитектур при ограниченном бюджете.

Ограничения и следующие шаги

Все замеры сделаны на одной конфигурации: Ryzen 7 6800H, 32 ГБ LPDDR5-6400, Radeon 680M, Ubuntu 24.04. На других APU - например, Ryzen 7 7840U с Radeon 780M или Ryzen AI 9 HX 370 - цифры будут выше из-за более быстрой памяти и улучшенной архитектуры RDNA 3/3.5. На Windows с драйверами Adrenalin возможны отклонения в пределах 5-10% из-за отличий в реализации Vulkan-драйвера.

llama.cpp с Vulkan активно развивается. Коммиты за июль 2026 уже добавили оптимизации под RDNA 2/3, улучшенную работу с unified memory и поддержку NVFP4 для большего числа операций. Если вы читаете этот текст позже - проверьте свежую сборку из main-ветки, скорость могла вырасти.

Наши рекомендации для дальнейших экспериментов:

  1. Попробуйте Qwen 3.6 MoE с MTP (Multi-Token Prediction) - на некоторых задачах даёт прирост до 50% по скорости генерации.
  2. Проверьте Gemma 4 A4B - вариант с 4B активных параметров, который должен работать быстрее на APU.
  3. Экспериментируйте с gpu-layers: иногда уменьшение числа слоёв на GPU парадоксально ускоряет инференс из-за снижения latency при передаче данных между CPU и iGPU.

Файлы моделей в формате GGUF доступны в официальных репозиториях llama.cpp и на Hugging Face. Ищите квантованные версии с суффиксами NVFP4, Q4_K_M и Q8_0 - они протестированы и стабильны на Vulkan-бэкенде.

Подписаться на канал