~/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.safetensorsIl 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
- 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.
- 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".
- 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.