Генерация картинок
Safetensors: что за файл, чем открыть и куда класть
Safetensors — формат, в котором сегодня раздают веса нейросетей. Внутри только числа модели, без исполняемого кода: это и есть причина, по которой он вытеснил старые .ckpt и .bin. Отдельной программы для открытия у него нет — файл загружает та программа, которая рисует или пишет.
Дальше по порядку: чем этот формат отличается от старых, что у него внутри, почему рядом с моделью лежит ещё несколько файлов, что из них checkpoint, а что VAE, LoRA и ControlNet, что означают приписки fp16 и fp8 в именах и куда всё это раскладывать, чтобы программа увидела.
Всё, что ниже про устройство формата и про опасность старого способа, сверено 24 августа 2026 года по документации Hugging Face и ComfyUI.
Что такое safetensors
Модель нейросети — это большая таблица чисел. Их надо как-то записать в файл, и раньше это делали средствами самого PyTorch. Safetensors — формат, придуманный в Hugging Face специально для того, чтобы хранить те же числа безопасно и при этом быстро.
Собственное описание формата звучит коротко: простой формат для безопасного хранения тензоров, в отличие от pickle, и при этом быстрый за счёт чтения без копирования. Обе половины этой фразы важны, и обе разберём ниже.
Сегодня его читают почти все: библиотеки transformers и diffusers, ComfyUI, сборки Stable Diffusion, InvokeAI, оболочки для текстовых моделей. Для чат-моделей, которые запускают локально, чаще используется другой формат — про него отдельная статья про GGUF.
Чем он безопаснее .ckpt и .bin
Старые файлы весов — .ckpt, .pt, .bin — сделаны на механизме pickle. Это способ Python сохранять объекты в файл, и он же долгое время был форматом весов PyTorch по умолчанию.
Проблема в том, что pickle хранит не данные, а инструкции: что создать и какие функции вызвать при чтении. Документация Hugging Face формулирует это без смягчений — при загрузке pickle-файла возможны атаки с выполнением произвольного кода.
Safetensors устроен наоборот: внутри нет инструкций, только описание чисел и сами числа. Выполнять там нечего.
Сам Хаб при этом не полагается на один формат. Каждый загруженный pickle-файл прогоняется через антивирус и через разбор списка импортов, а сам список показывается рядом с файлом — подозрительные подсвечиваются. При этом в документации честно написано, что проверка не стопроцентна и ответственность остаётся на пользователе.
Отсюда правило выбора, если в репозитории лежат оба варианта.
- Есть safetensors — берём его. Даже если рядом лежит привычный
.ckptс тем же названием. - Только .ckpt и автор неизвестен — не берём. Популярную модель почти всегда кто-то уже переложил в безопасный формат.
- Расширение .safetensors ничего не говорит о качестве. Оно говорит только о том, что при загрузке файла ничего не выполнится.
Что лежит внутри файла
Устройство описано в спецификации формата и оно нарочито простое. Файл состоит из трёх частей подряд.
- Восемь байт в начале — длина заголовка, обычное 64-битное число.
- Заголовок в формате JSON — перечень тензоров: имя, тип чисел, форма и то, с какого по какой байт лежат данные. Есть один служебный ключ для произвольных пометок, и в нём разрешены только строки.
- Всё остальное — сплошной блок чисел без разрывов.
Из этой конструкции следуют оба обещания формата. Программа читает заголовок, узнаёт, где какой кусок лежит, и обращается к нужным байтам напрямую, не разворачивая файл целиком — отсюда быстрая загрузка. А поскольку данные обязаны быть сплошными, без дырок, спрятать внутрь файла постороннюю нагрузку не выйдет: спецификация прямо говорит, что это условие мешает собрать файл-гибрид.
Почему файлов несколько, а не один
Ожидание «скачал модель — получил один файл» работает для чат-моделей и не работает для генерации картинок. Причина в устройстве: картинку делает не одна сеть, а конвейер из нескольких, и каждую часть выкладывают отдельно.
Так сделано намеренно, и вам это выгодно.
- Части взаимозаменяемы. Один и тот же кодировщик текста работает с разными моделями, и качать его второй раз не нужно.
- Дообучение весит мало. Стиль или персонаж — это файл на десятки мегабайт вместо новой модели на десять гигабайт.
- Части обновляются по отдельности. Вышла новая версия одного блока — меняете один файл.
Обратная сторона: скачав только основную модель, вы получите ошибку о недостающем файле. Это не поломка, а недособранный конвейер.
Checkpoint, LoRA, VAE, CLIP, ControlNet
У всех этих файлов одно и то же расширение, и различить их по нему нельзя. Различают по названию папки, в которую их кладут, и по узлу, которым загружают.
| Тип | Что это | Порядок размера |
|---|---|---|
| Checkpoint | основная модель генерации, тот самый «мозг». Без неё не работает ничего | гигабайты |
| LoRA | небольшое дообучение под стиль, персонажа или концепт. Подмешивается к основной модели | десятки и сотни мегабайт |
| VAE | переводит внутреннее представление в готовую картинку. Отвечает за цвет и мелкие детали | сотни мегабайт |
| CLIP и текстовые кодировщики | превращают ваш запрос в понятные модели числа. В новых моделях выносятся отдельными файлами | от сотен мегабайт до нескольких гигабайт |
| ControlNet | задаёт композицию: поза, глубина, контуры. Подключается поверх основной модели | сотни мегабайт и гигабайты |
| Upscale-модели | увеличивают готовую картинку без потери резкости | десятки мегабайт |
Формулировки в документации ComfyUI совпадают с этим делением: LoRA там названа лёгким дополнением, настроенным под стиль, персонажа или концепт, а ControlNet — дополнительным управлением по контурам, глубине и позе.
Какие вообще бывают базовые модели и чем отличаются их версии, разобрано в статье про Stable Diffusion. Здесь речь только про файлы.
Что значат fp16, bf16 и fp8 в имени
В именах постоянно встречаются приписки вида fp16, bf16, fp8. Это не версии модели, а разрядность: сколько бит отводится на одно число.
| Приписка | Что это |
|---|---|
| fp32 | тридцать два бита на число. Исходная точность, в готовых сборках почти не встречается: слишком тяжело |
| fp16 | шестнадцать бит, стандартное половинное число. Обычный рабочий вариант |
| bf16 | тоже шестнадцать бит, но урезанная версия тридцатидвухбитного числа: тот же диапазон значений, меньше точность |
| fp8 | восемь бит. Файл вдвое легче шестнадцатибитного, требования к видеопамяти ниже, точность ниже |
Арифметика тут прямая: каждый шаг вниз примерно вдвое уменьшает размер файла. Поэтому восьмибитные версии крупных моделей выкладывают именно для тех, у кого шестнадцатибитная в память не помещается.
Дополнительные буквы в конце восьмибитных имён — это уточнение того, как биты распределены внутри числа. На выбор файла они почти не влияют: берите тот вариант, который ваша программа и ваша видеокарта понимают, а если оба — тот, что легче.
Куда класть файлы
Общее правило одинаковое во всех программах: у каждого типа модели своя подпапка, и программа ищет файл только в ней. Документация ComfyUI формулирует это буквально — класть в подпапку соответствующего типа внутри папки моделей.
| Что скачали | Куда положить |
|---|---|
| Основную модель | подпапка checkpoints |
| Дообучение под стиль | подпапка loras |
| VAE | подпапка vae |
| ControlNet | подпапка controlnet |
| Текстовый кодировщик | подпапка text_encoders или clip |
| Увеличитель картинок | подпапка upscale_models |
Точные пути, установка и файл с внешними путями для тех, у кого модели уже лежат в другой программе, разобраны в статье про ComfyUI. Второй раз копировать десятки гигабайт не нужно.
Где брать сами файлы
Основной склад — Hugging Face: там лежат и официальные веса, и чужие пересборки. Как устроен сайт, как выбрать нужный файл в репозитории и как выкачать его целиком, разобрано в статье про Hugging Face. Оттуда же качаются файлы для локального запуска текстовых моделей.
Второй склад, но уже целиком про картинки, — Civitai: там у каждой модели видны примеры и настройки, с которыми они получились. Чем он отличается, зачем у него появился второй домен и как выбрать версию файла под свою программу — в статье про Civitai.
Чем открыть safetensors
Прямого ответа в духе «скачайте программу X» тут нет, потому что вопрос поставлен неверно. Этот файл не открывают, чтобы посмотреть, его загружают, чтобы что-то сгенерировать.
| Задача | Чем загружать |
|---|---|
| Сгенерировать картинку | ComfyUI или сборка Stable Diffusion: файл выбирается в узле загрузки модели |
| Посмотреть, что за модель | её страница на Hugging Face: сайт разбирает заголовок файла и показывает размер модели в параметрах и формат хранения чисел |
| Прочитать из своей программы | библиотека safetensors для Python: она умеет читать и весь файл, и отдельный тензор |
Отдельно про то, зачем вообще держать модели у себя, а не пользоваться сервисом: разбор задач, которые имеет смысл считать локально, есть на портале ИИ-офиса — подборка нейросетей для картинок показывает, где облако удобнее, а где своё железо выигрывает.
Модель скачал, а её нет в списке
Пять причин, которые закрывают почти все случаи.
- Файл в чужой папке. Модель, положенная в
lorasвместоcheckpoints, просто не появится в нужном списке. - Список не обновлён. Программа читает содержимое папок при запуске. Перезапуск или кнопка обновления решают.
- Файл скачан не полностью. На моделях в несколько гигабайт обрыв соединения даёт файл нормального вида и неверного размера. Сверьте размер с указанным на странице.
- Скачана веб-страница вместо файла. Классика при сохранении по ссылке из браузера: на диске лежит документ в килобайтах с правильным именем.
- Не хватает соседних файлов. Модель есть, а текстового кодировщика или VAE к ней нет — программа сообщит об отсутствующем узле, а не о проблеме с моделью.
Отдельный случай — модель видна, но выдаёт серую или чёрную картинку. Это почти всегда несовпадение частей конвейера: VAE или кодировщик от другой версии модели.
Частые вопросы
Что такое файл safetensors?
Это формат хранения весов нейросети, придуманный в Hugging Face как безопасная замена старому способу на основе pickle. Внутри только числа модели и описание их формы, без исполняемого кода. Программа читает из него сразу нужные куски, не разворачивая файл целиком, поэтому загрузка быстрая.
Чем safetensors отличается от .ckpt?
Файл .ckpt — это выгрузка PyTorch на основе pickle, а pickle при загрузке умеет выполнять код. Документация Hugging Face прямо называет это возможностью атаки с произвольным выполнением кода. В safetensors такой возможности нет по устройству формата, поэтому при выборе между двумя одинаковыми моделями берут его.
Чем открыть файл safetensors?
Отдельной программы-просмотрщика для него нет, и она не нужна: файл не открывают, а загружают в программу генерации. Для картинок это ComfyUI или сборки Stable Diffusion, для моделей на Python — библиотеки transformers и diffusers. Размер модели в параметрах и формат хранения чисел видны на её странице на Hugging Face: сайт читает это прямо из файла.
Зачем рядом с моделью лежат VAE, LoRA и ControlNet?
Это отдельные части конвейера, а не запасные версии модели. VAE отвечает за перевод внутреннего представления в готовую картинку, LoRA — небольшое дообучение под стиль или персонажа, ControlNet задаёт композицию по позе, глубине или контурам. Каждый файл кладётся в свою папку и подключается своим узлом.
Что значит fp8 в названии файла модели?
Число показывает, сколько бит отводится на один вес модели: fp16 и bf16 — шестнадцать, fp8 — восемь. Каждый шаг вниз примерно вдвое уменьшает файл и требования к видеопамяти, а точность вычислений снижает. Восьмибитные версии выкладывают именно для карт, которым тяжело держать шестнадцатибитную модель.
Почему скачанная модель не появляется в списке?
Самая частая причина — файл лежит не в той папке: программа ищет каждый тип модели в своей подпапке и чужие не показывает. Вторая причина — файл скачан не полностью, такое бывает на моделях в несколько гигабайт. Третья — список не обновлён, помогает перезапуск программы.