
> GGUF против safetensors — решает среда выполнения, а не формат▋
Одна модель в трёх контейнерах: 397 MB GGUF Q4_K_M, 1.20 GB GGUF BF16, 1.50 GB safetensors BF16. Байты — честные числа открытых данных, решает среда выполнения.
mrsaynothing· 14 октября 2026 г.· 5 мин чтения последняя проверка 2026-10-14
DuckDuckGo автодополняет gguf vs safetensors так, будто это клеточный бой двух файловых расширений. Это проверка на входе. Выбираете GGUF — открывается одна полка сред выполнения: llama.cpp, Ollama, LM Studio, Jan. Выбираете safetensors — открывается другая: transformers, vLLM, ComfyUI. Формат — это список дверей, которые откроются; всё остальное следует за ним. Ложь, которую этот текст отказывается повторять: будто бой решают числа скорости, которые никто не воспроизводил на одной и той же машине. Что открытые данные дают бесплатно — и что большинство аргументов пропускает — так это вес каждого контейнера и то, где его вообще можно открыть.
Между чем вы вообще выбираете?
GGUF — однофайловый контейнер от авторов llama.cpp, и квантование запечено в него потензорно — лестница квантования, о которой спорят все, существует только внутри этого формата. Один файл несёт веса, токенизатор и шаблон чата: файл и есть дистрибутив. Safetensors — контейнер сериализации: JSON-заголовок плюс сырые байты тензоров — и он несёт ту точность, с которой её отгрузил репозиторий обучения, обычно BF16 или FP16. Он не квантует; он хранит.
Safetensors назван в честь своей единственной задачи: чтобы при загрузке модели никто не оказался засолен pickle'ом. Pickle в Python исполняет код при распаковке; safetensors не исполняет ничего — в этом весь аргумент безопасности, и потому экосистема Hugging Face сделала его стандартом.
Взвесьте одну и ту же модель в каждом контейнере — и философии видны в байтах. 14 октября 2026 один и тот же Qwen3-0.6B отгружался как: GGUF Q4_K_M — 396,705,472 байта (397 MB) · GGUF BF16 — 1,198,182,848 байта (1.20 GB) · safetensors BF16 — 1,503,300,328 байта (1.50 GB). Квантованный контейнер держит четверть полноточного, потому что держит четверть точности — и каждое из этих чисел в одном curl -I от вашего терминала, без стендового хозяйства. Теряет ли недостающая точность качество — вопрос верности, на который байты не отвечают; статья об уровнях квантования разбирает, что отдаёт каждая ступень.
Формат — не предпочтение. Это список сред выполнения, которые откроют ваш файл.
Что говорят байты?
Честное правило для чтения открытых данных: только числа, которые данные называют, с атрибуцией, без косплея бенчей. Таблица — одна модель, три контейнера, точные байты как отгружено — проверьте сами, прежде чем доверять.
| Контейнер | Точность | Байт отгружено | Доля от полноточного |
|---|---|---|---|
| GGUF Q4_K_M | квантование 4 бита | 396,705,472 (397 MB) | 26% |
| GGUF BF16 | полная, упаковка llama.cpp | 1,198,182,848 (1.20 GB) | 80% |
| safetensors BF16 | полная, сырые тензоры | 1,503,300,328 (1.50 GB) | 100% |
проверка: curl -sIL https://huggingface.co/unsloth/Qwen3-0.6B-GGUF/resolve/main/Qwen3-0.6B-Q4_K_M.gguf | grep -i content-length → число байт, в тот же день или в любой · та же команда против файлов BF16 и safetensors
Читайте таблицу честно. 26% — вся обещанная лестницей квантования сила: четыре бита там, где было шестнадцать, на диске и в ОЗУ. Разрыв между двумя полноточными строками — 1.20 против 1.50 GB — это накладные расходы упаковки, не физика: BF16-упаковка llama.cpp хранит те же тензоры стройнее сырого дампа. Чего байты сказать не могут — скорость и качество; колонка tokens-per-second без выровненной машины за ней — форумный шум, и этот текст отказывается её печатать. Разбор llama.cpp против Ollama ударился о ту же стену с другой стороны — со стороны движка: тот же файл, та же математика, другая обёртка.
Чего открытые данные сказать не могут
Три стены, сказанные прямо. Первая: качество — Q4 против BF16 — компромисс верности, и никакое число байт его не меряет. Вторая: скорость — времена загрузки и токены в секунду принадлежат выровненному бенчу на названной машине, которого у этого текста нет, потому он не печатает ничего. Третья: масштаб — байтовые пропорции модели 0.6B сохраняют форму и на 70B, но абсолютные ожидания, которые вы почувствуете на 70B, — другая статья на другом железе.
Где каждый формат реально запускается?
Вот часть, которая решает на самом деле. GGUF открывается в llama.cpp, Ollama, LM Studio, Jan — однофайловая локальная экосистема. vLLM тоже читает GGUF — через плагин, на GPU, с оговорками. Safetensors открывается в transformers, в vLLM нативно, в ComfyUI и MLX-инструментарии Apple. Пересечение на краях показательно: Ollama — бытовой прибор, построенный на движке GGUF, — всё равно возит MLX-runner, чтобы пользователи Apple Silicon грузили веса, производные от safetensors. Даже прибор страхуется.
| У вас уже работает | Формат выберется сам | Почему |
|---|---|---|
| Ollama, LM Studio или llama-server | GGUF | Их движки едят GGUF нативно; квантованные файлы влезают на малые диски |
| Python/transformers-пайплайн | safetensors | from_pretrained — родной путь; нет шага конверсии в обслуживании |
| vLLM на GPU-сервере | safetensors | Нативно, без плагина, без оговорок GGUF — сами оговорки GGUF |
| ComfyUI или пайплайн картинок | safetensors | Диффузионная экосистема торгует чекпойнтами safetensors |
| Малый диск и малая машина | GGUF Q4_K_M | 397 MB против 1.50 GB за те же веса |
GGUF делает квантование дефолтом; safetensors делает дефолтом полную точность. Этот дефолт — большая часть решения.
Какой из них запускать у себя?
Проверьте, что уже установлено, прежде чем сверяться с любой таблицей. Если машина отзывается на ollama run, вы живёте в стране GGUF — берите файл Q4_K_M и перестаньте читать форумы. Если ваш день — Python или ваш сервировочный слой — vLLM, safetensors никогда и не был выбором; это родной язык экосистемы. Конвертация между ними возможна и почти никогда не стоит того: каждая конвертация — новое место, где веса могут тихо разойтись.
Обязательная строка честности, по-домашнему: Я прочитал открытые данные, а не прогонял их. Каждое число на этой странице — из файлов как отгружено, снято утром выхода поста — без стендового хозяйства, без косплей tokens-per-second. Что открытые данные всё же устанавливают — форму размена: четверть байтов у квантованного контейнера, две среды выполнения, почти не пересекающиеся, и дефолтная точность по обе стороны, которая тихо решает за большинство. Весь кластер — раннеры, форматы, уровни квантования, всё — проиндексирован в хабе local-LLM.
Никто никогда не менял формат ради скорости. Меняли среду выполнения ради фичи, а формат приезжал вместе с ней, как билет.
Итак, два вопроса обратно через стену: какой формат реально открывает ваша ежедневная машина — и как выглядел бы честный бенч этих трёх контейнеров на вашем железе? Назовите машину и модель в комментариях; лучше всех описанная задаст спецификацию следующего материала.
$ Похожие записи · local llm
Jujutsu v0.46: разбор — что изменилось и кому пора переезжать
Второе чтение jj, две недели спустя: v0.46.0 привозит колокацию через worktrees, рекорд прибавил 216 звёзд, а разрыв в undo вырос. Что изменилось, что ломается, кто переезжает.
2026-10-13 · 7 мин чтения

vLLM GGUF FAQ: Ten Search Questions, Answered
Ten real search questions about vLLM and GGUF — CPU support, serve syntax, quant coverage, the tokenizer trap — answered from the docs and our tested posts.
2026-10-09 · 6 мин чтения

llama.cpp vs Ollama — which one should you run?
The record read, not run: Ollama pins its llama.cpp engine at b11351 while upstream ships b11443. One is an appliance, one is the engine room.
2026-10-06 · 5 мин чтения

GGUF VRAM Calculator: Check Before You Download
Model size, quant and context in — weights, KV cache and a per-card verdict out. The GGUF VRAM calculator answers will-it-fit before the download starts.
2026-10-02 · 4 мин чтения
