~/tools / Pliki modeli i szablony czatu / Safetensors Metadata Viewer

Safetensors Metadata Viewer — Otwórz pliki safetensors: dtype, parametry, rozmiar wag, KV cache

Otwórz pliki safetensors modelu z Hugging Face w przeglądarce i zobacz, co jest w środku, bez ładowania wag: każdy tensor z jego typem danych i kształtem, liczbę parametrów, rozmiar wag i __metadata__. Dla modelu podzielonego na kilka plików dodaj model.safetensors.index.json, aby znaleźć brakujące lub niekompletne pliki, oraz config.json, aby zobaczyć architekturę, długość kontekstu i KV cache. Narzędzie sprawdza każdy plik tak jak oficjalna biblioteka safetensors. Czytany jest tylko początek każdego pliku i nic nie jest wysyłane.

Albo upuść pliki tutaj: pliki .safetensors, model.safetensors.index.json i config.json. Czytany jest tylko początek każdego pliku .safetensors i nic nie opuszcza Twojego komputera.

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

Liczba parametrów sumuje elementy każdego tensora w plikach (iloczyn jego kształtu), tak samo jak Hugging Face Hub liczy parametry pokazywane dla modelu. Rozmiar wag to dane, które zawierają pliki, w typach danych tych plików.

KV cache = 2 × warstwy × głowice KV × rozmiar głowicy × 2 bajty (f16) × długość kontekstu. Wartości pochodzą z config.json (num_hidden_layers, num_key_value_heads, head_dim lub hidden_size ÷ num_attention_heads). Dla modeli, których część tekstowa jest w text_config, narzędzie czyta ją stamtąd.

Sprawdzono dnia 2026-11-09 według tych źródeł i oficjalnej biblioteki safetensors 0.8.0: Format safetensors · Hugging Face: odczyt metadanych · Ollama: import modelu

Wszystko działa w Twojej przeglądarce. Czytany jest tylko początek każdego pliku .safetensors i nic nie jest nigdzie wysyłane.

safetensors to format plików, którego Hugging Face używa dla wag modeli. Plik safetensors zaczyna się od 8 bajtów, które podają długość nagłówka JSON. Nagłówek wymienia każdy tensor z jego typem danych (dtype), kształtem (shape) i położeniem (data_offsets) i może zawierać mapę ciągów znaków __metadata__, taką jak {"format": "pt"}. Potem następują wagi. To narzędzie czyta tylko ten nagłówek, według formatu opisanego w repozytorium safetensors, więc plik o wielkości kilku gigabajtów otwiera się w chwilę: w Qwen2.5-7B-Instruct każdy nagłówek ma 7 do 11 KiB, w plikach o rozmiarze 3.3 do 3.7 GiB. Liczy parametry tak jak Hugging Face Hub (iloczyn kształtu każdego tensora, zsumowany dla każdego typu danych), sumuje rozmiar wag i sprawdza to, co sprawdza oficjalna biblioteka safetensors: długość nagłówka, JSON, typy danych, to, czy tensory wypełniają dane bez luk i nakładania się, to, czy rozmiar każdego tensora zgadza się z jego typem i kształtem, oraz to, czy plik kończy się zaraz po ostatnim tensorze. Do modelu podzielonego na kilka plików należy model.safetensors.index.json, który mówi, który plik zawiera który tensor. Wybierz pliki razem, a narzędzie wypisze brakujące pliki, tensory, których nie ma tam, gdzie wskazuje indeks, i to, czy łączny rozmiar się zgadza. Dodaj config.json, a pokaże architekturę, długość kontekstu, warstwy i głowice uwagi oraz KV cache dla f16, domyślnego typu w Ollamie: 2 × warstwy × głowice KV × rozmiar głowicy × 2 bajty × długość kontekstu. Sprawdziliśmy narzędzie na nagłówkach Qwen2.5-7B-Instruct (4 pliki) i Qwen2.5-0.5B-Instruct z Hugging Face: liczby parametrów zgadzały się z tym, co podaje Hub (7,615,616,512 i 494,032,768), a rozmiar obliczony z każdego nagłówka zgadzał się z plikiem co do bajta. Otworzyliśmy też 52 poprawne i uszkodzone pliki oficjalnym pakietem Pythona safetensors 0.8.0, a narzędzie przyjmuje i odrzuca te same pliki.

Główna logika tego narzędzia jest otwartoźródłowa, na licencji MIT. github.com/seigo5555/toolkitbox-lib/src/safetensors.ts

Zastosowania

  • Sprawdzić pliki safetensors modelu z Hugging Face przed konwersją lub importem: typy danych, liczbę parametrów i to, czy każdy plik jest kompletny
  • Znaleźć brakujący lub ucięty plik w modelu podzielonym na kilka plików, za pomocą model.safetensors.index.json
  • Zajrzeć do modelu na Hugging Face bez pobierania wag, zapisując tylko początek każdego pliku

Jak używać

  1. Wybierz pliki .safetensors (kilka naraz dla modelu podzielonego) oraz, jeśli je masz, model.safetensors.index.json i config.json. Możesz też upuścić je na pole.
  2. Aby obejrzeć model bez pobierania, zapisz tylko początek każdego pliku pokazanym poleceniem curl (żądanie Range, metoda z dokumentacji Hugging Face) i zaznacz „Tylko początek pliku”.
  3. Możesz też wkleić index.json, config.json lub nagłówek (JSON po pierwszych 8 bajtach) w pole tekstowe i dodać go.

FAQ

Czy plik jest wysyłany?

Nie. Przeglądarka czyta pliki na Twoim komputerze, a narzędzie czyta tylko początek każdego pliku .safetensors: 8 bajtów z długością nagłówka i sam nagłówek. Wagi nie są czytane.

Dlaczego liczba parametrów różni się od nazwy modelu?

Narzędzie liczy każdy tensor w plikach, tak jak Hugging Face Hub. Nazwy takie jak 7B są zaokrąglone. Niektóre modele współdzielą też jeden tensor między wejściem a wyjściem: Qwen2.5-0.5B-Instruct ma tie_word_embeddings w swoim config.json, a jego plik nie zawiera lm_head.weight.

Co znaczy „file not fully covered”?

Oficjalna biblioteka safetensors odrzuca plik, którego rozmiar nie jest dokładnie równy 8 bajtów + nagłówek + koniec ostatniego tensora, z komunikatem "incomplete metadata, file not fully covered". Jeśli plik jest krótszy, brakuje części wag, na przykład dlatego, że pobieranie przerwano za wcześnie.

Dlaczego niektóre problemy są czerwone, a inne żółte?

Czerwone problemy to takie, które oficjalna biblioteka odrzuca. Żółte łamią specyfikację, ale oficjalna biblioteka mimo to czyta plik: nazwa tensora, która występuje dwa razy (biblioteka zachowuje ostatnią), albo nagłówek, który zaczyna się białym znakiem lub jest dopełniony znakami innymi niż spacje.

Jak zaimportować safetensors do Ollamy?

Przewodnik importu Ollamy wskazuje w FROM folder, w którym są wagi safetensors, a potem uruchamia ollama create. W naszym teście z Ollama 0.40.11 na macOS folder bez config.json został odrzucony, tak samo model Qwen2 (Qwen2ForCausalLM) jako nieobsługiwana architektura. Jeśli Twojego modelu nie da się zaimportować, najpierw przekonwertuj go na GGUF, na przykład za pomocą convert_hf_to_gguf.py z llama.cpp.

Jak dokładny jest rozmiar KV cache?

Wzór zgadzał się z logiem Ollamy w naszym teście (224 MiB dla qwen2.5:7b przy 4096 tokenach), a config.json Qwen2.5-7B-Instruct daje te same 224 MiB. Dotyczy f16, domyślnego typu w Ollamie. Modele z przesuwanym oknem, skompresowanym KV (kv_lora_rank) lub warstwami innymi niż pełna uwaga zajmują inną ilość; narzędzie o tym informuje, gdy widać to w config.json.

Powiązane