Форматы
Чем открыть файл GGUF
Подробный разбор, чем открыть и запустить .gguf-файл — от Ollama и LM Studio до llama.cpp.
Скачали модель с Hugging Face или собрались запустить LLM локально — и первое, с чем сталкиваетесь, это ворох незнакомых расширений: .gguf, .safetensors, .onnx, .pt, .bin. Это не прихоть разработчиков и не разные версии одного и того же — у каждого формата файла модели ИИ своя задача: один оптимизирован под безопасное хранение весов, другой — под быстрый локальный инференс на обычном ПК, третий — под перенос модели между разными средами выполнения в продакшене. Если вы уже разбирались, чем открыть файл GGUF, эта статья — следующий шаг: разбираем всю экосистему форматов моделей ИИ целиком и помогаем выбрать нужный под конкретную задачу.
Коротко: модели ИИ хранятся в разных файловых форматах — GGUF, Safetensors, ONNX, .pt/.bin. Safetensors безопасно хранит только веса без исполнения кода и используется на Hugging Face. GGUF — формат для локального запуска LLM через Ollama и LM Studio: всё в одном файле. ONNX — переносимый граф вычислений для продакшен-инференса. .pt/.bin — классический PyTorch-pickle, может исполнять код при загрузке — избегайте непроверенных файлов.

Файл модели ИИ — это не одно значение, а обычно несколько разных типов данных, упакованных вместе или раздельно: веса (миллионы или миллиарды чисел — обученные параметры сети), архитектура (описание того, из каких слоёв состоит сеть и как они связаны) и, для языковых моделей, токенизатор (правила разбивки текста на токены, которые модель понимает на входе). Разные форматы файлов моделей ИИ решают разные части этой задачи: один формат отвечает только за безопасное хранение весов, другой упаковывает всё сразу ради удобства локального запуска, третий описывает ещё и граф вычислений для переноса между разными средами выполнения.
Множественность форматов — не историческая случайность, а следствие разных сценариев использования одной и той же модели. Обучение и раздача модели на Hugging Face, локальный чат с LLM на ноутбуке и промышленный инференс на кластере GPU в продакшене — это три разных набора требований к файлу: безопасность при обмене, компактность для потребительского железа и переносимость между фреймворками соответственно. Разобраться в этих форматах — значит понимать, какой файл модели ИИ скачивать и запускать для конкретной задачи, а не угадывать по расширению.
Если упростить, файл с весами модели — это по сути большой массив чисел с плавающей точкой (float32, float16, bfloat16 или более компактные квантованные типы), организованных в тензоры — многомерные матрицы, соответствующие слоям сети. Сами по себе веса без знания архитектуры бесполезны: нужно знать, в каком порядке применять эти матрицы, какие функции активации стоят между слоями и какого размера ожидается вход. Поэтому часть форматов (в первую очередь GGUF) хранит и веса, и метаданные об архитектуре, и токенизатор в одном файле — модель становится самодостаточной. Другие форматы (Safetensors) осознанно хранят только тензоры весов, оставляя код архитектуры в отдельном Python-пакете (например, transformers) — для обучения и экспериментов это удобнее.
Safetensors — формат хранения тензоров, который Hugging Face создала как замену старому способу сохранять модели PyTorch через Python-модуль pickle. По официальной документации Safetensors, формат спроектирован для «безопасного хранения тензоров в противовес pickle» (storing tensors safely as opposed to pickle) — это прямо отвечает на главную проблему предыдущего поколения форматов: файлы pickle способны исполнять произвольный код в момент загрузки.
Формат pickle в Python — это не просто контейнер данных, а сериализованный поток инструкций: загружая pickle-файл, интерпретатор фактически выполняет код, который воссоздаёт объекты. Если файл подменён злоумышленником, эта же механика позволяет встроить вредоносный код, который выполнится в момент вызова torch.load() — без каких-либо предупреждений для пользователя. Safetensors устроен иначе: это простой бинарный формат с заголовком-JSON (имена тензоров, их форма и тип данных) и последующим блоком сырых байтов весов. Загрузчик Safetensors просто читает числа по смещениям, которые описаны в заголовке, — исполнять код для этого не требуется в принципе, а не потому что так настроено по умолчанию.
Согласно документации Hugging Face, формат поддерживает zero-copy чтение — память с данными весов отображается напрямую, без промежуточного копирования и без разбора произвольного Python-объекта, как в pickle. Это делает загрузку Safetensors быстрее загрузки pickle-файла того же размера, хотя точный выигрыш зависит от железа и размера модели — не стоит ориентироваться на конкретные цифры ускорения без собственного замера.
Safetensors — формат по умолчанию для моделей на Hugging Face Hub: библиотеки transformers и diffusers читают и пишут его нативно, то же самое используют EleutherAI и StabilityAI для публикации своих моделей. В экосистеме генерации изображений Safetensors стал стандартом де-факто для чекпоинтов Stable Diffusion и для весов LoRA — приложения вроде ComfyUI и большинство веб-интерфейсов для диффузионных моделей ожидают именно его, а не старый .ckpt (тот же pickle под другим расширением). В 2026 году проект Safetensors перешёл под эгиду PyTorch Foundation (Linux Foundation) — независимое подтверждение того, что индустрия отказывается от pickle как формата обмена моделями.
GGUF (GPT-Generated Unified Format) — бинарный формат, разработанный в проекте llama.cpp и экосистеме GGML специально для инференса больших языковых моделей на потребительском железе. По официальной спецификации GGUF на GitHub, формат — преемник более ранних GGML, GGMF и GGJT: каждая предыдущая версия страдала от одной и той же проблемы — при изменении формата старые файлы переставали загружаться без ручной конвертации, а определить архитектуру модели и параметры токенизатора из самого файла было невозможно. GGUF решает обе проблемы: файл самодостаточен и содержит версию формата, которую загрузчик проверяет перед чтением.
Ключевая идея GGUF — упаковать в один файл всё, что нужно для запуска модели: тензоры весов, метаданные об архитектуре (число слоёв, размерность скрытого состояния, тип внимания) и словарь токенизатора. Благодаря этому не нужно отдельно искать файл конфигурации модели или устанавливать отдельный пакет для токенизации — инференс-движок открывает один .gguf-файл и получает всё необходимое. Формат спроектирован под mmap (memory-mapped) загрузку: операционная система отображает файл в память напрямую, без полного копирования в оперативную память перед стартом, — это особенно важно для моделей на десятки гигабайт на обычном ноутбуке.
GGUF широко поддерживает квантование — упаковку весов в более компактные типы данных (4-битные, 5-битные, 8-битные вместо исходных 16- или 32-битных) с разными схемами, обозначаемыми в названии файла (например, Q4_K_M, Q5_K_S, Q8_0). Квантование уменьшает размер файла модели и требования к оперативной памяти и видеопамяти в несколько раз — именно это делает возможным запуск многомиллиардных моделей на обычном игровом ПК без серверного GPU. Конкретные цифры потери качества при разном уровне квантования сильно зависят от самой модели и типа задачи — не стоит доверять общим процентам без проверки на своём сценарии; качественно же верно, что более агрессивное квантование (Q4 и ниже) экономит больше памяти ценой большего риска деградации ответов по сравнению с Q8 или исходной точностью.
GGUF — родной формат для llama.cpp и построенных на нём инструментов: Ollama и LM Studio скачивают и запускают модели именно в этом формате, он же преобладает в репозиториях квантованных версий популярных LLM на Hugging Face (ищите в названии репозитория суффикс вроде -GGUF). Если нужно просто открыть и посмотреть, что внутри такого файла, не разворачивая полноценный инференс — этому посвящён отдельный разбор: подробный разбор, чем открыть GGUF-файл.
ONNX (Open Neural Network Exchange) — открытый формат для представления моделей машинного обучения, изначально созданный как общий «язык обмена» между разными фреймворками (PyTorch, TensorFlow, scikit-learn и другие). В отличие от Safetensors, который хранит только числа весов, файл .onnx содержит граф вычислений целиком: последовательность операций (свёртки, умножения матриц, активации) вместе с их параметрами-весами, сериализованную в единое переносимое представление.
Это и есть главное структурное отличие ONNX от двух предыдущих форматов. Safetensors и GGUF описывают модель на уровне «вот тензоры весов, а код, который их применяет, живёт в отдельной библиотеке или движке». ONNX, наоборот, фиксирует сам граф операций внутри файла — модель становится независимой от исходного фреймворка, в котором она была обучена: один и тот же .onnx-файл можно запустить в средах выполнения на разных языках программирования и платформах, не имея исходного кода модели на PyTorch или TensorFlow.
Главный сценарий ONNX — промышленный инференс там, где важна переносимость и производительность: ONNX Runtime от Microsoft выполняет такие модели на CPU, GPU и специализированных ускорителях, NVIDIA TensorRT дополнительно оптимизирует граф под конкретные GPU, а на edge-устройствах (мобильные чипы, встраиваемые системы) ONNX часто оказывается единственным практичным вариантом развернуть модель без полноценного Python-окружения фреймворка, в котором она обучалась.
Файлы с расширениями .pt, .pth и часто .bin — это результат вызова torch.save() в PyTorch. Технически это тот самый pickle-формат из раздела про Safetensors выше: Python сериализует объект (обычно словарь state_dict с тензорами весов) в бинарный поток, который затем десериализуется вызовом torch.load().
Между .pt и .pth нет никакой технической разницы: оба расширения создаются одной и той же функцией torch.save() и читаются одной и той же torch.load(). Выбор конкретного расширения — вопрос договорённости внутри проекта или привычки автора, а не какого-то различия в формате данных. Расширение .bin в репозиториях моделей Hugging Face исторически обозначало тот же pickle-based формат PyTorch, до того как Safetensors стал стандартом по умолчанию — поэтому в старых или не обновлённых репозиториях моделей иногда всё ещё встречается pytorch_model.bin рядом с новым model.safetensors.
Поскольку это pickle-архивы, вызов torch.load() на файле из ненадёжного источника может исполнить произвольный код, встроенный в сериализованные данные, — ровно та же механика, из-за которой Hugging Face создала Safetensors. Скачивая веса модели не с проверенного репозитория (например, официальной страницы модели на Hugging Face), стоит по возможности предпочитать версию в .safetensors, если она доступна, а pickle-based файлы рассматривать как потенциально опасное вложение — по тому же принципу, что и любой исполняемый файл из непроверенного источника. Общий список того, какие расширения файлов считаются опасными и почему, — в статье какие расширения файлов опасны.
| Формат | Что хранит | Безопасность | Скорость загрузки | Для чего использовать |
|---|---|---|---|---|
.safetensors | Только тензоры весов + JSON-заголовок | Высокая — не исполняет код при загрузке | Быстрая, zero-copy | Хранение и раздача на Hugging Face, обучение, Stable Diffusion/ComfyUI |
.gguf | Веса + метаданные архитектуры + токенизатор, часто квантованные | Высокая — не pickle, не исполняет код | Быстрая, mmap-загрузка | Локальный запуск LLM: Ollama, LM Studio, llama.cpp |
.onnx | Граф вычислений целиком + веса | Высокая — не pickle | Зависит от среды выполнения | Продакшен-инференс, переносимость между фреймворками и платформами |
.pt / .pth / .bin | Сериализованный pickle-объект (обычно state_dict) | Низкая для непроверенных файлов — может исполнять код | Медленнее Safetensors при том же размере | Нативная работа и эксперименты внутри PyTorch, только из доверенных источников |
Правильный ответ почти всегда зависит не от того, «какой формат лучше в вакууме», а от конкретного сценария использования модели.
Если задача — просто поговорить с моделью на своём компьютере без серверной инфраструктуры, GGUF — очевидный выбор: он создан именно под этот сценарий, поддерживает квантование под слабое железо и загружается в Ollama или LM Studio буквально парой кликов или одной командой.
Для работы в экосистеме Hugging Face — дообучение, инференс через transformers, эксперименты в Python — Safetensors безопаснее и часто быстрее загружается, чем pickle-based альтернативы того же размера. Это формат, в котором подавляющее большинство современных моделей публикуется по умолчанию.
Если модель нужно развернуть в среде, которая не совпадает с той, где её обучали (другой язык программирования бэкенда, мобильное или встраиваемое устройство, специализированный ускоритель), ONNX даёт переносимость графа вычислений между средами выполнения — ONNX Runtime, TensorRT и аналоги умеют с ним работать напрямую.
Иногда расширение файла модели переименовано, потеряно при пересылке или просто неинформативно (например, файл называется model.bin, но непонятно, pickle это или что-то другое). В таком случае нужно смотреть на реальную структуру файла — сигнатуру и внутренние байты, а не доверять расширению. Подробный разбор методов — в статье как определить формат файла без расширения, а быстрый практический способ — инструмент для определения формата файла, который определяет тип по сигнатуре прямо в браузере, без загрузки файла на сервер.
Файлы моделей ИИ нередко весят гигабайты, а повреждение даже нескольких байт при скачивании или передаче по сети может привести к ошибке загрузки или, хуже, к модели, которая работает некорректно без явной ошибки. Если издатель модели публикует контрольную сумму (обычно SHA-256) рядом с файлом, сверьте её после скачивания — так же, как при проверке любого крупного файла. Удобно это сделать инструментом: проверить контрольную сумму файла.
Safetensors хранит только тензоры весов и используется для обучения и раздачи моделей (в первую очередь на Hugging Face); GGUF — самодостаточный формат для инференса на потребительском железе (Ollama, LM Studio), который включает веса, метаданные архитектуры и токенизатор в одном файле.
Нет, это бинарный формат — текстовый редактор покажет нечитаемые байты. Нужен инференс-движок (llama.cpp, Ollama, LM Studio); подробный разбор — в статье «Чем открыть файл GGUF».
Потенциально да: это pickle-архивы PyTorch, которые могут исполнять произвольный код при загрузке через torch.load(), если файл получен из непроверенного источника. Если доступна версия в .safetensors — предпочтительнее она.
ONNX хранит и граф вычислений, и веса, что делает его переносимым между разными средами выполнения (ONNX Runtime, TensorRT); Safetensors хранит только веса, а код, который их применяет, остаётся в отдельной библиотеке.
Технической разницы нет: оба создаются torch.save() и читаются torch.load() одинаково — расширение выбирает конкретный проект или автор по договорённости, а не формат как таковой.
GGUF — он создан для CPU/GPU-инференса на потребительском железе, поддерживает квантование под ограниченную память и запускается в Ollama и LM Studio «из коробки».
Проверить реальную структуру файла по сигнатуре, а не по расширению — см. статью «Как определить формат файла без расширения» и одноимённый инструмент на сайте.