~/tools / Файлы моделей и шаблоны чата / Safetensors Metadata Viewer

Safetensors Metadata Viewer — Откройте файлы safetensors: dtype, параметры, размер весов, кэш KV

Откройте файлы safetensors модели с Hugging Face в браузере и посмотрите, что внутри, не загружая веса: каждый тензор с его типом данных и формой, число параметров, размер весов и __metadata__. Для модели, разбитой на несколько файлов, добавьте model.safetensors.index.json, чтобы найти отсутствующие или неполные файлы, и config.json, чтобы увидеть архитектуру, длину контекста и кэш KV. Инструмент проверяет каждый файл так же, как официальная библиотека safetensors. Читается только начало каждого файла, и ничего не загружается на сервер.

Или перетащите файлы сюда: файлы .safetensors, model.safetensors.index.json и config.json. Читается только начало каждого файла .safetensors, и ничто не покидает ваш компьютер.

curl -L -r 0-1048575 -o model.safetensors https://huggingface.co/OWNER/REPO/resolve/main/model.safetensors

Число параметров складывает элементы каждого тензора в файлах (произведение его формы) так же, как Hugging Face Hub считает параметры, которые показывает для модели. Размер весов — это данные, которые содержат файлы, в типах данных этих файлов.

Кэш KV = 2 × слои × головы KV × размер головы × 2 байта (f16) × длина контекста. Значения берутся из config.json (num_hidden_layers, num_key_value_heads, head_dim или hidden_size ÷ num_attention_heads). Для моделей, у которых текстовая часть находится в text_config, инструмент читает её оттуда.

Проверено 2026-11-09 по этим источникам и официальной библиотеке safetensors 0.8.0: Формат safetensors · Hugging Face: чтение метаданных · Ollama: импорт модели

Всё работает в вашем браузере. Читается только начало каждого файла .safetensors, и ничего никуда не отправляется.

safetensors — это формат файлов, который Hugging Face использует для весов моделей. Файл safetensors начинается с 8 байт, задающих длину заголовка JSON. Заголовок перечисляет каждый тензор с его типом данных (dtype), формой (shape) и положением (data_offsets) и может содержать словарь строк __metadata__, например {"format": "pt"}. Затем идут веса. Этот инструмент читает только этот заголовок по формату, описанному в репозитории safetensors, поэтому файл размером в несколько гигабайт открывается мгновенно: в Qwen2.5-7B-Instruct каждый заголовок занимает от 7 до 11 KiB, в файлах размером от 3.3 до 3.7 GiB. Он считает параметры так же, как Hugging Face Hub (произведение формы каждого тензора, суммируется по каждому типу данных), складывает размер весов и проверяет то, что проверяет официальная библиотека safetensors: длину заголовка, JSON, типы данных, заполняют ли тензоры данные без пропусков и перекрытий, соответствует ли размер каждого тензора его типу и форме и заканчивается ли файл сразу после последнего тензора. К модели, разбитой на несколько файлов, прилагается model.safetensors.index.json, где сказано, в каком файле лежит каждый тензор. Выберите файлы вместе, и инструмент перечислит отсутствующие файлы, тензоры, которых нет там, где указывает индекс, и скажет, совпадает ли общий размер. Добавьте config.json, и он покажет архитектуру, длину контекста, слои и головы внимания, а также кэш KV при f16, типе по умолчанию в Ollama: 2 × слои × головы KV × размер головы × 2 байта × длина контекста. Мы проверили инструмент на заголовках Qwen2.5-7B-Instruct (4 файла) и Qwen2.5-0.5B-Instruct с Hugging Face: числа параметров совпали с теми, что сообщает Hub (7,615,616,512 и 494,032,768), а размер, вычисленный по каждому заголовку, совпал с размером файла до байта. Мы также открыли 52 корректных и повреждённых файла официальным пакетом Python safetensors 0.8.0, и инструмент принимает и отвергает те же файлы.

Основная логика этого инструмента открыта под лицензией MIT. github.com/seigo5555/toolkitbox-lib/src/safetensors.ts

Когда пригодится

  • Проверить файлы safetensors модели с Hugging Face перед конвертацией или импортом: типы данных, число параметров и полноту каждого файла
  • Найти отсутствующий или обрезанный файл в модели, разбитой на несколько файлов, с помощью model.safetensors.index.json
  • Заглянуть в модель на Hugging Face, не скачивая веса, сохранив только начало каждого файла

Как пользоваться

  1. Выберите файлы .safetensors (для разбитой модели сразу несколько) и, если они есть, model.safetensors.index.json и config.json. Их также можно перетащить на поле.
  2. Чтобы посмотреть модель, не скачивая её, сохраните только начало каждого файла показанной командой curl (запрос Range, метод из документации Hugging Face) и отметьте «Только начало файла».
  3. Можно также вставить index.json, config.json или заголовок (JSON после первых 8 байт) в текстовое поле и добавить его.

Вопросы

Файл загружается на сервер?

Нет. Браузер читает файлы на вашем компьютере, а инструмент читает только начало каждого файла .safetensors: 8 байт с длиной заголовка и сам заголовок. Веса не читаются.

Почему число параметров отличается от названия модели?

Инструмент считает каждый тензор в файлах, как Hugging Face Hub. Обозначения вроде 7B округлены. Некоторые модели к тому же используют один тензор и на входе, и на выходе: у Qwen2.5-0.5B-Instruct в config.json есть tie_word_embeddings, а в её файле нет lm_head.weight.

Что означает «file not fully covered»?

Официальная библиотека safetensors отвергает файл, размер которого не равен точно 8 байт + заголовок + конец последнего тензора, с сообщением "incomplete metadata, file not fully covered". Если файл короче, часть весов отсутствует, например потому, что загрузка оборвалась раньше времени.

Почему одни проблемы красные, а другие жёлтые?

Красные проблемы — те, которые официальная библиотека отвергает. Жёлтые нарушают спецификацию, но официальная библиотека всё равно читает файл: имя тензора, которое встречается дважды (библиотека оставляет последнее), или заголовок, который начинается с пробельного символа либо дополнен символами, отличными от пробелов.

Как импортировать safetensors в Ollama?

В руководстве Ollama по импорту FROM указывает на папку с весами safetensors, а затем выполняется ollama create. В нашем тесте с Ollama 0.40.11 на macOS папка без config.json была отвергнута, как и модель Qwen2 (Qwen2ForCausalLM) как неподдерживаемая архитектура. Если вашу модель импортировать нельзя, сначала конвертируйте её в GGUF, например с помощью convert_hf_to_gguf.py из llama.cpp.

Насколько точен размер кэша KV?

Формула совпала с логом Ollama в нашем тесте (224 MiB для qwen2.5:7b при 4096 токенах), а config.json модели Qwen2.5-7B-Instruct даёт те же 224 MiB. Она рассчитана на f16, тип по умолчанию в Ollama. Модели со скользящим окном, сжатым KV (kv_lora_rank) или слоями, отличными от полного внимания, используют другой объём; инструмент сообщает об этом, если это видно по config.json.

Похожие