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

DeepSeek V4 Flash на AMD Ryzen AI MAX+ 395: как достичь 32 tok/s локального инференса

Команда Lucebox запустила DeepSeek V4 Flash (284B) на одном APU AMD Ryzen AI MAX+ 395 со скоростью 32 tok/s — вдвое быстрее предыдущего рекорда. Разбираем смеша

Коротко

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

  1. 01

    Рекорд локального инференса: 32 tok/s на одном APU

  2. 02

    Почему это важно: контекст и сравнение с аналогами

  3. 03

    Аппаратная основа: AMD Ryzen AI MAX+ 395 и 128 ГБ унифицированной памяти

  4. 04

    Смешанная квантизация ROCmFPX: 2.88 бита на параметр без потери качества

Рекорд локального инференса: 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+.

Пошаговая инструкция: от установки до первого токена

  1. Подготовка окружения. Установите ROCm 6.2 по официальной инструкции AMD для Strix Halo. Проверьте доступность iGPU: rocm-smi должен показать gfx1151. Установите PyTorch с поддержкой ROCm: pip install torch --index-url https://download.pytorch.org/whl/rocm6.2.
  2. Клонирование репозитория Lucebox. git clone https://github.com/lucebox/deepseek-v4-flash-rocmfpx. Установите зависимости: pip install -r requirements.txt. Пакет включает кастомные CUDA-ядра для ROCmFPX-квантования и DSpark-декодирования.
  3. Загрузка и квантизация модели. Скачайте оригинальный чекпоинт 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 ГБ.
  4. Настройка DSpark. Скачайте драфт-модель: huggingface-cli download deepseek-ai/DeepSeek-V4-Lite-Draft. Конфигурационный файл dspark_config.yaml уже в репозитории: K=4, температура драфта 0.0 (детерминированные гипотезы), acceptance threshold 0.9.
  5. Запуск инференса. python infer.py --model ./DeepSeek-V4-Flash-ROCMFPX --draft ./DeepSeek-V4-Lite-Draft --dspark --max-tokens 512. Первый токен появляется через 3-5 секунд (загрузка кэша), затем стабильные 30-34 tok/s.
  6. Валидация скорости. Скрипт 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.

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