KimiLinear-48B с MLA KV Cache: экономия VRAM с 140GB до 15GB в llama.cpp | AiManual
AiManual Logo Ai / Manual.
11 Янв 2026 Гайд

Как запустить KimiLinear-48B с MLA KV Cache в llama.cpp: инструкция по сборке и экономия VRAM с 140GB до 15GB

Пошаговая инструкция по сборке llama.cpp с поддержкой MLA KV Cache для запуска KimiLinear-48B на домашнем железе. Экономия видеопамяти в 10 раз.

Когда 140 гигабайт VRAM — это не шутка

Попробуйте запустить KimiLinear-48B с контекстом в 128K токенов. Без оптимизаций. Система вежливо попросит у вас видеокарту с 140 гигабайтами памяти. Таких карт не существует в природе (если, конечно, у вас нет доступа к кластеру из восьми H100).

Стандартный запуск KimiLinear-48B с полным контекстом — это не просто неэффективно. Это невозможно на 99.9% железа. KV Cache съедает память как голодный зверь.

А теперь представьте, что эту же модель можно запустить на 15 гигабайтах VRAM. Не на 140. На пятнадцати. Разница почти в десять раз. Звучит как магия? Это не магия. Это MLA KV Cache в llama.cpp.

Что ломает MLA KV Cache и почему это работает

KV Cache — это кэш ключей и значений в трансформерах. Чем длиннее контекст, тем больше памяти он требует. Линейно растёт. MLA (Multi-Layer Attention) KV Cache ломает эту линейность.

💡
MLA KV Cache не хранит все ключи и значения для всех слоёв. Вместо этого он использует общий кэш для групп слоёв. Результат — память растёт не линейно с длиной контекста, а логарифмически. Для 128K токенов экономия становится монструозной.

В llama.cpp эту оптимизацию добавили недавно. Но поддержка есть только в специальной сборке. И работает она не со всеми моделями. KimiLinear-48B — одна из тех, кто дружит с MLA. Потому что её архитектура изначально заточена под длинный контекст.

Сборка llama.cpp с MLA KV Cache: пошаговый разбор

Забудьте про стандартную сборку из репозитория. Там MLA нет. Нужна форк-версия с поддержкой этой фичи. И собирать её нужно с правильными флагами.

1 Установите зависимости (Ubuntu/Debian пример)

Без этого шага cmake начнёт ругаться на отсутствие библиотек. И будет прав.

sudo apt update
sudo apt install -y build-essential cmake git libcurl4-openssl-dev

Если у вас другой дистрибутив — ищите аналогичные пакеты. Не полагайтесь на «автоопределение» системы. Оно часто ломается.

2 Клонируйте репозиторий с поддержкой MLA

Официальный llama.cpp не подойдёт. Нужен форк, где уже замержены изменения.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

На момент написания статьи поддержка MLA находится в основном репозитории llama.cpp, но требует активации через флаги компиляции. Проверяйте актуальность информации в README.

3 Собирайте с правильными флагами

Здесь большинство ошибается. Собирают без флагов — получают бинарник без MLA.

mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON -DLLAMA_MLA=ON
make -j$(nproc)

Флаг -DLLAMA_MLA=ON — это волшебная кнопка. Без неой MLA KV Cache не включится. Если у вас нет CUDA, замените на -DLLAMA_METAL=ON для Mac или -DLLAMA_VULKAN=ON для AMD.

Хотите больше оптимизаций? Добавьте -DLLAMA_CUBLAS=ON для cuBLAS или -DLLAMA_AVX2=ON для процессорных инструкций. Но помните: каждый флаг увеличивает время сборки.

Загрузка модели: где взять KimiLinear-48B в GGUF

Оригинальная модель в формате PyTorch весит под 100 гигабайт. Вам это не нужно. Нужен GGUF — сжатый и оптимизированный формат для llama.cpp.

Ищите на Hugging Face теги KimiLinear-48B-A3B-GGUF. Часто модели выкладывают пользователи, а не официальные разработчики. Проверяйте дату загрузки и количество скачиваний.

# Пример загрузки через huggingface-hub (если установлен Python)
pip install huggingface-hub
huggingface-cli download TheBloke/KimiLinear-48B-A3B-GGUF --local-dir ./models --local-dir-use-symlinks False

Или качайте вручную с Hugging Face. Выбирайте квантование Q4_K_M или Q5_K_M — оптимальный баланс между качеством и размером. Q2_K сэкономит ещё больше памяти, но ответы станут менее вменяемыми.

Не берите полную версию без квантования (F16). Она займёт 90+ гигабайт и сведёт на нет всю экономию от MLA. Квантование — ваше второе оружие после KV Cache.

Запуск и проверка: работает ли MLA

Собрали, скачали. Теперь запускаем с правильными аргументами.

./main -m ./models/KimiLinear-48B-A3B-Q4_K_M.gguf \
  -n 512 \
  --ctx-size 131072 \
  --mla \
  --gpu-layers 40 \
  -p "Расскажи подробно о технологии MLA KV Cache"

Что здесь важно:

  • --ctx-size 131072 — задаём длинный контекст (128K токенов). Без этого флага модель будет использовать стандартные 2048.
  • --mla — включаем MLA KV Cache. Если забудете этот флаг, память взлетит до небес.
  • --gpu-layers 40 — сколько слоёв загружать на GPU. Для 48B модели ставьте 30-40. Остальное будет на CPU (медленнее, но экономит VRAM).

Откройте htop или nvidia-smi. Увидите использование памяти ~15GB вместо 140GB. Если видите 50+ GB — что-то пошло не так. Скорее всего, MLA не активировалась.

Ошибки, которые сломают ваш запуск

Я видел, как люди часами debug-ят сборку, пропустив одну из этих проблем.

Ошибка Причина Решение
error: unknown flag: --mla Бинарник собран без поддержки MLA Пересобрать с -DLLAMA_MLA=ON
CUDA out of memory даже с MLA Слишком много слоёв на GPU Уменьшить --gpu-layers до 20-25
Модель не загружается, ошибка формата GGUF файл повреждён или несовместимая версия Скачать заново, проверить совместимость версий llama.cpp

Самая частая ошибка — забыть флаг --mla при запуске. Без него llama.cpp использует стандартный KV Cache, и память улетает за пределы. Добавьте алиас в shell, чтобы не забывать.

А что насчёт производительности?

MLA KV Cache экономит память, но не бесплатно. Есть overhead на вычисления. На практике это 5-15% падение скорости генерации по сравнению с обычным KV Cache. Но это плата за возможность запустить модель на железе, которое в 10 раз слабее.

Если вам нужна максимальная скорость — уменьшайте контекст или используйте более лёгкие модели. Но если цель — запустить 48B модель с длинным контекстом на одной карте с 16-24GB VRAM, MLA единственный рабочий вариант.

💡
MLA KV Cache особенно эффективен для задач с очень длинным контекстом: анализ документов, чаты с длинной историей, кодовая база. Для коротких запросов (до 4K токенов) разница в памяти незначительна, но overhead остаётся.

FAQ: вопросы, которые вы зададите через час

Можно ли использовать MLA с другими моделями?

Да, но не со всеми. MLA требует поддержки на уровне архитектуры модели. KimiLinear, некоторые версии Llama 3.1 с длинным контекстом, Yi-Large — проверяйте документацию. Для обычных Llama 3 8B без длинного контекста MLA не даст преимуществ.

Хватит ли 16GB VRAM для KimiLinear-48B с MLA?

Да, но с оговорками. Используйте Q4_K_M квантование, загружайте на GPU не больше 35 слоёв, остальное на CPU. Памяти хватит, но скорость будет не самой высокой. Если у вас 24GB — уже комфортнее.

Почему у меня всё равно вылетает CUDA out of memory?

Проверьте три вещи: 1) Флаг --mla в запуске. 2) Квантование модели (не используйте F16). 3) Количество GPU слоёв (начните с 20, увеличивайте постепенно). Если не помогло — прочтите наш гайд «Можно ли запустить локальную LLM на 10 ГБ видеопамяти?».

Есть ли альтернативы MLA KV Cache?

Есть, но они менее эффективны для таких больших контекстов. Binary KV Cache (статья «Binary KV cache: как сохранить 67% VRAM») экономит меньше, но проще в реализации. Streaming LLM — другой подход, но требует изменений в модели.

Что дальше?

Вы запустили KimiLinear-48B на железе, которое для этого не предназначено. Теперь оптимизируйте пайплайн: добавьте кэширование, батчинг запросов, поэкспериментируйте с квантованиями. Попробуйте запустить модель в LXC-контейнере (гайд по Proxmox) для изоляции.

Следующий шаг — использовать эту модель для реальных задач: анализ длинных документов, чат-боты с памятью, код-ревью. 128K токенов — это примерно 100 страниц текста. Модель может прочитать и проанализировать их за один проход.

И помните: технологии оптимизации памяти развиваются быстрее, чем растёт VRAM в потребительских картах. Через год появятся новые методы, которые сократят требования ещё в два раза. А пока MLA KV Cache — ваш лучший друг для запуска гигантских моделей на скромном железе.