Перейти к основному содержимому

Llama Cpp

Локальный инференс GGUF через llama.cpp + поиск моделей на Hugging Face Hub.

Метаданные навыка​

ИсточникВстроенный (устанавливается по умолчанию)
Путь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​

к сведению

Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.

llama.cpp + GGUF

Используйте этот навык для локального инференса GGUF, выбора квантизации или поиска репозиториев на Hugging Face для llama.cpp.

Когда использовать​

  • Запуск локальных моделей на CPU, Apple Silicon, CUDA, ROCm или Intel GPU
  • Поиск подходящего 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. Откройте репозиторий в представлении локального приложения llama.cpp:
    • https://huggingface.co/<repo>?local-app=llama.cpp
  3. Считайте сниппет локального приложения источником истины, если он виден:
    • скопируйте точную команду llama-server или llama-cli
    • сообщите рекомендуемый квантизатор в точности так, как его показывает Hugging Face
  4. Прочитайте ту же страницу ?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. Если сниппет локального приложения не виден как текст, восстановите команду из репозитория и выбранного квантизатора:
    • сокращённый выбор квантизатора: 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 показывает нестандартные имена файлов или точный сниппет Hugging Face отсутствует.

llama-server \
--hf-repo microsoft/Phi-3-mini-4k-instruct-gguf \
--hf-file Phi-3-mini-4k-instruct-q4.gguf \
-c 4096

Проверка сервера, совместимого с OpenAI​

curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Напишите лимерик об исключениях в Python"}
]
}'

Привязки 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 для выгрузки всего
n_threads=8,
)

out = llm("Что такое машинное обучение?", 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": "Вы — полезный ассистент."},
{"role": "user", "content": "Что такое Python?"},
],
max_tokens=256,
)
print(resp["choices"][0]["message"]["content"])

# Стриминг
for chunk in llm("Объясните квантовые вычисления:", 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("Это тестовое предложение.")
print(f"Размерность эмбеддинга: {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, затем — общие эвристики.

  • Отдавайте предпочтение точному квантизатору, который Hugging Face помечает как совместимый с профилем оборудования пользователя.
  • Для обычного чата начинайте с 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, страница локального приложения может показывать чипы квантизаторов, такие как 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>
Рекомендуемый квантизатор от HF: <label> (<size>)
llama-server: <command>
Другие GGUF:
- <filename> - <size>
- <filename> - <size>
URL-источники:
- <URL локального приложения>
- <URL tree API>

Ссылки​

  • hub-discovery.md — URL-ориентированные процессы работы с Hugging Face, шаблоны поиска, извлечение GGUF и восстановление команд
  • advanced-usage.md — спекулятивное декодирование, пакетный инференс, грамматически ограниченная генерация, LoRA, multi-GPU, пользовательские сборки, скрипты бенчмарков
  • quantization.md — компромиссы качества квантизации, когда использовать Q4/Q5/Q6/IQ, масштабирование размера модели, imatrix
  • server.md — запуск сервера напрямую с Hub, конечные точки API OpenAI, развёртывание в Docker, балансировка нагрузки NGINX, мониторинг
  • optimization.md — многопоточность CPU, BLAS, эвристики выгрузки на GPU, настройка пакетов, бенчмарки
  • troubleshooting.md — проблемы установки/конвертации/квантизации/инференса/сервера, Apple Silicon, отладка

Ресурсы​