Llama Cpp
Локальный инференс GGUF в llama.cpp и поиск моделей в HF Hub.
Метаданные навыка
| Источник | Опциональный — устанавливается командой hermes skills install official/mlops/llama-cpp |
| Путь | optional-skills/mlops/inference/llama-cpp |
| Версия | 2.1.2 |
| Автор | Orchestra Research |
| Лицензия | MIT |
| Зависимости | llama-cpp-python>=0.2.0 |
| Платформы | linux, macos, windows |
| Теги | llama.cpp, GGUF, Quantization, Hugging Face Hub, CPU Inference, Apple Silicon, Edge Deployment, AMD GPUs, Intel GPUs, NVIDIA, URL-first |
Справочник: полный SKILL.md
Дальше — полное определение навыка, которое Hermes загружает при его активации. Именно эти инструкции видит агент, пока навык включён.
llama.cpp + GGUF
Используйте этот навык для локального инференса GGUF, выбора квантования или поиска репозиториев на Hugging Face для llama.cpp.
Когда использовать
- Запускать локальные модели на CPU, Apple Silicon, CUDA, ROCm или GPU от Intel
- Подобрать нужный GGUF для конкретного репозитория на Hugging Face
- Собрать команду
llama-serverилиllama-cliпо данным Hub - Искать в Hub модели, уже поддерживающие llama.cpp
- Перечислить доступные файлы
.ggufи их размеры для репозитория - Выбрать между вариантами Q4/Q5/Q6/IQ исходя из объёма RAM или VRAM у пользователя
Процесс поиска моделей
Сначала пробуйте работать через URL — и только потом просите hf, Python или собственные скрипты.
- Найдите кандидатов среди репозиториев на Hub:
- Базовый запрос:
https://huggingface.co/models?apps=llama.cpp&sort=trending - Добавьте
search=<term>для семейства моделей - Добавьте
num_parameters=min:0,max:24Bили похожий параметр, если у пользователя есть ограничения по размеру
- Базовый запрос:
- Откройте репозиторий в режиме local-app для llama.cpp:
https://huggingface.co/<repo>?local-app=llama.cpp
- Если сниппет local-app виден — считайте его источником истины:
- скопируйте команду
llama-serverилиllama-cliбез изменений - указывайте рекомендованное квантование ровно так, как его показывает HF
- скопируйте команду
- Прочитайте тот же URL
?local-app=llama.cppкак текст страницы или HTML и извлеките раздел подHardware compatibility:- отдавайте предпочтение точным меткам квантования и размерам из него, а не обобщённым таблицам
- сохраняйте метки конкретного репозитория, например
UD-Q4_K_MилиIQ4_NL_XL - если такого раздела нет в полученном исходнике страницы, скажите об этом прямо и переходите на tree API плюс общие рекомендации по квантованию
- Запросите tree API, чтобы проверить, что реально есть в репозитории:
https://huggingface.co/api/models/<repo>/tree/main?recursive=true- оставляйте записи, где
typeравенfile, аpathзаканчивается на.gguf - используйте
pathиsizeкак источник истины для имён файлов и размеров в байтах - отделяйте квантованные чекпоинты от файлов-проекторов
mmproj-*.ggufи шардовBF16/ - используйте
https://huggingface.co/<repo>/tree/mainтолько как запасной вариант для человека
- Если сниппет local-app не читается как текст, соберите команду сами — из репозитория и выбранного квантования:
- короткий вариант выбора квантования:
llama-server -hf <repo>:<QUANT> - запасной вариант с точным файлом:
llama-server --hf-repo <repo> --hf-file <filename.gguf>
- короткий вариант выбора квантования:
- Предлагайте конвертацию из весов Transformers только если в репозитории ещё нет готовых файлов GGUF.
Быстрый старт
Установка llama.cpp
# macOS / Linux (проще всего)
brew install llama.cpp
winget install llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release
Запуск прямо из Hugging Face Hub
llama-cli -hf bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0
llama-server -hf bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0
Запуск конкретного файла GGUF из Hub
Используйте этот способ, если tree API показывает нестандартные имена файлов или точного сниппета от HF нет.
llama-server \
--hf-repo microsoft/Phi-3-mini-4k-instruct-gguf \
--hf-file Phi-3-mini-4k-instruct-q4.gguf \
-c 4096
Проверка сервера через OpenAI-совместимый API
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Write a limerick about Python exceptions"}
]
}'
Python-биндинги (llama-cpp-python)
pip install llama-cpp-python (CUDA: CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python --force-reinstall --no-cache-dir; Metal: CMAKE_ARGS="-DGGML_METAL=on" ...).
Базовая генерация
from llama_cpp import Llama
llm = Llama(
model_path="./model-q4_k_m.gguf",
n_ctx=4096,
n_gpu_layers=35, # 0 — только CPU, 99 — выгрузить всё на GPU
n_threads=8,
)
out = llm("What is machine learning?", max_tokens=256, temperature=0.7)
print(out["choices"][0]["text"])
Чат и стриминг
llm = Llama(
model_path="./model-q4_k_m.gguf",
n_ctx=4096,
n_gpu_layers=35,
chat_format="llama-3", # или "chatml", "mistral" и т.д.
)
resp = llm.create_chat_completion(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is Python?"},
],
max_tokens=256,
)
print(resp["choices"][0]["message"]["content"])
# Стриминг
for chunk in llm("Explain quantum computing:", max_tokens=256, stream=True):
print(chunk["choices"][0]["text"], end="", flush=True)
Эмбеддинги
llm = Llama(model_path="./model-q4_k_m.gguf", embedding=True, n_gpu_layers=35)
vec = llm.embed("This is a test sentence.")
print(f"Embedding dimension: {len(vec)}")
GGUF можно загрузить и прямо из Hub:
llm = Llama.from_pretrained(
repo_id="bartowski/Llama-3.2-3B-Instruct-GGUF",
filename="*Q4_K_M.gguf",
n_gpu_layers=35,
)
Выбор квантования
Сначала смотрите страницу Hub, и только потом — общие эвристики.
- Отдавайте предпочтение точному квантованию, которое HF помечает как совместимое с профилем железа пользователя.
- Для обычного чата начинайте с
Q4_K_M. - Для кода и технических задач берите
Q5_K_MилиQ6_K, если позволяет память. - При очень жёстком бюджете по RAM рассматривайте
Q3_K_M, вариантыIQ, аQ2— только если пользователь прямо просит уместиться в память в ущерб качеству. - Для мультимодальных репозиториев упоминайте
mmproj-*.ggufотдельно. Это не основной файл модели, а проектор. - Не нормализуйте метки конкретного репозитория. Если на странице написано
UD-Q4_K_M, так и указывайте —UD-Q4_K_M.
Извлечение доступных GGUF из репозитория
Если пользователь спрашивает, какие GGUF есть, возвращайте:
- имя файла
- размер файла
- метку квантования
- является ли файл основной моделью или вспомогательным проектором
Игнорируйте, если не попросили отдельно:
- README
- шарды BF16
- блобы imatrix и калибровочные артефакты
Для этого шага используйте tree API:
https://huggingface.co/api/models/<repo>/tree/main?recursive=true
Например, для репозитория unsloth/Qwen3.6-35B-A3B-GGUF страница local-app может показывать чипы квантования вроде UD-Q4_K_M, UD-Q5_K_M, UD-Q6_K и Q8_0, а tree API — точные пути к файлам вроде Qwen3.6-35B-A3B-UD-Q4_K_M.gguf и Qwen3.6-35B-A3B-Q8_0.gguf с размерами в байтах. Используйте tree API, чтобы превратить метку квантования в точное имя файла.
Шаблоны поиска
Используйте эти шаблоны URL напрямую:
https://huggingface.co/models?apps=llama.cpp&sort=trending
https://huggingface.co/models?search=<term>&apps=llama.cpp&sort=trending
https://huggingface.co/models?search=<term>&apps=llama.cpp&num_parameters=min:0,max:24B&sort=trending
https://huggingface.co/<repo>?local-app=llama.cpp
https://huggingface.co/api/models/<repo>/tree/main?recursive=true
https://huggingface.co/<repo>/tree/main
Формат вывода
При ответе на запросы поиска отдавайте предпочтение компактному структурированному результату вроде:
Repo: <repo>
Recommended quant from HF: <label> (<size>)
llama-server: <command>
Other GGUFs:
- <filename> - <size>
- <filename> - <size>
Source URLs:
- <local-app URL>
- <tree API URL>
Справочные материалы
- hub-discovery.md — работа с Hugging Face только через URL, шаблоны поиска, извлечение GGUF и сборка команд
- advanced-usage.md — спекулятивное декодирование, батчевый инференс, генерация с ограничением по грамматике, LoRA, мульти-GPU, кастомные сборки, скрипты для бенчмарков
- quantization.md — компромиссы качества при квантовании, когда использовать Q4/Q5/Q6/IQ, масштабирование по размеру модели, imatrix
- server.md — запуск сервера прямо из Hub, эндпоинты OpenAI API, деплой в Docker, балансировка нагрузки через NGINX, мониторинг
- optimization.md — многопоточность на CPU, BLAS, эвристики выгрузки на GPU, настройка батчей, бенчмарки
- troubleshooting.md — проблемы установки, конвертации, квантования, инференса и сервера, Apple Silicon, отладка
Ресурсы
- GitHub: https://github.com/ggml-org/llama.cpp
- Документация Hugging Face по GGUF и llama.cpp: https://huggingface.co/docs/hub/gguf-llamacpp
- Документация Hugging Face по Local Apps: https://huggingface.co/docs/hub/main/local-apps
- Документация Hugging Face по Local Agents: https://huggingface.co/docs/hub/agents-local
- Пример страницы local-app: https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF?local-app=llama.cpp
- Пример tree API: https://huggingface.co/api/models/unsloth/Qwen3.6-35B-A3B-GGUF/tree/main?recursive=true
- Пример поиска llama.cpp: https://huggingface.co/models?num_parameters=min:0,max:24B&apps=llama.cpp&sort=trending
- Лицензия: MIT