~/tools / File di modello e chat template / Safetensors Metadata Viewer

Safetensors Metadata Viewer — Apri file safetensors: dtype, parametri, pesi, cache KV

Apri nel browser i file safetensors di un modello Hugging Face e guarda cosa contengono senza caricare i pesi: ogni tensore con il suo tipo di dati e la sua forma, il numero di parametri, la dimensione dei pesi e il __metadata__. Per un modello diviso in più file, aggiungi model.safetensors.index.json per trovare i file mancanti o incompleti, e aggiungi config.json per vedere l'architettura, la lunghezza del contesto e la cache KV. Lo strumento controlla ogni file come fa la libreria ufficiale safetensors. Viene letto solo l'inizio di ogni file e non viene caricato nulla.

Oppure trascina qui i file: file .safetensors, model.safetensors.index.json e config.json. Viene letto solo l'inizio di ogni file .safetensors e nulla lascia il tuo computer.

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

Il numero di parametri somma gli elementi di ogni tensore nei file (il prodotto della sua forma), nello stesso modo in cui l'Hugging Face Hub conta i parametri che mostra per un modello. La dimensione dei pesi sono i dati che i file contengono, nei tipi di dati dei file.

Cache KV = 2 × layer × head KV × dimensione della head × 2 byte (f16) × lunghezza del contesto. I valori vengono da config.json (num_hidden_layers, num_key_value_heads, head_dim, oppure hidden_size ÷ num_attention_heads). Per i modelli la cui parte di testo è in text_config, lo strumento la legge da lì.

Verificato il 2026-11-09 con queste fonti e con safetensors 0.8.0 ufficiale: Formato safetensors · Hugging Face: leggere i metadati · Ollama: importare un modello

Tutto viene eseguito nel tuo browser. Viene letto solo l'inizio di ogni file .safetensors e non viene inviato nulla da nessuna parte.

safetensors è il formato di file che Hugging Face usa per i pesi dei modelli. Un file safetensors inizia con 8 byte che indicano la lunghezza di un header JSON. L'header elenca ogni tensore con il suo tipo di dati (dtype), la sua forma (shape) e la sua posizione (data_offsets), e può contenere una mappa __metadata__ di stringhe come {"format": "pt"}. Poi seguono i pesi. Questo strumento legge solo quell'header, con il formato descritto nel repository di safetensors, quindi un file di diversi gigabyte si apre in un attimo: in Qwen2.5-7B-Instruct ogni header è di 7-11 KiB, in file da 3.3 a 3.7 GiB. Conta i parametri come fa l'Hugging Face Hub (il prodotto della forma di ogni tensore, sommato per ogni tipo di dati), somma la dimensione dei pesi e controlla ciò che controlla la libreria ufficiale safetensors: la lunghezza dell'header, il JSON, i tipi di dati, che i tensori riempiano i dati senza vuoti né sovrapposizioni, che la dimensione di ogni tensore corrisponda al suo tipo e alla sua forma, e che il file finisca subito dopo l'ultimo tensore. Un modello diviso in più file arriva con model.safetensors.index.json, che indica quale file contiene ogni tensore. Scegli i file insieme e lo strumento elenca i file mancanti, i tensori che non sono dove dice l'indice e se la dimensione totale corrisponde. Aggiungi config.json e mostra l'architettura, la lunghezza del contesto, i layer e le attention head, e la cache KV in f16, il valore predefinito di Ollama: 2 × layer × head KV × dimensione della head × 2 byte × lunghezza del contesto. Abbiamo verificato lo strumento con gli header di Qwen2.5-7B-Instruct (4 file) e di Qwen2.5-0.5B-Instruct da Hugging Face: il numero di parametri corrispondeva a quello che riporta l'Hub (7,615,616,512 e 494,032,768) e la dimensione calcolata da ogni header corrispondeva a quella del file al byte. Abbiamo anche aperto 52 file validi e rotti con il pacchetto Python ufficiale safetensors 0.8.0, e lo strumento accetta e rifiuta gli stessi file.

La logica principale di questo strumento è open source, con licenza MIT. github.com/seigo5555/toolkitbox-lib/src/safetensors.ts

Casi d'uso

  • Controlla i file safetensors di un modello Hugging Face prima di convertirlo o importarlo: tipi di dati, numero di parametri e se ogni file è completo
  • Trova il file mancante o troncato in un modello diviso in più file, con model.safetensors.index.json
  • Guarda dentro un modello su Hugging Face senza scaricare i pesi, salvando solo l'inizio di ogni file

Utilizzo

  1. Scegli i file .safetensors (più file insieme per un modello diviso) e, se li hai, model.safetensors.index.json e config.json. Puoi anche trascinarli nella casella.
  2. Per guardare un modello senza scaricarlo, salva solo l'inizio di ogni file con il comando curl mostrato (una richiesta Range, il metodo della documentazione di Hugging Face) e spunta "Solo l'inizio del file".
  3. Puoi anche incollare index.json, config.json o un header (il JSON dopo i primi 8 byte) nella casella di testo e aggiungerlo.

FAQ

Il file viene caricato?

No. Il browser legge i file sul tuo computer e lo strumento legge solo l'inizio di ogni file .safetensors: gli 8 byte con la lunghezza dell'header e l'header. I pesi non vengono letti.

Perché il numero di parametri è diverso dal nome del modello?

Lo strumento conta ogni tensore nei file, come fa l'Hugging Face Hub. Nomi come 7B sono arrotondati. Alcuni modelli inoltre condividono un tensore tra ingresso e uscita: Qwen2.5-0.5B-Instruct ha tie_word_embeddings nel suo config.json e il suo file non ha lm_head.weight.

Cosa significa "file not fully covered"?

La libreria ufficiale safetensors rifiuta un file la cui dimensione non è esattamente 8 byte + l'header + la fine dell'ultimo tensore, con "incomplete metadata, file not fully covered". Se il file è più corto, manca una parte dei pesi, per esempio perché un download si è fermato troppo presto.

Perché alcuni problemi sono rossi e altri gialli?

I problemi rossi sono quelli che la libreria ufficiale rifiuta. Quelli gialli violano la specifica, ma la libreria ufficiale legge comunque il file: un nome di tensore che compare due volte (la libreria tiene l'ultimo), oppure un header che inizia con uno spazio bianco o è riempito con caratteri diversi dagli spazi.

Come si importa safetensors in Ollama?

La guida all'importazione di Ollama punta FROM alla cartella che contiene i pesi safetensors, poi esegue ollama create. Nel nostro test con Ollama 0.40.11 su macOS, una cartella senza config.json è stata rifiutata, e lo stesso è successo a un modello Qwen2 (Qwen2ForCausalLM), come architettura non supportata. Se il tuo modello non può essere importato, convertilo prima in GGUF, per esempio con convert_hf_to_gguf.py di llama.cpp.

Quanto è accurata la dimensione della cache KV?

La formula corrispondeva al log di Ollama nel nostro test (224 MiB per qwen2.5:7b a 4096 token), e il config.json di Qwen2.5-7B-Instruct dà gli stessi 224 MiB. Vale per f16, il valore predefinito di Ollama. I modelli con finestra scorrevole, KV compressa (kv_lora_rank) o layer diversi dall'attenzione completa usano una quantità diversa; lo strumento lo segnala quando config.json lo mostra.

Correlati