128 гигабайтов памяти и одна большая проблема: что с ними делать
AMD Strix Halo с его 128 ГБ единой памяти — это не железо. Это провокация. В теории у вас в руках полноценная станция для инференса моделей, которая по объемам памяти конкурирует с серверными картами. В реальности вы сталкиваетесь с выбором: запустить одну огромную модель в полном формате или десять мелких, но агрессивно квантованных. И каждый выбор будет неправильным, пока не разберешься в деталях.
Статья основана на тестировании на Strix Halo с ROCm 7.2.1 и Vulkan-бэкендом llama.cpp 0.13.2 (февраль 2026). Если у вас более старые драйверы — обновитесь. Большинство проблем с производительностью решаются именно этим.
Архитектурный нюанс, который все ломает
Strix Halo — это APU, а не CPU + отдельный GPU. Память общая. Пропускная способность LPDDR5X-7500 — около 120 ГБ/с. Для сравнения: у RTX 5080 (память GDDR7) — свыше 1.5 ТБ/с. Разница в 12 раз. Это ключевой момент.
Когда модель работает в GPU-режиме (все слои на GPU через -ngl 999), данные постоянно перемещаются между блоками шейдеров и этой относительно медленной памятью. При 70B-модели в Q4_K_M каждый слой генерирует десятки гигабайт трафика. Система упрется в пропускную способность раньше, чем в вычислительную мощность.
Режимы работы: APU против GPU. Зачем это деление?
Правило простое, но его постоянно нарушают:
- GPU-режим (
-ngl 999): все слои модели загружаются в память GPU и там же выполняются. Требует, чтобы модель целиком помещалась в доступную VRAM (128 ГБ минус системные нужды). - APU-режим (гибридный): часть слоев на GPU, часть — на CPU. Например,
-ngl 40для 70B-модели. Данные постоянно копируются между разными частями одной и той же физической памяти (но с разными правами доступа).
В теории APU-режим должен быть медленнее из-за накладных расходов на копирование. На практике для моделей больше 120B это единственный способ запустить их вообще. А для моделей 30B-70B разница может быть всего 15-20%, если правильно подобрать количество слоев на GPU.
1 Выбираем модель под задачу, а не под железо
Начните не с модели, а с ответа на вопрос: «Что я буду делать?» Потому что Strix Halo позволяет запускать почти всё, но не всё стоит запускать.
| Задача | Рекомендуемый размер | Конкретные модели (2026) | Режим работы |
|---|---|---|---|
| Кодирование, рефакторинг | 30B-70B | Qwen3-Coder-Next 72B, MiniMax M2.5 32B | GPU-режим (все слои) |
| Длинные диалоги, анализ документов | 48B-120B | Kimi Linear 48B, MiniMax M2.5 128B | APU-режим (40-70 слоев на GPU) |
| Мультимодальность, описание изображений | 12B-34B | MiniCPM-V 2.5 34B, LLaVA-Next 34B | GPU-режим |
| Агентные сценарии, планирование | 8B-20B (несколько экземпляров) | DeepSeek-V3 8B, Gemma 3 12B | Несколько моделей в памяти одновременно |
MoE-модели (Mixture of Experts) — отдельная история. Strix Halo теоретически идеален для них: 128 ГБ позволяют загрузить 120B MoE полностью. Практически — спекулятивный декодинг становится необходимостью, потому что обычный инференс упирается в пропускную способность памяти при переключении экспертов.
2 Квантование — не просто сжатие, а ключ к производительности
На Strix Halo разница между Q4_K_M и Q3_K_L может быть 40% в скорости. И дело не только в размере файла, а в том, как эти форматы работают с RDNA 3.5 архитектурой.
Форматы, которые реально работают на RDNA 3.5 (2026)
| Формат | Бит на вес | Качество (относительно FP16) | Скорость на Strix Halo | Когда использовать |
|---|---|---|---|---|
| MXFP4 (AMD-оптимизированный) | 4 бита | ~95% (для больших моделей) | Очень высокая | 70B+ модели, GPU-режим |
| FP4 | 4 бита | 92-94% | Высокая | Кодирование, нужна точность |
| Q3_K_XL | ~3.2 бита | ~90% | Самая высокая | Диалоги, текстовые задачи |
| FP8 | 8 бит | ~99% | Средняя (ограничение по памяти) | Финализация кода, точные расчеты |
| Q4_K_M | ~4.3 бита | ~96% | Высокая | Универсальный выбор для 30B-70B |
MXFP4 — новый формат от AMD, который в llama.cpp 0.13.2 получил нативную поддержку для RDNA 3.5. Он использует специфичные для AMD инструкции для деквантования на лету. Разница с обычным FP4: на Strix Halo MXFP4 дает прирост 15-20% в tokens/sec при том же качестве.
Проверить, поддерживает ли ваша сборка llama.cpp MXFP4: запустите llama-bench --help и найдите в списке форматов MXFP4. Если нет — пересобирайте с флагом -DLLAMA_AMD_MXFP4=ON.
3 Собираем все вместе: пошаговый план выбора
Это не теория. Это чек-лист, который я использую перед загрузкой каждой новой модели.
- Определиться с размером модели. 128 ГБ памяти ≠ 128 ГБ доступно для модели. Система, ROCm/Vulkan, буферы — это 8-12 ГБ. Остается 116-120 ГБ. Модель 120B в FP16 весит 240 ГБ — не влезет. Та же модель в Q3_K_XL — около 45 ГБ. Считайте: размер_файла × 1.3 (на KV-кеш и служебные данные).
- Выбрать формат под задачу. Для кодирования — FP4 или Q4_K_M (точность важнее). Для чата — Q3_K_XL или MXFP4 (скорость важнее). Если сомневаетесь — качайте Q4_K_M, это безопасный вариант.
- Тестовый запуск с бенчмарком. Не загружайте сразу в Oobabooga. Сначала объективные цифры:
Обратите внимание на./llama-bench -m ./MiniMax-M2.5-72B-Q4_K_M.gguf \ -ngl 80 -c 4096 -b 512 --vulkan \ -t 16 -np 4 --no-mmap --prompt-cache-ngl 80для 72B модели: 80 слоев на GPU, остальные на CPU. Это APU-режим. Для 32B модели можно ставить-ngl 999(все слои на GPU). - Подстройка под свою задачу. Бенчмарк дает базовые цифры. Реальная генерация кода или длинный диалог будут вести себя иначе. Если скорость падает со временем — проблема в KV-кеше. Помогает
--prompt-cacheили уменьшение контекста.
Ошибки, которые съедят ваше время (и нервы)
Ошибка 1: Загрузка модели в EXL2 или GPTQ форматах. Strix Halo и ROCm работают с GGUF. EXL2 — для NVIDIA через TensorRT-LLM. GPTQ — устарел к 2026 году для AMD. Качайте только GGUF.
Ошибка 2: Использование --mmap по умолчанию. На больших моделях (70B+) mmap может приводить к ошибкам выделения памяти в ROCm. Всегда добавляйте --no-mmap для стабильности, даже если теряете 5% в скорости загрузки.
Ошибка 3: Неправильное распределение слоев. Для 70B модели -ngl 999 (все слои на GPU) может работать, но если система начинает свопиться — скорость упадет в 10 раз. Лучше -ngl 70 и стабильность.
Если видите ошибку "Unable to allocate ROCm0 buffer" — это классика. В отдельном гайде разбирали ее детально, но кратко: помогает уменьшение контекста (-c 2048), отключение mmap и перезагрузка ROCm демона.
FAQ: ответы без воды
Какая самая большая модель, которую можно запустить в GPU-режиме?
В GPU-режиме (все слои на GPU) — около 70B параметров в Q4_K_M. Это 35-40 ГБ файл + 45-50 ГБ на KV-кеш и системные нужды. 120B модель в Q3_K_XL тоже может влезть, но с контекстом не больше 2048 токенов. Проверено на MiniMax M2.5 128B.
Vulkan или ROCm — что быстрее в 2026?
Зависит от модели и квантования. Для MXFP4 и FP4 — ROCm (он использует аппаратные блоки матричных вычислений). Для Q3_K_XL и Q4_K_M — Vulkan часто быстрее на 5-15%. Но ROCm 7.2.1 стабильнее с большими моделями. Мой совет: соберите llama.cpp с поддержкой обоих бэкендов и тестируйте свою конкретную модель.
Можно ли запускать несколько моделей одновременно?
Да, и это killer-feature Strix Halo. В памяти можно держать, например, Qwen3-Coder-Next 72B для программирования и Kimi Linear 48B для анализа документов одновременно. Переключение между ними — секунды, а не минуты загрузки. Главное следить за общим потреблением памяти через rocm-smi.
Почему скорость генерации падает после 1000 токенов?
KV-кеш. Каждый токен контекста занимает память. При 4096 контексте и 70B модели KV-кеш — это дополнительные 20+ ГБ. После заполнения кеша система начинает активно свопиться. Решение: уменьшайте контекст (-c 2048) или используйте --prompt-cache если llama.cpp поддерживает.
Есть ли смысл ждать оптимизаций от AMD?
Да, и они уже идут. В ROCm 7.3 (релиз ожидается в марте 2026) заявлена поддержка FP4 с весами в памяти HBM (у Strix Halo нет HBM, но оптимизации алгоритмов будут). Также улучшают работу с MoE-моделями. Подписывайтесь на репозиторий ROCm на GitHub, обновляйтесь сразу после стабильных релизов.
Последний совет, который сэкономит недели
Не гонитесь за размером. 120B модель в Q3_K_XL может быть медленнее 32B модели в Q4_K_M при реальных задачах из-за архитектурных ограничений. Сначала определите, какая скорость генерации вас устроит. 10 токенов в секунду? 20? 5? Затем подбирайте модель, которая дает эту скорость с запасом 30%.
И помните: Strix Halo — это не серверная карта. Это уникальная платформа, где можно экспериментировать с архитектурами моделей, а не просто гнать бенчмарки. Попробуйте запустить агентный сценарий с несколькими моделями — там раскрывается настоящий потенциал 128 ГБ.