Введение: О KoboldCPP & SillyTavern, LM Studio
KoboldCPP – это простое в использовании ПО для запуска текстовых моделей в форматах GGML и GGUF, основанное на llama.cpp.
llama.cpp написан на чистом C/C++ и не имеет внешних зависимостей, что обеспечивает высокую производительность.
KoboldCPP очень полезный инструмент для запуска локальных LLM если у вас мало видеопамяти, так как KoboldCPP может использовать процессор.
KoboldCPP будет медленнее других бэкендов которые загружают модели исключительно в VRAM, но зато KoboldCPP позволяет запускать большие LLM на не очень мощных машинах.
KoboldCPP предоставляет собственный интерфейс (UI), но он не такой гибкий, функциональный и (по мнению автора) удобный как SillyTavern.
SillyTavern – это интерфейс (UI) для взаимодействия с текстовыми моделями через API (KoboldAI/CPP, OpenAI, OpenRouter и др.).
Интегрируется с генераторами изображений в чате, такими как WebUI от A1111 и ComfyUI, а также поддерживает TTS, может работать либо сам по себе от системы (не AI), либо через API для генерации (AI) голоса.
SillyTavern обладает сильно настраиваемым интерфейсом, включает крутые функции лорбуков (lorebook и world info), поддерживает автоматический перевод сообщений с помощью сервисов Google, DeepL и других, а также предоставляет множество дополнительных опций и расширений от сообщества пользователей.
KoboldCPP + SillyTavern универсальное и гибко настраиваемое решение, подходящие для всего в т.ч. сильного RP.
LM Studio – очень простой и дружелюбный инструмент, установили, запустили и все работает.
Есть поддержка моделей с “reasoning” из коробки и без настройки.
LM Studio отлично подходит для теста моделей, технических и простых вопросов, таких как код, ответы на вопросы, написание текста, рерайт и тд. и тп. В качестве бэкенда LM Studio менее гибкий, чем KoboldCPP. И в качестве фронтенда не такой настраиваемый как SillyTavern, но минималистичный и приятный.
Установка Git (Bash), NodeJS и Python
NodeJS
Windows
Для Windows качаем установщик для вашей архитектуры.
Рекомендую использовать LTS версию.
Запускаем установщик, жмем «Далее», убираем галочку в конце «Automatically install the necessary tools…», и устанавливаем.
Linux
Для Linux, можно установить через Volta или другим удобным вам способом.
Установка Volta:
|
|
Установка NodeJS и NPM:
|
|
Где “x” мажорная версия node которую вы хотите установить, можно посмотреть на главной странице NodeJS.
Например, Node.js LTS v22.14.0:
|
|
Git
Windows
Для Windows нужно скачать git, “Standalone” - установщик или “Portable” - портативную версию. Я советую портативную версию, но нужно будет вручную обновить переменные среды, об этом дальше.
Linux
Если вы пользователь Linux, вероятно git у вас уже установлен, проверить можно командой git -v
, если нет:
Debian:
|
|
Arch:
|
|
Python
Для запуска “распакованного” KoboldCPP требуется Python.
Я рекомендую установить Python и использовать “распакованный” KoboldCPP – это улучшит производительность.
Подробнее об этом будет позже.
Windows
Для Windows нужно скачать и установить Python.
Скачайте «Windows Installer» нужной версии Python для вашей архитектуры из столбца «Stable Releases». Если вам не нужна конкретная версия, просто качайте последнюю.
Во время установки Python, нажмите «Customize installation» и поставьте галочки на «pip», «tcl/tk» и «Add Python to environment variables»:
Место установки на ваше усмотрение.
Linux
Так же как и в случае с git, Python обычно уже установлен в дистрибутив Linux, но возможно старая версии, проверить можно командой:
|
|
Python 2 – старая версия. Если Python нету, или версия не та, то:
Debian:
|
|
Arch:
|
|
Настройка переменных среды
После установки Git, NodeJS и Python нужно добавить их в переменные среды (если требуется). Это позволит запускать их без указания полного пути к бинарным файлам. Программы тоже смогут использовать их по простым командам, таким как python
, node
и git
.
Обычно установщики Python и NodeJS автоматически обновляют переменные среды, если вы не отключали эту опцию. То же самое касается Git, если вы устанавливали его через установщик, а не использовали portable-версию.
Windows
- Win + R
systempropertiesadvanced
- Environment Variables (Переменные среды)
- User variables (Переменные среды пользователя)
- Path
- New (Создать)
- Git:
path\to\git\bin\
иpath\to\git\cmd\
- NodeJS:
path\to\nodejs\
- Python:
path\to\python\
иpath\to\python\Scripts\
Одна строка - один путь!
Linux
Если вы устанавливали Git и Python через пакетный менеджер (apt, pacman и др.) или они уже были в системе, а NodeJS устанавливали способом с официального сайта (в т.ч через Volta), то все должно быть в порядке.
Но, если это не так:
Открыть .bashrc
в редакторе nano:
|
|
В конце файла добавить:
|
|
Обновить .bashrc
:
|
|
Обычно пути такие:
- Git:
/usr/bin/git
- NodeJS:
/usr/bin/node
- Python:
/usr/bin/python
или/usr/bin/python3
Но могут оказаться другими.
Можно попробовать выполнить команду, чтобы узнать где находится программа:
|
|
Пример .bashrc
файла:
|
|
Проверка
Введите в терминале:
|
|
Если вы получаете версию, а не ошибку по типу:
|
|
|
|
Значит все работает.
Установка и запуск KoboldCPP + SillyTavern & LM Studio
Для начала советую задуматься над директориями, что куда ложить, и сделать что-то типо этого:
|
|
KoboldCPP
Переходим на страницу релизов на GitHub страницы репозитория KoboldCPP.
Качаем бинарный файл для вашей системы, что качать выбираем исходя из описания релиза, перевод:
Описания релиза
- Если вам не нужно CUDA, вы можете использовать koboldcpp_nocuda.exe, который значительно меньше.
- Если у вас есть видеокарта Nvidia, но старый процессор, и koboldcpp.exe не работает, попробуйте koboldcpp_oldcpu.exe.
- Если у вас современная видеокарта Nvidia, вы можете использовать версию CUDA 12 - koboldcpp_cu12.exe (она значительно больше, но немного быстрее).
- Если вы используете Linux, выберите соответствующий бинарный файл для Linux (не .exe).
- Если у вас современный MacOS (M1, M2, M3), вы можете попробовать koboldcpp-mac-arm64, бинарный файл для MacOS.
- Если вы используете AMD, мы рекомендуем сначала попробовать вариант с Vulkan (доступен во всех версиях) для лучшей совместимости. В качестве альтернативы вы можете попробовать koboldcpp_rocm в форке YellowRoseCx.
Запускаем бинарный файл:


Запуск не быстрый, так как это упакованные python файлы (код), интерпретатор python и другие файлы в один файл.
С бинарным файлом можно так же взаимодействовать через терминал, например:
|
|
Чтобы распаковать KoboldCPP переходим в «Extra» => «Unpack KoboldCpp To Folder», выбираем пустую директорию куда распаковать.
Теперь можно запускать KoboldCPP уже в разы быстрее используя python:
|
|
Но в таком случае GUI работать не будет, GUI работает только если запускать бинарный файл.
Но если вы не хотите заморачиваться с терминалом и писать кучу флагов, то есть вариант настройки через GUI.
Стартуем бинарный файл и настраиваем все через GUI, после сохраняем конфиг (кнопка - «Save»).
И в будущем уже используем такую команду:
|
|
Чтобы запустить KoboldCPP с созданным ранее конфигом.
Если конфиг необходимо изменить, можно сделать это точно так же через GUI (загрузив его, кнопка - «Load», а потом сохранив после изменений), или просто открыть конфиг через блокнот, например чтобы заменить одну модель на другую или поменять размер контекста.
SillyTavern
Качаем исходный код с GitHub репозитория вручную, либо используем git:
|
|
Эта команда клонирует репозиторий в папку “SillyTavern” в той же директории, откуда была запущена команда.
Запуск на Windows:
Двойной клик на «Start.bat» или в терминале:
|
|
Запуск на Linux:
Сделать файл исполняемым:
|
|
Запустить:
|
|
Базовая настройка
Откройте вкладку «API Connections» (сверху):
- API: Text Completion
- API Type: KoboldCpp
- API URL: API URL KoboldCPP
«API URL» - можно посмотреть в терминале после запуска KoboldCPP, но обычно это :5001
, если этот порт был свободен.
Крайне рекомендую включить «Derive context size from backend», чтобы значение «Context (tokens)» автоматически подтягивалось с бэкенда, то есть из параметра KoboldCPP где вы установили размер контекста.
«Auto-connect to Last Server» - тоже полезная опция, чтобы при запуске SillyTavern, не нужно было вручную нажимать на «Connect», и оно само подключалось к последнему бэкенд серверу.

Нажимайте «Connect», если вы видите 🟢 и название модель, значит все работает.
LM Studio
Переходим на сайт LM Studio, выбираем ОС, архитектуру, качаем и устанавливаем.
Переходим в настройки:

- «User Interface Complexity Level» - «Power User»
- «Show side button labels» - Включить (для понятности)
- «Model loading guardrails», на ваше усмотрение, лично я использую «Relaxed»
- «Use LM Studio’s Hugging Face Proxy», помогает с доступом к HF через LM Studio, если прямое соединение не работает
- Остальные настройки на ваше усмотрение
Нажимаем на «Discover» в сайдбаре:

Переходим в «Runtime»:

Обновляем «CPU llama.cpp», и второй пакет CUDA для видеокарт Nvidia. Vulkan или ROCm для видеокарт AMD.
На странице «My Models» (в сайдбаре), можно посмотреть и настроить параметры по умолчанию для каждой модели:

Если вы скачиваете модели вручную, а не через LM Studio, они должны быть расположены так:
|
|
dir1
и dir2
, не обязательно должный быть названы в честь автора и модели, главное чтобы просто была такая иерархия, иначе LM Studio их не увидит.
Модели загружаются и выгружаются сверху:

Советы KoboldCPP & SillyTavern
KoboldCPP
CuBLAS обычно работает быстрее чем CLBlast для видеокарт Nvidia.
Для видеокарт AMD следует использовать Vulkan, а еще лучше ROCm.
Возможно использование «MMQ», «MMAP», «MLOCK», «ContextShift», «FastForwarding» и «FlashAttention», поможет ускорить скорость генерации, выясняется путем экспериментов.
Пояснение: MMQ, MMAP, MLOCK, ContextShift, FastForwarding, FlashAttention
MMQ (Quantized Matrix Multiplication)
MMQ режим, при котором для prompt processing вместо стандартных операций cuBLAS используются квантованные матричные умножения. Это позволяет экономить VRAM и может давать прирост производительности для некоторых квантованных форматов (например, Q4_0), хотя для других форматов эффект может быть менее заметен.
Представьте, что у вас есть два способа выполнения матричных вычислений при генерации нового токена в языковой модели. Один способ использует стандартный алгоритм cuBLAS, который уже поддерживает низкую точность, а другой – режим MMQ, оптимизированный для квантованных данных. При включении MMQ система выбирает именно оптимизированный алгоритм для prompt processing, что позволяет быстрее обрабатывать запросы и снижать потребление видеопамяти, если модель заквантована до нужного уровня. Это не означает, что cuBLAS перестает использоваться – режим MMQ работает в составе инфраструктуры cuBLAS, изменяя лишь способ обработки данных для определенных квантованных форматов.
MMAP (Memory Mapping)
MMAP – это способ работы с весами и слоями модели, когда они загружаются в оперативную память, но не полностью. Система подгружает нужные части по требованию.
При запуске LLM, MMAP позволяет “подключить” модель к оперативной памяти так, как будто она уже загружена, но реально считывать только те блоки, которые требуются для текущего запроса.
MLOCK (Memory Lock)
Опция MLOCK заставляет операционную систему “закреплять” загруженные данные модели в оперативной памяти, не позволяя им выгружаться на диск (swap). Это предотвращает задержки, связанные с обращением к медленной виртуальной памяти.
При использовании LLM важно, чтобы ключевые веса модели оставались в быстрой памяти (VRAM или RAM). MLOCK фиксирует данные в RAM, если часть модели загружена туда, предотвращая свопинг и снижая задержки.
Свопинг (Swapping) – перемещение процессов или их частей из RAM на диск (в файл подкачки).
ContextShift
ContextShift – позволяет эффективно работать с большим контекстом. Вместо того чтобы пересчитывать всю информацию (весь контекст), система “сдвигает” KV-кэш, старые данные удаляются, а новые переносятся в начало нового окна.
Например, если чат-бот участвует в длительном диалоге, при генерации нового ответа модель не начинает обработку с нуля всего контекста. Вместо того чтобы пересчитывать весь контекст, модель сохраняет промежуточные вычисленные представления (скрытые состояния) уже обработанных сообщений. При генерации нового ответа используются эти сохраненные данные, чтобы быстрее использовать новую информацию из последних сообщений. Это похоже на инкрементную генерацию в трансформерах, когда модель продолжает вычисления, опираясь на уже обработанную часть текста.
Такой подход значительно ускоряет обработку, так как модель фокусируется только на новой информации.
FastForwarding (KV-caching)
FastForwarding позволяет модели пропускать повторную обработку токенов, для которых уже были вычислены скрытые состояния (KV-кэш), и выполнять генерацию новых токенов только для изменений в последовательности. Эта функция особенно полезна, когда используется «ContextShift».
Представьте процесс инкрементной генерации в трансформерах: при генерации нового токена модель не пересчитывает полностью все предыдущие токены, а использует сохраненный KV-кэш для уже обработанных частей. FastForwarding в KoboldCPP действует аналогично – если модель продолжает генерировать текст в длинном диалоге или документе, она «перематывает» уже вычисленные участки и обновляет только последние, неизменные части последовательности, что значительно ускоряет обработку.
Пример, есть история из 1000 токенов, FastForwarding создает KV-кэш этих 1000 токенов за один проход, и при следующей генерации используется кэш, а не пересчитывается все с нуля.
FlashAttention
FlashAttention – использует более эффективное распределение данных и работу с кэш-памятью GPU, что позволяет ускорить вычисления и снизить потребление VRAM.
В трансформерных моделях вычисление внимания обычно требует квадратичного количества операций при увеличении длины последовательности. FlashAttention оптимизирует этот процесс, позволяя быстрее обрабатывать большие последовательности, что особенно важно при работе с высоконагруженными серверными приложениями ИИ.
Для контекста тоже требуется VRAM и не мало, не следует загружать всю VRAM только слоями если вы используйте большой контекст 8-12К+.
Старайтесь поместить как можно больше слоев в VRAM, но при этом оставить место для контекста. Если в VRAM не влезает всего 1 слой, лучше оставить не загруженным больше 1 слоя, 2-3 слоя.
Если VRAM не хватает для загрузки большинства слоев, используйте другие кванты. Не влезает Q6, используйте Q5. Не влезает Q5, используйте Q4.
Это ухудшит качество генерации, но это будет работать. Если критически важна точность и качество, возможно не следует запускать локально если не хватает железа.
В крайнем случае если у вас много RAM, можно сильно пожертвовать скоростью, загрузив в RAM большее кол-во слоев чем в VRAM.
Проверьте скорость генерации с «BLAS Batch Size» – 512, после поменяйте на 2048 и снова проверьте. Если 2048 медленнее 512, возможно подойдет 1024.
В идеале чем больше «BLAS Batch Size» тем лучше, но большое значение «BLAS Batch Size» может замедлить скорость генерации.
Что касается «Threads», значение “-1” означает “авто”.
Если вы вручную не установите какое-то значение для каждого параметра «Threads», оно будет использоваться из главного параметра «Threads».
Пример: у вас 6 ядер, 12 потока, если вы укажете для «Threads» все 12 потока, а у «BLAS threads» значения не будет, то «BLAS threads» тоже будет использовать 12 потока. В итоге 24 потока, но у вас всего 12, а так же ОС тоже нужны ресурсы.
Обычно KoboldCPP сам устанавливает оптимальное кол-во потоков, но стоит проверить, какие значения выставлены автоматически и убедиться что все окей. Посмотреть это можно рядом с параметром «Threads» (после “запуска” модели) через GUI или после запуска в логах в терминале.
Если система работает медленно или нестабильно, попробуйте уменьшить количество потоков вручную.
Следите чтобы KoboldCPP не использовал потоков больше чем у вас есть, и чтобы у системы оставались ресурсы (2-4+ потока).
Чтобы поменять модель, нужно перезапустить KoboldCPP.
SillyTavern
На YouTube я так и не смог найти гайд по всем настройкам SillyTavern где все бы объяснялось и все такое.
Поэтому, если вы решите остаться, вам придется экспериментировать и гуглить… А если вы совсем новичок, то придется очень много гуглить.
Вот два ваших новых лучших друга - SillyTavern Documentation & r/SillyTavernAI, где вы возможно найдете нужную вам информацию.
Модели не создаются в GGUF формате, GGUF это формат для хранения квантов модели. Поэтому там где вы качаете GGUF модель (зачастую это HF) должна быть указана ссылка на “оригинал” или предоставлены соответствующие инструкции.
На странице оригинала обычно можно найти не только описание модели, а еще настройки, в некоторых случаях даже пресеты для ST1.
Например модель которую я использую на момент написания этой статьи «NemoMix Unleashed 12B» (GGUF).
Там все описано, даны настройки и пресеты ST.
На самом деле правильные настройки не обязательны. Но правильные настройки «Context Template» (очень важно), «Instruct Template» (если есть), «System Prompt» (не так важно) и настройки семплеров для тонкой настройки вывода, могут ОЧЕНЬ сильно повысить качество генерации.
Заключение
KoboldCPP в сочетании с SillyTavern – это мощный инструмент для энтузиастов, которым важна гибкость, кастомизация и возможность детальной настройки. Это идеальный выбор для экспериментов и RP. Однако из-за большого количества параметров и тонких настроек это может потребовать времени.
LM Studio, напротив, предлагает простоту и удобство. Это отличный вариант для тех, кто хочет сразу приступить к использованию локальных моделей с минимальными настройками. Если ваша цель – генерирование текста, кода или ответов на вопросы без необходимости тонкой настройки, то LM Studio станет оптимальным выбором.
Читайте также:
ST - сокращение SillyTavern. ↩︎