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 или собственные скрипты.

  1. Найдите кандидатов среди репозиториев на Hub:
    • Базовый запрос: https://huggingface.co/models?apps=llama.cpp&sort=trending
    • Добавьте search=<term> для семейства моделей
    • Добавьте num_parameters=min:0,max:24B или похожий параметр, если у пользователя есть ограничения по размеру
  2. Откройте репозиторий в режиме local-app для llama.cpp:
    • https://huggingface.co/<repo>?local-app=llama.cpp
  3. Если сниппет local-app виден — считайте его источником истины:
    • скопируйте команду llama-server или llama-cli без изменений
    • указывайте рекомендованное квантование ровно так, как его показывает HF
  4. Прочитайте тот же URL ?local-app=llama.cpp как текст страницы или HTML и извлеките раздел под Hardware compatibility:
    • отдавайте предпочтение точным меткам квантования и размерам из него, а не обобщённым таблицам
    • сохраняйте метки конкретного репозитория, например UD-Q4_K_M или IQ4_NL_XL
    • если такого раздела нет в полученном исходнике страницы, скажите об этом прямо и переходите на tree API плюс общие рекомендации по квантованию
  5. Запросите 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 только как запасной вариант для человека
  6. Если сниппет local-app не читается как текст, соберите команду сами — из репозитория и выбранного квантования:
    • короткий вариант выбора квантования: llama-server -hf <repo>:<QUANT>
    • запасной вариант с точным файлом: llama-server --hf-repo <repo> --hf-file <filename.gguf>
  7. Предлагайте конвертацию из весов 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, отладка

Ресурсы

перевод и редактура:

обновлено

⌕ ESC