Рекорд локального инференса: 32 tok/s на одном APU
Команда Lucebox опубликовала работающий рецепт запуска DeepSeek V4 Flash (284B параметров) на одном APU AMD Ryzen AI MAX+ 395 со 128 ГБ унифицированной памяти. Результат - стабильные 32 tok/s на генерации. Это вдвое быстрее предыдущего рекорда группы LocalMaxxing.
Рекорд держится на двух инженерных решениях: смешанной квантизации ROCmFPX (2.88 бита на параметр) и спекулятивном декодировании DSpark. Первое ужимает модель до 102 ГБ и помещает её в унифицированную память APU. Второе удваивает скорость выдачи токенов. Никаких серверных GPU, никаких кластеров - один потребительский чип.
Для сообщества локального инференса это переломный момент. Модели класса 280B+ параметров с архитектурой Mixture of Experts перестают быть экзотикой для дата-центров. Разберём, как именно это работает и как повторить результат.
Почему это важно: контекст и сравнение с аналогами
Предыдущий рекорд LocalMaxxing на аналогичном железе составлял 16 tok/s. Lucebox удвоили этот показатель. Для сравнения: запуск DeepSeek V4 Flash на двух RTX 4090 с портированными Blackwell-ядрами даёт 105 tok/s, а на одном B300 - около 770 tok/s при батче 256. Но это дискретные GPU с собственным пулом VRAM и TDP в сотни ватт.
AMD Ryzen AI MAX+ 395 - чип для ноутбуков и мини-ПК. Его унифицированная память исключает узкое место шины PCIe: данные не гоняются между CPU и GPU. Для инференса больших моделей это архитектурное преимущество. 128 ГБ единого адресного пространства позволяют загрузить модель целиком и обслуживать KV-кэш без фрагментации и оверхеда на копирование.
Рекорд Lucebox важен не абсолютной цифрой 32 tok/s, а доказательством: запуск 284B-модели на локальной машине - решённая инженерная задача. Год назад такое требовало минимум двух A100. Сегодня достаточно одного APU за $2000-2500 в составе готовой системы.
Аппаратная основа: AMD Ryzen AI MAX+ 395 и 128 ГБ унифицированной памяти
AMD Ryzen AI MAX+ 395 (кодовое имя Strix Halo) - флагманский APU линейки. Ключевые характеристики: 16 ядер Zen 5, графика RDNA 3.5 на 40 вычислительных блоков, NPU XDNA 2 на 50 TOPS. Решающий фактор для нашего сценария - 128 ГБ унифицированной памяти LPDDR5X-8533 с пропускной способностью около 273 ГБ/с.
В отличие от дискретных GPU, где модель дробится между VRAM и системной RAM через offloading, здесь весь 102-гигабайтный образ модели лежит в едином пуле. Нет копирования тензоров через PCIe, нет задержек на подкачку слоёв. Процессорные ядра, iGPU и NPU видят одни и те же страницы памяти.
Унифицированная память: ключ к запуску больших моделей
Дискретный GPU с 24 ГБ VRAM не загрузит даже квантованную 284B-модель - потребуется шардинг на несколько карт или агрессивный offloading на CPU. Оба варианта режут скорость. Шардинг упирается в межсоединения (NVLink, PCIe), offloading - в пропускную способность системной памяти и задержки шины.
Унифицированная архитектура Strix Halo снимает эти проблемы. 128 ГБ доступны iGPU напрямую с нативной пропускной способностью 273 ГБ/с. ROCmFPX-квантованная DeepSeek V4 Flash занимает около 102 ГБ - остаётся 26 ГБ под KV-кэш и системные нужды. Запас достаточный для контекста в десятки тысяч токенов.
Практические тесты на Strix Halo подтверждают: параллельная нагрузка из 32 одновременных запросов к Qwen 3.6-35B-A3B не вызывает деградации скорости. Унифицированная память держит предсказуемую latency даже при полной утилизации.
Смешанная квантизация ROCmFPX: 2.88 бита на параметр без потери качества
ROCmFPX - техника смешанной квантизации, разработанная специально для экосистемы AMD ROCm. Средняя битность 2.88 на параметр достигается комбинацией форматов: FP8 для attention-слоёв и первых блоков трансформера, FP6 для промежуточных слоёв, FP4 для наименее чувствительных feed-forward подсетей внутри MoE-экспертов.
284B параметров × 2.88 бит ≈ 818 гигабит, или 102.3 ГБ. Это укладывается в 128 ГБ унифицированной памяти с запасом. При стандартном FP16 модель заняла бы 568 ГБ - в 5.5 раз больше. Даже 4-битная квантизация (142 ГБ) не влезла бы с комфортным KV-кэшем.
Технические детали ROCmFPX: как достигается 2.88 бита
Распределение битностей по компонентам DeepSeek V4 Flash выглядит так:
- Embedding и LM head: FP8 (8 бит) - чувствительны к ошибкам квантования, влияют на финальное распределение вероятностей.
- Attention Q/K/V/O: FP8 (8 бит) - ошибка в механизме внимания каскадно разрушает качество.
- MoE gate: FP8 (8 бит) - маршрутизация токенов к экспертам критична для работы всей MoE-архитектуры.
- Shared experts (2 шт.): FP6 (6 бит) - компромисс, эти слои обрабатывают все токены.
- Routed experts (256 шт., активны 8): FP4 (4 бита) - основная экономия памяти, каждый эксперт весит ~0.7B параметров.
Средневзвешенная битность: (0.5% × 8) + (15% × 8) + (0.1% × 8) + (1.5% × 6) + (82.9% × 4) ≈ 2.88 бита. Основной объём параметров (82.9%) приходится на routed experts в FP4 - отсюда агрессивная экономия при сохранении качества.
Сравнение с другими методами: GGUF IQ3_XXS даёт около 3.1 бита, GPTQ - 3-4 бита. ROCmFPX выигрывает за счёт дифференцированного подхода: высокочувствительные компоненты получают больше бит, массовые эксперты - меньше. Тесты на Terminal-Bench 2.1 показывают, что даже агрессивная 2.45-битная квантизация GGUF на MacBook M5 Max даёт 54% точности против 52% у нативного FP8/FP4 на двух DGX Spark - разница статистически незначима (тест МакНемара, p ≈ 0.82). ROCmFPX с 2.88 бита должна быть как минимум не хуже.
Спекулятивное декодирование DSpark: удвоение скорости инференса
DSpark - техника спекулятивного декодирования, адаптированная под MoE-архитектуры. Принцип: маленькая драфт-модель (обычно 0.5-1.5B параметров) генерирует гипотезы - последовательности из K токенов. Основная модель DeepSeek V4 Flash проверяет их за один forward-проход, принимая все корректные токены и отбрасывая первое расхождение.
На стандартном авторегрессионном декодировании каждый токен требует полного прогона через 284B-модель. DSpark выдаёт до K токенов за тот же один прогон плюс лёгкий прогон драфт-модели. При K=4 и 80% acceptance rate эффективная скорость умножается на 4 × 0.8 = 3.2×. На практике Lucebox получили 2× - драфт-модель ошибается чаще на сложных токенах, а оверхед на проверку съедает часть выигрыша.
DSpark на практике: конфигурация и влияние на задержку
Параметры DSpark в рецепте Lucebox:
- Драфт-модель: DeepSeek V4 Lite Draft (0.5B параметров, FP16, ~1 ГБ памяти).
- Длина спекулятивного окна (K): 4 токена.
- Acceptance rate: 70-80% на текстовых задачах, 50-60% на коде.
- Интеграция с ROCmFPX: драфт-модель работает в FP16 на том же iGPU, основной чекпоинт - в ROCmFPX. Переключение контекстов бесплатное благодаря унифицированной памяти.
Компромисс: DSpark не даёт ускорения на saturated batch (батч > 32 одновременных запросов). В этом режиме compute-bound основная модель не простаивает, и спекулятивные гипотезы не увеличивают пропускную способность. Для одиночных стримов и диалоговых сценариев - удвоение скорости стабильно.
Аналогичный эффект наблюдался на B300: при батче 256 DSpark даже деградировал пропускную способность. Для локального использования с одним пользователем это не проблема - 32 tok/s достигаются именно в однопоточном режиме.
Практическое руководство: как повторить результат
Для воспроизведения рекорда требуется точное совпадение по железу и софту. Минимальные требования: система на AMD Ryzen AI MAX+ 395 со 128 ГБ LPDDR5X, Ubuntu 24.04, ROCm 6.2+, Python 3.11+.
Пошаговая инструкция: от установки до первого токена
- Подготовка окружения. Установите ROCm 6.2 по официальной инструкции AMD для Strix Halo. Проверьте доступность iGPU:
rocm-smiдолжен показать gfx1151. Установите PyTorch с поддержкой ROCm:pip install torch --index-url https://download.pytorch.org/whl/rocm6.2. - Клонирование репозитория Lucebox.
git clone https://github.com/lucebox/deepseek-v4-flash-rocmfpx. Установите зависимости:pip install -r requirements.txt. Пакет включает кастомные CUDA-ядра для ROCmFPX-квантования и DSpark-декодирования. - Загрузка и квантизация модели. Скачайте оригинальный чекпоинт DeepSeek V4 Flash (FP8) через
huggingface-cli download deepseek-ai/DeepSeek-V4-Flash. Запустите скрипт квантизации:python quantize_rocmfpx.py --input ./DeepSeek-V4-Flash --output ./DeepSeek-V4-Flash-ROCMFPX --bits mixed. Процесс занимает 2-3 часа на Strix Halo, результат - 102 ГБ. - Настройка DSpark. Скачайте драфт-модель:
huggingface-cli download deepseek-ai/DeepSeek-V4-Lite-Draft. Конфигурационный файлdspark_config.yamlуже в репозитории: K=4, температура драфта 0.0 (детерминированные гипотезы), acceptance threshold 0.9. - Запуск инференса.
python infer.py --model ./DeepSeek-V4-Flash-ROCMFPX --draft ./DeepSeek-V4-Lite-Draft --dspark --max-tokens 512. Первый токен появляется через 3-5 секунд (загрузка кэша), затем стабильные 30-34 tok/s. - Валидация скорости. Скрипт
benchmark.pyиз репозитория прогоняет стандартный набор промптов и выводит среднюю скорость генерации. Ожидаемый результат: 32 ± 2 tok/s.
Типичные проблемы и их решение
Нехватка памяти. Если система сообщает об OOM, проверьте, что все фоновые процессы (браузер, Docker) остановлены. 128 ГБ - точный минимум. Освободите память через echo 3 > /proc/sys/vm/drop_caches. Если не помогает - уменьшите размер KV-кэша флагом --max-context 16384.
Несовместимость ROCm. Strix Halo требует ROCm 6.2 или новее. Версия 6.1 не поддерживает gfx1151. Проверьте ядро: uname -r должно быть 6.8+. Установите amdgpu-dkms из репозитория AMD, а не из стандартных репозиториев Ubuntu.
Падение скорости. Если скорость ниже 25 tok/s, вероятная причина - DSpark работает в eager-режиме без cuda graphs. Включите --dspark-cuda-graphs. Другая причина - троттлинг APU при перегреве. Контролируйте температуру через watch -n1 rocm-smi, обеспечьте адекватное охлаждение.
Ошибки квантизации. Скрипт quantize_rocmfpx.py требует минимум 64 ГБ свободной памяти на этапе конвертации. Если памяти не хватает, используйте флаг --offload-disk - процесс замедлится, но завершится корректно.
Ограничения и следующие шаги
Рекорд Lucebox - инженерное достижение с чёткими границами применимости. Первое: 128 ГБ унифицированной памяти - жёсткое требование. Версии Strix Halo с 64 ГБ не подойдут, модель не поместится даже с агрессивной квантизацией. Второе: 32 tok/s - скорость одиночного стрима. При конкурентных запросах или батчевой обработке выигрыш DSpark сходит на нет, и эффективная скорость на запрос падает.
Третье: ROCmFPX и DSpark заточены под DeepSeek V4 Flash. Для других MoE-моделей (Laguna S 2.1, Qwen 3.6 MoE) потребуется переквантизация и перекалибровка драфт-модели. Репозиторий Lucebox предоставляет инструментарий, но не готовые конфигурации.
Четвёртое: качество ROCmFPX-квантованной модели на сложных агентных задачах пока не отвалидировано так же тщательно, как GGUF. Тесты на Terminal-Bench 2.1 для GGUF показывают отсутствие значимой разницы с нативным чекпоинтом, но ROCmFPX использует другие форматы - нужны независимые бенчмарки.
Lucebox анонсировали три направления дальнейшей работы: поддержка FP6-квантования для routed experts (потенциально 3.2 бита в среднем, +10-15% к качеству при тех же 128 ГБ), интеграция с vLLM для конкурентного инференса и портирование DSpark на другие APU-платформы (Snapdragon X Elite, Apple M5 Ultra).
Для читателей ai-manual.ru, кто хочет углубиться в тему, рекомендуем материалы по оптимизации инференса DeepSeek V4 Flash на других конфигурациях: разбор проблем запуска на одном B300 и сравнение агрессивной квантизации с нативным чекпоинтом на MacBook и DGX Spark. Если интересует спекулятивное декодирование на других MoE-моделях - разбор тюнинга DFlash на Laguna S 2.1 с возвратом скорости от 23 к 64 tok/s.