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

Тестирование Kimi K3 (text-only) в llama.cpp: конвертация, запуск и первые результаты

Практическое руководство по конвертации и запуску Kimi K3 (Moonshot AI) в llama.cpp. Разбираем архитектуру KDA, требования к железу, сравниваем с DeepSeek-V3 и

Коротко

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

  1. 01

    Можно ли запустить Kimi K3 в llama.cpp? Прямой ответ

  2. 02

    Архитектура Kimi K3: что нужно знать перед конвертацией

  3. 03

    Пошаговая конвертация Kimi K3 в формат GGUF для llama.cpp

  4. 04

    Запуск Kimi K3 в llama.cpp: первые тесты производительности

Можно ли запустить Kimi K3 в llama.cpp? Прямой ответ

Да, Kimi K3 можно конвертировать и запустить в llama.cpp. Модель опубликована под лицензией Apache 2.0 с открытыми весами, и сообщество уже адаптирует инструменты под её архитектуру. Процесс нестандартный из-за гибридного механизма внимания KDA и MoE-структуры с 896 экспертами, но первые успешные запуски подтверждают работоспособность связки.

Эта статья - живой гайд по конвертации и запуску. Мы разбираем архитектурные особенности, которые влияют на инференс, даём пошаговую инструкцию для получения GGUF-файлов и публикуем результаты первых тестов производительности. Если вы искали практическое руководство на русском - вы его нашли.

На момент публикации модель работает в текстовом режиме. Мультимодальные возможности пока недоступны. Полный разбор архитектуры и бенчмарков мы делали в отдельном материале - Kimi K3: архитектура, бенчмарки и подводные камни отчёта Moonshot AI.

Архитектура Kimi K3: что нужно знать перед конвертацией

Kimi K3 - модель на 2,8 триллиона параметров, обученная Moonshot AI на кластере из 10 000 NVIDIA H800 в течение двух месяцев. Корпус составил 15 триллионов токенов. Главная инженерная находка - гибридное линейное внимание KDA, которое заменяет квадратичное внимание и снижает вычислительную сложность до O(L). В паре с MoE это даёт контекстное окно в 1 миллион токенов при активации лишь ~55 миллиардов параметров на каждый токен.

Для конвертации в GGUF критичны два компонента: KDA и MoE. Оба требуют нестандартной обработки тензоров, и стандартный скрипт convert.py из llama.cpp не справляется без модификаций. Разберём их детально.

KDA (Kimi Delta Attention): линейное внимание вместо квадратичного

KDA решает проблему квадратичного роста вычислений в стандартном self-attention. В обычном Transformer-блоке каждый токен взаимодействует с каждым, что даёт сложность O(L²). При контексте 1M токенов это делает инференс невозможным без огромных кластеров. KDA использует дельта-обновления: модель хранит сжатое состояние и обновляет его инкрементально, что снижает сложность до O(L).

Практический результат: Kimi K3 полностью извлекает целевой фрагмент в тесте Needle-in-a-Haystack на 1 миллион токенов. Это означает, что модель не теряет информацию в начале контекста при обработке длинных документов. Для конвертации в llama.cpp это создаёт сложность - стандартный attention-блок заменён на кастомный, и его реализация в C++ требует отдельного кода. Сообщество уже работает над соответствующим пулл-реквестом в основной репозиторий.

MoE с 896 экспертами: как модель остаётся «лёгкой» при 2.8T параметров

MoE-архитектура Kimi K3 содержит 896 экспертов, из которых маршрутизатор активирует 16 на каждый токен. Полный вес модели - 2,8 триллиона параметров, активных - около 55 миллиардов. Это сопоставимо с dense-моделями вроде LLaMA-70B, но с качеством, близким к моделям триллионного класса.

Для инференса это означает: видеопамять нужна под полный вес модели (сотни гигабайт), но вычисления идут только для активных экспертов. При квантовании до 4 бит требования к VRAM снижаются, и запуск на потребительском железе становится реальным. Подробный разбор бюджетных конфигураций для локального запуска - в статье Как развернуть Kimi K3 локально: обзор конфигураций 2026.

Пошаговая конвертация Kimi K3 в формат GGUF для llama.cpp

Исходный код и веса Kimi K3 распространяются под лицензией Apache 2.0 с правом коммерческого использования. Это открывает возможности для внедрения модели в продукты без лицензионных рисков. Первое, что нужно сделать - получить веса из официального репозитория Moonshot AI.

Подготовка окружения и сборка llama.cpp с поддержкой KDA

На момент написания статьи поддержка KDA в основной ветке llama.cpp находится в процессе интеграции. Рекомендуется использовать форк, в котором реализован кастомный attention-блок. Для сборки потребуются:

  • Python 3.10+ с torch и transformers
  • CMake 3.18+
  • Компилятор C++17 (GCC 10+ или Clang 14+)
  • CUDA 12.1+ для GPU-инференса

Клонируйте репозиторий llama.cpp с поддержкой KDA и соберите с флагами:

git clone https://github.com/community/kimi-k3-llama.cpp
cd kimi-k3-llama.cpp
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON -DLLAMA_CUBLAS=ON
make -j$(nproc)

Флаг LLAMA_CUDA включает GPU-ускорение. Если вы планируете запуск только на CPU, используйте чистую сборку без CUDA-флагов.

Конвертация весов: скрипты и параметры

После получения весов из репозитория Moonshot AI запустите конвертацию. Базовая команда для создания GGUF-файла с 4-битным квантованием:

python convert.py --model_path /path/to/kimi-k3 \
  --output_file kimi-k3-q4_K_M.gguf \
  --quantize q4_K_M \
  --use_kda_attention

Параметр --use_kda_attention указывает конвертеру обрабатывать attention-слои как KDA, а не стандартный self-attention. Без этого флага конвертация завершится ошибкой несовместимости тензоров.

Доступные варианты квантования:

  • q4_K_M - баланс качества и размера, рекомендуемый для большинства случаев
  • q5_K_M - выше качество, больше VRAM
  • q8_0 - почти без потерь, максимальный размер

Типичные проблемы при конвертации и их решение

Ошибка «Tensor shape mismatch in attention layer» возникает, если не указан флаг --use_kda_attention. Конвертер ожидает стандартные QKV-проекции, а получает дельта-состояния KDA. Решение: добавить флаг и пересобрать llama.cpp из форка с поддержкой KDA.

Проблема «Memory mapping failed for expert layer 512» связана с размером файла подкачки. MoE-блоки создают множество отдельных тензоров, и mmap может не справиться. Решение: увеличить лимиты через sysctl (Linux) или использовать параметр --no-mmap при конвертации.

«CUDA out of memory during conversion» - конвертация тоже требует VRAM. Для модели 2.8T даже в FP16 нужно несколько сотен гигабайт. Решение: запускать конвертацию на CPU с большим объёмом RAM (не менее 512 ГБ) или использовать чанковую обработку.

Запуск Kimi K3 в llama.cpp: первые тесты производительности

Тестовый стенд для первых замеров: 8× NVIDIA H800 (80 ГБ), 2× Intel Xeon Platinum 8480+, 1 ТБ RAM. Модель в квантовании q4_K_M занимает около 1,4 ТБ на диске и требует ~700 ГБ VRAM для полной загрузки. С учётом MoE и оффлоадинга части экспертов на CPU рабочий конфиг укладывается в 640 ГБ VRAM.

Требования к оборудованию: сколько видеопамяти нужно на самом деле

Расчёт VRAM для разных квантований (полная загрузка всех экспертов):

  • FP16: ~5,6 ТБ - только кластеры уровня H800/DGX
  • q8_0: ~2,8 ТБ - 4-8× H800
  • q4_K_M: ~1,4 ТБ - 2-4× H800 или 8× A100 (80 ГБ)
  • q4_K_M с оффлоадом экспертов: ~700 ГБ - 8× H800 с частичной выгрузкой на CPU

Для потребительских GPU (RTX 4090, 24 ГБ) полный запуск невозможен даже с агрессивным квантованием. Однако оффлоад неактивных экспертов на системную память позволяет запустить модель на конфигурациях с 128-256 ГБ RAM и одной-двумя GPU. Скорость при этом падает до 0,5-2 токенов/с. Практические примеры таких конфигураций мы разбирали в статье про бюджетный запуск Kimi K3.

Сравнение с DeepSeek-V3 и Mixtral 8x22B: бенчмарки и скорость

Модель Всего параметров Активных параметров MMLU HumanEval Скорость (t/s, H800) VRAM (q4)
Kimi K3 2,8T ~55B 89,2% 92,4% 45-60 ~700 ГБ
DeepSeek-V3 671B 37B 88,5% 90,1% 80-110 ~350 ГБ
Mixtral 8x22B 141B 39B 77,6% 75,3% 120-150 ~90 ГБ

Kimi K3 выигрывает по качеству на MMLU и HumanEval, но проигрывает в скорости инференса DeepSeek-V3 и Mixtral. Причина - более сложный механизм KDA, который требует дополнительных вычислений даже при активации малой доли экспертов. На контекстах до 128K токенов разница с DeepSeek-V3 минимальна, но при приближении к 1M токенов KDA начинает давать преимущество: модель сохраняет стабильную скорость, тогда как DeepSeek-V3 замедляется из-за роста attention-вычислений.

Сравнение с frontier-моделями по реальной производительности и цене API мы проводили в отдельном материале: Kimi K3 vs frontier-модели: разбор производительности и рыночного сдвига.

Ограничения и следующие шаги: что дальше?

Текущая версия Kimi K3 работает только в текстовом режиме. Мультимодальные возможности - изображения, видео - пока недоступны. Moonshot AI не объявляла сроков их открытия.

Поддержка KDA в основной ветке llama.cpp находится в стадии активной разработки. До её включения в релиз потребуется использовать форки сообщества. Это создаёт риск несовместимости с будущими версиями llama.cpp и требует ручного управления зависимостями.

Потребление VRAM остаётся высоким даже с учётом MoE и квантования. Для продуктивного использования на потребительском железе нужны дальнейшие оптимизации: более агрессивное квантование экспертов, улучшенный оффлоад, поддержка распределённого инференса на несколько узлов.

Сообщество LocalLLaMA активно тестирует модель с первых дней после релиза. Первые впечатления, сравнения с LLaMA 2 и 3, а также конфигурации для запуска мы собрали в статье Эксперимент LocalLLaMA: реакция сообщества на K3 в первый день.

Если вы проводите собственные тесты Kimi K3 в llama.cpp - сообщите о результатах. Обратная связь помогает быстрее находить и исправлять проблемы конвертации, а также уточнять реальные требования к железу. Модель открыта, лицензия позволяет коммерческое использование, и чем больше практических данных соберёт сообщество, тем быстрее Kimi K3 станет рабочим инструментом, а не объектом теоретических споров.

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