← Назад к курсу

Подробное пособие: форматы моделей LLM и движки для их запуска

1. Введение

Развёртывание больших языковых моделей (LLM) в реальном проекте требует решения двух задач:

  1. Хранения модели – какие форматы файлов используются для сериализации весов, архитектурных метаданных и вспомогательных данных.
  2. Выполнения (inference) – какой движок инференса будет преобразовывать сохранённый формат в оптимизированный runtime‑поток, управлять памятью, распараллеливать вычисления и поддерживать требуемый уровень производительности.

В этом пособии рассматриваются основные форматы модели и главные inference‑движки, их преимущества/ограничения, а также практические рекомендации по выбору для разных сценариев.


2. Форматы модели

Формат Описание Преимущества Ограничения Наиболее распространённые использован ные окружения
Framework‑native (.pt, .pth, .npz) Встроенный сериализатор PyTorch, JAX, TensorFlow. Сохраняет веса и граф вычислений. • Полный набор метаданных.
• Прямой доступ внутри экосистемы (PyTorch → torch.load).
• Файлы могут быть тяжёлыми.
• Сериализация через pickle создаёт потенциальные уязвимости.
Research‑проекты, внутренние прототипы, обучение внутри одной фреймворк‑среды.
Safetensors Текстовый JSON‑метаданные + бинарные тензоры. Не использует pickle. • Безопасность (невозможно выполнить произвольный код при загрузке).
• Быстрый загрузчик.
• Поддержка lazy‑loading и кросс‑языковой совместимости.
• Не поддерживает все расширения (например, некоторые пользовательские атрибуты). Стандартный формат репозитория Hugging Face Hub; популярен для обмена моделями.
GGUF / GGML Специальный бинарный формат, созданный для llama.cpp и совместимых движков. Поддерживает множественные схемы квантования (Q4_K_M, IQ4_XS, …). • Компактность (до 90 % экономии размера).
• Гибкая квантование → более низкие требования к RAM/CPU.
• Lazy‑loading через memory‑mapping.
• Требует предварительного конвертирования из другого формата.
• Некоторые продвинутые операции могут требовать fallback‑моделей.
Локальный инференс, edge‑устройства, приложения, где важна экономия памяти.
ONNX Открытый стандарт от Microsoft+Facebook. Содержит граф вычислений + веса в виде граф‑операций. • Универсальный «мост» между фреймворками.
• Поддержка оптимизаций через ONNX Runtime (кросс‑платформенно).
• Некоторые трансформеры‑специфичные операции требуют обходных путей.
• При работе с высокими форматами может потребоваться дополнительная конвертация.
Переходные сценарии, когда модель обучалась в одной фреймворковой экосистеме, но будет выполняться в другой (PyTorch ↔️ TensorFlow ↔️ Caffe2).
TensorRT Engine (.plan, .engine) Предварительно скомпилированный набор ускоренных kernels для NVIDIA GPU (FP8, INT8, FP16, INT4). • Максимальная производительность на GPU NVIDIA.
• Низкая латентность (мл Gedanken).
• Поддержка динамических batch‑ов, самым гибким управлением памятью.
• Зависит от конкретной архитектуры GPU и драйвера.
• Требует отдельный этап компиляции.
• Не переносима между разными GPU‑архитектурами без пересборки.
Продакшен‑развёртывание на серверах с GPU (A100, H100, RTX 4090).

Кратко: для исследований удобно использовать native‑форматы; для безопасного распределения – safetensors; для локального использования – GGUF; для универсального переноса – ONNX; для максимального ускорения на NVIDIA – TensorRT Engine.


3. Движки инференса (inference engines)

Движок Ключевые возможности Поддерживаемые форматы Типичный сценарий Примечания
vLLM High‑throughput (до 2800 токен/сек); PageAttention; Dynamic Batching; Speculative Decoding; Tensor‑Parallelism; Поддержка INT4/INT8/FP8. GGUF, safetensors, PyTorch (через конвертацию), ONNX (экспериментально) Масштабные сервисы, обслуживающие тысячи одновременных запросов; облачные inference‑endpoints. Публикация от 2024 года; активно поддерживается сообществом.
TensorRT‑LLM Оптимизированный C++ runtime для NVIDIA GPU; слой‑специфичные ядра; поддержка AWQ, GPT‑Q, INT8/FP8; Интеграция с Triton Inference Server. TensorRT Engine, ONNX (через конвертер), safetensors (через Triton) Производственные сервисы на H100/A100 с требованием микрOLAT‑latency; чат‑боты в реальном времени. Требует NVIDIA‑драйверы ≥ 525, CUDA 12+.
Hugging Face Text Generation Inference (TGI) Production‑ready OpenAPI‑compatible; Continuous Batching; OpenTelemetry; Prometheus‑метрики; Поддержка множества бекендов (TensorRT‑LLM, vLLM, llama.cpp). Safetensors (основной), ONNX, TensorRT Engine (через бекенд) Универсальная платформа для быстрого развертывания в экосистеме Hugging Face; подходит как для CPU, так и для GPU. Включает веб‑UI и REST‑API «как у OpenAI».
SGLang RadixAttention; Paged KV‑Cache; Continuous Batching; Поддержка JSON‑грамматок и внешних функций; Высокая пропускная способность на A100. Safetensors, ONNX, TensorRT Engine (через Rust‑backend) Высоконагруженные сервисы, где важна простота интеграции и гибкость запросов. Активен в проектах, требующих детального контроля генерируемого текста.
llama.cpp / GGUF Чистый C/C++ без зависимостей; поддержка CPU, CUDA, ROCm, Metal, Vulkan; множество схем квантов. GGUF (основной) Локальный инференс на обычных ноутбуках, edge‑устройствах, исследования без GPU. Один бинарный файл → мгновенный старт, минимум зависимостей.
DeepSpeed‑FastGen Интеграция с DeepSpeed; Sharding, ZeRO‑optimizations; Dynamic Split‑Fuse; 3‑D/4‑D параллелизм. PyTorch (.pt/.pth), ONNX (через конвертацию) Тренировка‑инференс гибридных склей‑моделей; огромные модели (65 B +). Чаще используется в сочетании с DeepSpeed‑training.
ONNX Runtime Универсальный движок для всех ONNX‑моделей; поддержка CPU, GPU, DirectML, TensorRT‑ExecutionProvider; динамический batch‑optimization. ONNX Приложения, требующие независимости от конкретного фреймворка; deployment на разных платформах (Windows, Linux, ARM). Позволяет легко переключаться между CPU и GPU без перекомпиляции модели.
LMDeploy TurboMind‑backend (высокая пропускная способность); поддержка INT4/AWQ; KV‑cache‑optimizations; простое развертывание через одну команду. Safetensors, ONNX, TensorRT Engine (через конвертер) Скоростные сервисы на NVIDIA GPU, где важен throughput > latency. Часто используется в китайской экосистеме (Alibaba).

4. Сравнительный анализ

4.1. Таблица характеристик

Критерий vLLM TensorRT‑LLM TGI SGLang llama.cpp DeepSpeed‑FastGen ONNX Runtime LMDeploy
Пропускная способность ★★★★★ ★★★★☆ ★★★★☆ ★★★★☆ ★★☆☆☆ ★★★★☆ ★★☆☆☆ ★★★★☆
Латентность (TTFT) ★★★☆☆ ★★★★★ ★★★★☆ ★★★★☆ ★★★★★ ★★★☆☆ ★★★★☆ ★★★★☆
Квантование AWQ, GPTQ, INT4/INT8, FP8 FP8, INT8, INT4, AWQ bitsandbytes, GPT‑Q FP4/FP8, INT4 Q4_K_M, IQ4_XS, … GPTQ, AWQ, INT8 FP16, INT8 (fallback) INT4/AWQ
Аппаратная зависимость NVIDIA, AMD, CPU Только NVIDIA CPU/GPU/TPU NVIDIA, AMD, CPU CPU/GPU (много backends) NVIDIA, AMD CPU/GPU NVIDIA
Поддержка Tensor Parallel Да Да Да Да Ограниченно Да Нет Да
Простота интеграции Средняя (Python API) Сложная (компиляция) Высокая (Docker, API) Средняя (Rust) Очень простая (один бинарник) Средняя Высокая (Python) Средняя
Enterprise‑фичи Мониторинг, multi‑model Triton‑integration OpenTelemetry, Prometheus Поддержка функций Нет DeepSpeed‑MII Метрики, динамический batch Авто‑квантование, планировщик

4.2. Критерии выбора

Сценарий Наиболее подходящий движок Формат модели Пояснение
Локальная работа на CPU llama.cpp (через GGUF) GGUF Минимум зависимостей, возможность квантования под 1 GB RAM, работает полностью офлайн.
Высокий throughput в облаке (тысячи запросов/сек) vLLM GGUF / safetensors PageAttention + dynamic batching обеспечивает >2 000 токен/сек.
Низкая латентность (мл) на GPU NVIDIA TensorRT‑LLM TensorRT Engine Специализированные ядра дают суб‑50 мс ответов даже для 70‑B моделей.
Универсальное решение с OpenAI‑совместимым API TGI (можно подключить vLLM или TensorRT‑LLM как бекенд) Safetensors REST‑API, мониторинг, OpenTelemetry – готово к продакшену.
Сложные бизнес‑процессы, требуются грамматочные функции SGLang Safetensors / ONNX RadixAttention, поддержка JSON‑грамматок и пользовательских функций.
Обслуживание гигантских моделей (65 B +) в распределённом кластере DeepSpeed‑FastGen PyTorch / ONNX ZeRO‑sharding + tensor‑parallel оптимизации.
Кросс‑платформенный inference без привязки к фреймворку ONNX Runtime ONNX Поддержка Windows, Linux, ARM, Metal, DirectML – идеально для edge‑устройств.
Быстрый прототип на обычном ноутбуке llama.cpp GGUF Доступен в виде готового бинарника, не требует Python‑окружения.

5. Практические сценарии использования

5.1. Локальный запуск модели LLaMA‑3 8B на CPU

  1. Скачивание: wget https://huggingface.co/meta-llama/Llama-3-8B/resolve/main/model.pth.
  2. Конвертация в GGUF:
    python convert_hf_to_gguf.py --input model.pth --output llama3-8b.Q4_K_M.gguf --quantize Q4_K_M
    
  3. Запуск:
    ./main -m llama3-8b.Q4_K_M.gguf -p "Какая погода сегодня?"
    

Преимущества: Нет необходимости в GPU, потребление RAM ≈ 4 GB, быстрый старт.

5.2. Высокопроизводительный сервис чат‑бота на базе Llama‑2 70B

  1. Модель: Скачивание safetensors‑версии Llama-2-70B.safetensors.
  2. Создание TensorRT‑engine:
    trtllm-build \
      --model_dir /path/to/llama2-70b \
      --engine_dir /output/engine \
      --max_batch_size 8 \
      --max_input_len 1024 \
      --max_output_len 256 \
      --dtype fp8 \
      --quantization awq
    
  3. Развёртывание через Triton Inference Server с бекендом tensorrt_llm.
  4. API‑запрос → ответ < 60 мс.
    Преимущества: Минимальная латентность, масштабируемость до тысяч одновременных запросов, поддержка FP8/AWQ.

5.3. Исследовательский эксперимент с новыми квантованиями

  1. Сохранить модель в native‑формате torch.save(model.state_dict(), "model.pt").
  2. Конвертировать в ONNX:
    torch.onnx.export(model, dummy_input, "model.onnx",
                      opset_version=17, verbose=False)
    
  3. Запуск через vLLM с флагом --dtype fp16 и измерение throughput:
    python benchmark.py --model model.onnx --dtype fp16 --num_prompts 1000
    

Цель: Сравнить влияние разных схем квантования (FP16, INT8, INT4) на пропускную способность и потребление памяти.


6. Выводы

  • Формат модели определяет, как её параметры хранятся и какие метаданные доступны. Наиболее практичные сегодня: Safetensors (безопасность + скорость), GGUF (универсальность + возможность лёгкой квантования), ONNX (универсальный мост) и TensorRT Engine (максимальная производительность на NVIDIA GPU).
  • Выбор inference‑движка полностью зависит от:
    • объёма запросов (throughput),
    • требуемой латентности,
    • аппаратных ресурсов (CPU vs GPU),
    • уровня операционной сложности и требований к продакшен‑модульности.
  • Для массового развертывания в облаке или на серверах с GPU optimal решения – vLLM, TensorRT‑LLM и TGI.
  • Для локального прототипирования или ограниченных ресурсов лучше подходят llama.cpp (GGUF) и ONNX Runtime.
  • При выборе квантования следует оценивать компромисс между экономией памяти и падением качества генерируемого текста; типичные схемы – Q4_K_M / IQ4_XS (CPU), AWQ / GPT‑Q (GPU), INT8/FP8 (TensorRT).

7. Полезные ссылки (актуальны на 30.01.2026)

Наименование Ссылка
1 Choosing the Right Format for Your AI Model — Google Cloud https://discuss.google.dev/t/choosing-the-right-format-for-your-ai-model-a-comprehensive-guide-to-ai-inference-formats/276691
2 TensorRT‑LLM — High‑Performance Inference Engine — NVIDIA https://developer.nvidia.com/tensorrtllm
3 LLM Inference Providers — Medium (Nimrita Koul) https://medium.com/@nimritakoul01/llm-inference-providers-7b374695a0a0
4 TensorRT‑LLM vs vLLM vs Hugging Face TGI vs LMDeploy — NLP Cloud https://nlpcloud.com/genai-inference-engines-tensorrt-llm-vs-vllm-vs-hugging-face-tgi-vs-lmdeploy.html
5 Benchmark of LLM inference engines — Nurbol Sakenov https://nurbolsakenov.com/inference-engines-benchmark/
6 Common AI Model Formats — Hugging Face Blog https://huggingface.co/blog/ngxson/common-ai-model-formats
7 Introducing multi‑backends (TRT‑LLM, vLLM) support for Text Generation Inference — Hugging Face Blog https://huggingface.co/blog/tgi-multi-backend
8 Text Generation Inference — Hugging Face Documentation https://huggingface.co/docs/text-generation-inference/en/index
9 GGUF — vLLM Documentation https://docs.vllm.ai/en/v0.6.0/getting_started/examples/gguf_inference.html
10 Models compatible with the GGUF library — Hugging Face https://huggingface.co/models?library=gguf
11 Llama.cpp Repository https://github.com/ggerganov/llama.cpp
12 Safetensors — Hugging Face Docs https://huggingface.co/docs/safetensors/en/index
13 ONNX — Official Site https://onnx.ai/
14 LMDeploy — Alibaba Compression Team https://github.com/alibaba/LMDeploy

Как использовать это пособие

  1. Определите цель (local CPU, cloud throughput, low‑latency GPU).
  2. Выберите формат модели, соответствующий выбранному сценарию.
  3. Подберите движок из таблицы 4.1, проверяя поддерживаемый формат.
  4. Следуйте инструкциям из раздела 5 для конвертации, построения engine и запуска.
  5. Мониторьте метрики (throughput, latency, память) и, при необходимости, переходите к оптимизации (квантование, batch‑size, tensor‑parallel).