Форматы · Искусственный интеллект

Форматы файлов моделей ИИ: GGUF, Safetensors, ONNX и .pt — в чём разница

Скачали модель с 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, может исполнять код при загрузке — избегайте непроверенных файлов.

Опубликовано: 21 октября 2026 Редакция Loadfile Чтение 13 мин
Форматы файлов моделей ИИ: GGUF, Safetensors, ONNX и .pt
Содержание
  1. Что такое файл модели ИИ и почему форматов так много
  2. Safetensors — безопасный стандарт Hugging Face
  3. GGUF — формат для локального запуска LLM
  4. ONNX — переносимый формат для продакшена
  5. .pt, .pth, .bin — классические файлы PyTorch
  6. Сравнительная таблица форматов
  7. Какой формат выбрать для вашей задачи
  8. Как проверить и сконвертировать файл модели
  9. Вопросы и ответы

Что такое файл модели ИИ и почему форматов так много

Файл модели ИИ — это не одно значение, а обычно несколько разных типов данных, упакованных вместе или раздельно: веса (миллионы или миллиарды чисел — обученные параметры сети), архитектура (описание того, из каких слоёв состоит сеть и как они связаны) и, для языковых моделей, токенизатор (правила разбивки текста на токены, которые модель понимает на входе). Разные форматы файлов моделей ИИ решают разные части этой задачи: один формат отвечает только за безопасное хранение весов, другой упаковывает всё сразу ради удобства локального запуска, третий описывает ещё и граф вычислений для переноса между разными средами выполнения.

Множественность форматов — не историческая случайность, а следствие разных сценариев использования одной и той же модели. Обучение и раздача модели на Hugging Face, локальный чат с LLM на ноутбуке и промышленный инференс на кластере GPU в продакшене — это три разных набора требований к файлу: безопасность при обмене, компактность для потребительского железа и переносимость между фреймворками соответственно. Разобраться в этих форматах — значит понимать, какой файл модели ИИ скачивать и запускать для конкретной задачи, а не угадывать по расширению.

Веса, архитектура, токенизатор — что внутри файла модели

Если упростить, файл с весами модели — это по сути большой массив чисел с плавающей точкой (float32, float16, bfloat16 или более компактные квантованные типы), организованных в тензоры — многомерные матрицы, соответствующие слоям сети. Сами по себе веса без знания архитектуры бесполезны: нужно знать, в каком порядке применять эти матрицы, какие функции активации стоят между слоями и какого размера ожидается вход. Поэтому часть форматов (в первую очередь GGUF) хранит и веса, и метаданные об архитектуре, и токенизатор в одном файле — модель становится самодостаточной. Другие форматы (Safetensors) осознанно хранят только тензоры весов, оставляя код архитектуры в отдельном Python-пакете (например, transformers) — для обучения и экспериментов это удобнее.

Safetensors — безопасный стандарт Hugging Face

Safetensors — формат хранения тензоров, который Hugging Face создала как замену старому способу сохранять модели PyTorch через Python-модуль pickle. По официальной документации Safetensors, формат спроектирован для «безопасного хранения тензоров в противовес pickle» (storing tensors safely as opposed to pickle) — это прямо отвечает на главную проблему предыдущего поколения форматов: файлы pickle способны исполнять произвольный код в момент загрузки.

Почему Safetensors безопаснее pickle (без исполнения кода)

Формат pickle в Python — это не просто контейнер данных, а сериализованный поток инструкций: загружая pickle-файл, интерпретатор фактически выполняет код, который воссоздаёт объекты. Если файл подменён злоумышленником, эта же механика позволяет встроить вредоносный код, который выполнится в момент вызова torch.load() — без каких-либо предупреждений для пользователя. Safetensors устроен иначе: это простой бинарный формат с заголовком-JSON (имена тензоров, их форма и тип данных) и последующим блоком сырых байтов весов. Загрузчик Safetensors просто читает числа по смещениям, которые описаны в заголовке, — исполнять код для этого не требуется в принципе, а не потому что так настроено по умолчанию.

i
Zero-copy и скорость

Согласно документации Hugging Face, формат поддерживает zero-copy чтение — память с данными весов отображается напрямую, без промежуточного копирования и без разбора произвольного Python-объекта, как в pickle. Это делает загрузку Safetensors быстрее загрузки pickle-файла того же размера, хотя точный выигрыш зависит от железа и размера модели — не стоит ориентироваться на конкретные цифры ускорения без собственного замера.

Где используется: Hugging Face, Stable Diffusion, ComfyUI

Safetensors — формат по умолчанию для моделей на Hugging Face Hub: библиотеки transformers и diffusers читают и пишут его нативно, то же самое используют EleutherAI и StabilityAI для публикации своих моделей. В экосистеме генерации изображений Safetensors стал стандартом де-факто для чекпоинтов Stable Diffusion и для весов LoRA — приложения вроде ComfyUI и большинство веб-интерфейсов для диффузионных моделей ожидают именно его, а не старый .ckpt (тот же pickle под другим расширением). В 2026 году проект Safetensors перешёл под эгиду PyTorch Foundation (Linux Foundation) — независимое подтверждение того, что индустрия отказывается от pickle как формата обмена моделями.

GGUF — формат для локального запуска LLM

GGUF (GPT-Generated Unified Format) — бинарный формат, разработанный в проекте llama.cpp и экосистеме GGML специально для инференса больших языковых моделей на потребительском железе. По официальной спецификации GGUF на GitHub, формат — преемник более ранних GGML, GGMF и GGJT: каждая предыдущая версия страдала от одной и той же проблемы — при изменении формата старые файлы переставали загружаться без ручной конвертации, а определить архитектуру модели и параметры токенизатора из самого файла было невозможно. GGUF решает обе проблемы: файл самодостаточен и содержит версию формата, которую загрузчик проверяет перед чтением.

Один файл = веса + метаданные + токенизатор

Ключевая идея GGUF — упаковать в один файл всё, что нужно для запуска модели: тензоры весов, метаданные об архитектуре (число слоёв, размерность скрытого состояния, тип внимания) и словарь токенизатора. Благодаря этому не нужно отдельно искать файл конфигурации модели или устанавливать отдельный пакет для токенизации — инференс-движок открывает один .gguf-файл и получает всё необходимое. Формат спроектирован под mmap (memory-mapped) загрузку: операционная система отображает файл в память напрямую, без полного копирования в оперативную память перед стартом, — это особенно важно для моделей на десятки гигабайт на обычном ноутбуке.

Квантование в GGUF (Q4, Q5, Q8)

GGUF широко поддерживает квантование — упаковку весов в более компактные типы данных (4-битные, 5-битные, 8-битные вместо исходных 16- или 32-битных) с разными схемами, обозначаемыми в названии файла (например, Q4_K_M, Q5_K_S, Q8_0). Квантование уменьшает размер файла модели и требования к оперативной памяти и видеопамяти в несколько раз — именно это делает возможным запуск многомиллиардных моделей на обычном игровом ПК без серверного GPU. Конкретные цифры потери качества при разном уровне квантования сильно зависят от самой модели и типа задачи — не стоит доверять общим процентам без проверки на своём сценарии; качественно же верно, что более агрессивное квантование (Q4 и ниже) экономит больше памяти ценой большего риска деградации ответов по сравнению с Q8 или исходной точностью.

Где используется: Ollama, LM Studio, llama.cpp

GGUF — родной формат для llama.cpp и построенных на нём инструментов: Ollama и LM Studio скачивают и запускают модели именно в этом формате, он же преобладает в репозиториях квантованных версий популярных LLM на Hugging Face (ищите в названии репозитория суффикс вроде -GGUF). Если нужно просто открыть и посмотреть, что внутри такого файла, не разворачивая полноценный инференс — этому посвящён отдельный разбор: подробный разбор, чем открыть GGUF-файл.

ONNX — переносимый формат для продакшена

ONNX (Open Neural Network Exchange) — открытый формат для представления моделей машинного обучения, изначально созданный как общий «язык обмена» между разными фреймворками (PyTorch, TensorFlow, scikit-learn и другие). В отличие от Safetensors, который хранит только числа весов, файл .onnx содержит граф вычислений целиком: последовательность операций (свёртки, умножения матриц, активации) вместе с их параметрами-весами, сериализованную в единое переносимое представление.

Граф вычислений + веса: чем это отличается от Safetensors/GGUF

Это и есть главное структурное отличие ONNX от двух предыдущих форматов. Safetensors и GGUF описывают модель на уровне «вот тензоры весов, а код, который их применяет, живёт в отдельной библиотеке или движке». ONNX, наоборот, фиксирует сам граф операций внутри файла — модель становится независимой от исходного фреймворка, в котором она была обучена: один и тот же .onnx-файл можно запустить в средах выполнения на разных языках программирования и платформах, не имея исходного кода модели на PyTorch или TensorFlow.

Где используется: ONNX Runtime, TensorRT, edge-устройства

Главный сценарий ONNX — промышленный инференс там, где важна переносимость и производительность: ONNX Runtime от Microsoft выполняет такие модели на CPU, GPU и специализированных ускорителях, NVIDIA TensorRT дополнительно оптимизирует граф под конкретные GPU, а на edge-устройствах (мобильные чипы, встраиваемые системы) ONNX часто оказывается единственным практичным вариантом развернуть модель без полноценного Python-окружения фреймворка, в котором она обучалась.

.pt, .pth, .bin — классические файлы PyTorch

Файлы с расширениями .pt, .pth и часто .bin — это результат вызова torch.save() в PyTorch. Технически это тот самый pickle-формат из раздела про Safetensors выше: Python сериализует объект (обычно словарь state_dict с тензорами весов) в бинарный поток, который затем десериализуется вызовом torch.load().

Почему .pt и .pth — это один и тот же pickle-формат

Между .pt и .pth нет никакой технической разницы: оба расширения создаются одной и той же функцией torch.save() и читаются одной и той же torch.load(). Выбор конкретного расширения — вопрос договорённости внутри проекта или привычки автора, а не какого-то различия в формате данных. Расширение .bin в репозиториях моделей Hugging Face исторически обозначало тот же pickle-based формат PyTorch, до того как Safetensors стал стандартом по умолчанию — поэтому в старых или не обновлённых репозиториях моделей иногда всё ещё встречается pytorch_model.bin рядом с новым model.safetensors.

Риск исполнения кода при загрузке непроверенного .pt-файла

!
.pt/.pth/.bin из непроверенного источника — потенциально опасны

Поскольку это 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, только из доверенных источников

Какой формат модели ИИ выбрать?

Правильный ответ почти всегда зависит не от того, «какой формат лучше в вакууме», а от конкретного сценария использования модели.

Запускаете LLM локально (Ollama/LM Studio) → GGUF

Если задача — просто поговорить с моделью на своём компьютере без серверной инфраструктуры, GGUF — очевидный выбор: он создан именно под этот сценарий, поддерживает квантование под слабое железо и загружается в Ollama или LM Studio буквально парой кликов или одной командой.

Скачиваете модель с Hugging Face / обучаете → Safetensors

Для работы в экосистеме Hugging Face — дообучение, инференс через transformers, эксперименты в Python — Safetensors безопаснее и часто быстрее загружается, чем pickle-based альтернативы того же размера. Это формат, в котором подавляющее большинство современных моделей публикуется по умолчанию.

Деплой в продакшен на разном железе → ONNX

Если модель нужно развернуть в среде, которая не совпадает с той, где её обучали (другой язык программирования бэкенда, мобильное или встраиваемое устройство, специализированный ускоритель), ONNX даёт переносимость графа вычислений между средами выполнения — ONNX Runtime, TensorRT и аналоги умеют с ним работать напрямую.

Как проверить и сконвертировать файл модели

Как узнать формат файла без расширения

Иногда расширение файла модели переименовано, потеряно при пересылке или просто неинформативно (например, файл называется model.bin, но непонятно, pickle это или что-то другое). В таком случае нужно смотреть на реальную структуру файла — сигнатуру и внутренние байты, а не доверять расширению. Подробный разбор методов — в статье как определить формат файла без расширения, а быстрый практический способ — инструмент для определения формата файла, который определяет тип по сигнатуре прямо в браузере, без загрузки файла на сервер.

Проверка целостности скачанной модели (checksum)

Файлы моделей ИИ нередко весят гигабайты, а повреждение даже нескольких байт при скачивании или передаче по сети может привести к ошибке загрузки или, хуже, к модели, которая работает некорректно без явной ошибки. Если издатель модели публикует контрольную сумму (обычно SHA-256) рядом с файлом, сверьте её после скачивания — так же, как при проверке любого крупного файла. Удобно это сделать инструментом: проверить контрольную сумму файла.

Вопросы и ответы

Чем safetensors отличается от GGUF?

Safetensors хранит только тензоры весов и используется для обучения и раздачи моделей (в первую очередь на Hugging Face); GGUF — самодостаточный формат для инференса на потребительском железе (Ollama, LM Studio), который включает веса, метаданные архитектуры и токенизатор в одном файле.

Можно ли открыть файл .gguf текстовым редактором?

Нет, это бинарный формат — текстовый редактор покажет нечитаемые байты. Нужен инференс-движок (llama.cpp, Ollama, LM Studio); подробный разбор — в статье «Чем открыть файл GGUF».

Опасны ли файлы .pt и .pth?

Потенциально да: это pickle-архивы PyTorch, которые могут исполнять произвольный код при загрузке через torch.load(), если файл получен из непроверенного источника. Если доступна версия в .safetensors — предпочтительнее она.

Чем ONNX отличается от Safetensors?

ONNX хранит и граф вычислений, и веса, что делает его переносимым между разными средами выполнения (ONNX Runtime, TensorRT); Safetensors хранит только веса, а код, который их применяет, остаётся в отдельной библиотеке.

В чём разница между .pt и .pth?

Технической разницы нет: оба создаются torch.save() и читаются torch.load() одинаково — расширение выбирает конкретный проект или автор по договорённости, а не формат как таковой.

Какой формат выбрать для запуска LLM на обычном ПК?

GGUF — он создан для CPU/GPU-инференса на потребительском железе, поддерживает квантование под ограниченную память и запускается в Ollama и LM Studio «из коробки».

Как узнать, в каком формате модель, если расширение не помогает?

Проверить реальную структуру файла по сигнатуре, а не по расширению — см. статью «Как определить формат файла без расширения» и одноимённый инструмент на сайте.

Читайте также