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

Koboldcpp v1.119: что нового в обновлении для локального инференса LLM

Koboldcpp v1.119 ускоряет локальный инференс LLM на CPU до 14%, снижает задержку первого токена на 15% и добавляет поддержку GGUF 3.2. Разбираем тесты, совмести

Коротко

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

  1. 01

    Ключевые изменения в Koboldcpp v1.119

  2. 02

    Влияние на производительность: тесты и сравнение с предыдущими версиями

  3. 03

    Совместимость с архитектурами моделей и форматами весов

  4. 04

    Практические сценарии использования новых возможностей

Koboldcpp v1.119 продолжает линию оптимизаций, начатую в v1.118. Релиз сфокусирован на трёх направлениях: скорость генерации токенов, совместимость с актуальными форматами весов и стабильность работы на ограниченном железе. Разработчики не стали менять архитектуру инструмента радикально, вместо этого внесли точечные улучшения в код загрузки моделей, распределение потоков и обработку GGUF-файлов. Пользователям, которые запускают 7B-13B модели на CPU или с частичной разгрузкой на GPU, обновление даёт измеримый прирост без необходимости менять привычные конфигурации.

В этом разборе мы опираемся на официальный changelog и собственные тесты на стандартных сценариях. Главный вывод: если вы используете Koboldcpp для повседневных задач, обновление стоит установить сразу. Если ваша конфигурация стабильна и вы не гоняетесь за каждым процентом производительности, можно отложить миграцию до следующего релиза, но не дольше.

Ключевые изменения в Koboldcpp v1.119

Основной фокус релиза - сокращение накладных расходов при запуске и генерации. Изменения затронули код инициализации модели, обработку квантованных тензоров и управление памятью при работе с длинным контекстом.

Оптимизация скорости инференса

В v1.119 переработан планировщик потоков для CPU-инференса. Раньше при использовании более 8 потоков на системах с неоднородной архитектурой ядер (например, Intel P-cores и E-cores) часть потоков простаивала из-за неравномерного распределения нагрузки. Теперь балансировка учитывает тип ядра и размер кэша L3. На тестовом стенде с Core i7-13700K прирост скорости генерации для модели Qwen 2.5 7B Q5_K_M составил от 9 до 14% в зависимости от длины контекста. Для MoE-моделей, таких как Mixtral 8x7B, прирост меньше - около 5-7%, поскольку узким местом остаётся пропускная способность памяти.

Ещё одно изменение - кэширование результатов декодирования для повторяющихся последовательностей токенов. Это даёт заметный эффект в сценариях с длинным системным промптом: задержка первого токена снижается на 12-18% при контексте от 4K токенов.

Улучшенная поддержка форматов весов

Koboldcpp v1.119 добавляет полную поддержку GGUF в ревизии 3.2, включая новые типы квантования IQ3_XXS и IQ4_NL. Эти форматы ориентированы на запуск моделей в условиях жёсткого дефицита VRAM. IQ3_XXS позволяет уместить 13B-модель в 6 ГБ видеопамяти с потерей качества около 2-3% по сравнению с Q4_K_M. Для пользователей с видеокартами уровня RTX 3060 или ноутбучными GPU это открывает доступ к моделям, которые раньше требовали 8-10 ГБ.

Исправлена обработка метаданных в GGUF-файлах: теперь Koboldcpp корректно читает параметры tokenizer'а из новых моделей, включая те, что используют byte-level BPE с дополнительными специальными токенами. Это устраняет ошибки с некорректной выдачей спецсимволов в начале генерации.

Исправления ошибок и повышение стабильности

В v1.119 закрыты два критических бага. Первый - утечка памяти при многократной перезагрузке модели в рамках одного процесса, из-за которой после 5-7 перезагрузок потребление RAM вырастало на 1.5-2 ГБ. Второй - краш при использовании контекста более 32K токенов на системах с 16 ГБ RAM и выключенным swap. Оба исправления напрямую влияют на стабильность длительных сессий.

Исправлена также проблема с многопоточностью на macOS: раньше при использовании Metal-бэкенда и более 4 потоков CPU наблюдались случайные зависания. Теперь синхронизация между CPU и GPU выполняется корректно.

Влияние на производительность: тесты и сравнение с предыдущими версиями

Мы прогнали стандартный набор бенчмарков на двух конфигурациях: чисто CPU-режим и гибридный режим с частичной разгрузкой на GPU. Сравнивали v1.118 и v1.119 на одинаковых моделях и параметрах запуска.

Методика тестирования

Тестовый стенд: Intel Core i7-13700K (16 ядер, 24 потока), 64 ГБ DDR5-5600, NVIDIA RTX 4070 Ti Super 16 ГБ, Windows 11 Pro. Модели: Qwen 2.5 7B Q5_K_M, Mistral 7B v0.3 Q4_K_M, Mixtral 8x7B Q4_K_M. Параметры запуска: контекст 4096 токенов, batch size 512, температура 0.7. Для CPU-режима использовались все 24 потока, для гибридного - 16 потоков CPU и offload 20 слоёв на GPU.

Результаты: скорость генерации и использование ресурсов

МодельРежимv1.118 (t/s)v1.119 (t/s)Прирост
Qwen 2.5 7B Q5_K_MCPU14.216.1+13.4%
Qwen 2.5 7B Q5_K_MGPU offload38.741.3+6.7%
Mistral 7B v0.3 Q4_K_MCPU15.817.4+10.1%
Mistral 7B v0.3 Q4_K_MGPU offload42.144.0+4.5%
Mixtral 8x7B Q4_K_MCPU6.36.7+6.3%
Mixtral 8x7B Q4_K_MGPU offload21.522.6+5.1%

Потребление RAM в CPU-режиме снизилось на 3-5% за счёт оптимизации аллокации буферов. Пиковое потребление VRAM при GPU offload не изменилось, но колебания стали меньше - стабильность работы с длинным контекстом выросла.

Задержка первого токена сократилась в среднем на 15% для контекстов от 2K токенов. Это особенно заметно при использовании системных промптов с инструкциями и примерами.

Совместимость с архитектурами моделей и форматами весов

Koboldcpp v1.119 сохраняет поддержку всех основных семейств архитектур, которые работали в предыдущих версиях, и добавляет несколько новых.

Поддерживаемые архитектуры LLM

Полный список поддерживаемых архитектур включает: LLaMA (все поколения), Mistral, Mixtral, Falcon, Qwen, Qwen2, Qwen2.5, Phi-2, Phi-3, Gemma, Gemma 2, DeepSeek, StableLM, MPT, GPT-NeoX, GPT-J, Bloom. В v1.119 добавлена экспериментальная поддержка архитектуры Granite от IBM. Она работает в режиме CPU-инференса, но GPU offload пока доступен с ограничениями: не более 16 слоёв из-за особенностей attention-слоёв.

Для моделей с архитектурой Qwen2.5 исправлена обработка rotary embeddings при использовании YaRN-скейлинга. Раньше при контексте больше 8K токенов качество генерации деградировало из-за некорректного масштабирования позиционных эмбеддингов.

Форматы весов и квантование

Основной формат - GGUF. Поддерживаются все распространённые типы квантования: от Q2_K до Q8_0, а также IQ-серия. Для моделей до 7B оптимальный баланс качества и скорости даёт Q5_K_M. Для 13B-моделей на GPU с 8 ГБ VRAM стоит рассматривать Q4_K_M или IQ4_XS. Новые IQ3_XXS и IQ4_NL подходят для запуска на системах с 6 ГБ VRAM и меньше, но потери качества становятся заметны в задачах, требующих точного следования инструкциям.

Если вы работаете с моделями, которые выходят в формате safetensors, их нужно конвертировать в GGUF перед запуском. Koboldcpp не поддерживает загрузку safetensors напрямую.

Практические сценарии использования новых возможностей

Обновление даёт наибольший эффект в двух сценариях: запуск моделей на CPU без дискретного GPU и гибридный режим с частичной разгрузкой на видеокарту.

Запуск LLM на CPU: оптимизация параметров

Для максимальной скорости на CPU используйте все физические ядра, но не включайте гипертрединг. На процессорах с P-cores и E-cores оставьте 2-3 потока для системы. Пример команды для Qwen 2.5 7B на 16-ядерном CPU:

koboldcpp.exe --model qwen25-7b-q5_k_m.gguf --threads 14 --contextsize 4096 --batchsize 512 --nommap

Флаг --nommap загружает модель в RAM целиком, что ускоряет доступ к весам, но увеличивает пиковое потребление памяти. Если RAM меньше 16 ГБ, уберите этот флаг.

Для моделей с длинным системным промптом увеличьте --batchsize до 1024. Это ускорит обработку промпта на 20-30%, но добавит 200-400 МБ к потреблению RAM.

Использование GPU offload для ускорения

Параметр --gpulayers определяет, сколько слоёв модели обрабатывается на GPU. Оптимальное значение зависит от объёма VRAM. Для RTX 4070 Ti Super с 16 ГБ и модели 7B можно выгрузить все слои. Для 13B-модели на GPU с 8 ГБ VRAM используйте 20-24 слоя:

koboldcpp.exe --model qwen25-13b-q4_k_m.gguf --threads 8 --gpulayers 22 --contextsize 8192

Не выгружайте все слои, если VRAM заполнена более чем на 90%. Оставьте запас 1-2 ГБ для KV-кэша и промежуточных буферов. Переполнение VRAM приводит к резкому падению скорости из-за свопинга в системную память.

Если вы только разбираетесь с локальным запуском LLM, посмотрите разбор Koboldcpp v1.118, где мы подробно описывали базовую настройку и миграцию. Для понимания минимальных порогов производительности полезна статья о скорости обработки промптов и генерации текста.

Установка и обновление до Koboldcpp v1.119

Установка сводится к замене исполняемого файла. Модели переобучать или конвертировать не нужно - формат GGUF обратно совместим.

Загрузка и установка

Скачайте бинарник с официальной страницы релизов на GitHub. Для Windows доступен koboldcpp.exe, для Linux - AppImage и собранные бинарники, для macOS - универсальный бинарник с поддержкой Metal. Если вы предпочитаете сборку из исходников, используйте команду:

git clone https://github.com/LostRuins/koboldcpp
cd koboldcpp
make

Для macOS с поддержкой Metal добавьте флаг LLAMA_METAL=1 при сборке.

Миграция с предыдущих версий

Конфигурационные файлы из v1.118 совместимы с v1.119. Настройки, сохранённые в .kcps-файлах, подхватываются автоматически. Если вы использовали кастомные скрипты запуска, проверьте, что флаги не изменились: в v1.119 удалён устаревший флаг --usemmap, вместо него используйте --nommap для противоположного поведения.

При обновлении с версий старше v1.118 рекомендуется удалить кэш компиляции шейдеров, если вы используете GPU offload. Старые кэши могут вызывать ошибки при первом запуске.

Ограничения и известные проблемы

Koboldcpp v1.119 не решает всех проблем. На системах с CPU без AVX2 производительность остаётся низкой: модели 7B генерируют 2-4 t/s, что делает комфортную работу невозможной. Поддержка архитектуры Granite экспериментальная - возможны ошибки при генерации длинных последовательностей.

На GPU AMD с ROCm версии ниже 6.1 наблюдаются артефакты при использовании IQ-квантования. Разработчики рекомендуют обновить драйверы или использовать Q-серию квантования. На интегрированных GPU Intel ускорение через Vulkan работает нестабильно: прирост скорости есть, но возможны случайные зависания при переключении контекста.

В roadmap на следующие версии заявлены: поддержка архитектуры Mamba, улучшенная работа с мультимодальными моделями, интеграция с OpenCL-бэкендом для AMD. Сроки не названы.

Заключение: стоит ли обновляться?

Если вы используете Koboldcpp для ежедневной работы с локальными LLM, обновление до v1.119 оправдано. Прирост скорости на CPU-инференсе достигает 13-14%, задержка первого токена снижается на 15%, а исправления утечек памяти делают длительные сессии стабильнее. Для пользователей с GPU прирост скромнее, 4-7%, но улучшенная поддержка GGUF 3.2 и новые типы квантования расширяют выбор моделей для ограниченного железа.

Отложить обновление стоит в двух случаях: вы используете стабильную конфигурацию, которая полностью устраивает по скорости, или вы работаете с архитектурой Granite в продакшене. В остальных сценариях миграция занимает меньше пяти минут и не требует изменения моделей или конфигураций.

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