~/tools / Fichiers de modèle et chat templates / Safetensors Metadata Viewer

Safetensors Metadata Viewer — Ouvrez des fichiers safetensors : dtypes, paramètres, poids, KV cache

Ouvrez dans votre navigateur les fichiers safetensors d'un modèle Hugging Face et voyez ce qu'ils contiennent sans charger les poids : chaque tenseur avec son type de données et sa forme, le nombre de paramètres, la taille des poids et le __metadata__. Pour un modèle réparti sur plusieurs fichiers, ajoutez model.safetensors.index.json pour repérer les fichiers manquants ou incomplets, et ajoutez config.json pour voir l'architecture, la longueur de contexte et le KV cache. L'outil vérifie chaque fichier comme le fait la bibliothèque officielle safetensors. Seul le début de chaque fichier est lu et rien n'est envoyé.

Ou déposez des fichiers ici : fichiers .safetensors, model.safetensors.index.json et config.json. Seul le début de chaque fichier .safetensors est lu et rien ne quitte votre ordinateur.

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

Le nombre de paramètres additionne les éléments de chaque tenseur des fichiers (le produit de sa forme), de la même façon que le Hugging Face Hub compte les paramètres qu'il affiche pour un modèle. La taille des poids correspond aux données que contiennent les fichiers, dans les types de données des fichiers.

KV cache = 2 × couches × têtes KV × taille de tête × 2 octets (f16) × longueur de contexte. Les valeurs viennent de config.json (num_hidden_layers, num_key_value_heads, head_dim, ou hidden_size ÷ num_attention_heads). Pour les modèles dont la partie texte est dans text_config, l'outil la lit à cet endroit.

Vérifié le 2026-11-09 avec ces sources et avec safetensors 0.8.0 officiel : Format safetensors · Hugging Face : lire les métadonnées · Ollama : importer un modèle

Tout s'exécute dans votre navigateur. Seul le début de chaque fichier .safetensors est lu et rien n'est envoyé nulle part.

safetensors est le format de fichier que Hugging Face utilise pour les poids des modèles. Un fichier safetensors commence par 8 octets qui donnent la longueur d'un en-tête JSON. L'en-tête énumère chaque tenseur avec son type de données (dtype), sa forme (shape) et sa position (data_offsets), et peut contenir une table __metadata__ de chaînes de caractères comme {"format": "pt"}. Les poids suivent. Cet outil ne lit que cet en-tête, avec le format décrit dans le dépôt de safetensors, si bien qu'un fichier de plusieurs gigaoctets s'ouvre en un instant : dans Qwen2.5-7B-Instruct, chaque en-tête fait de 7 à 11 KiB, dans des fichiers de 3.3 à 3.7 GiB. Il compte les paramètres comme le fait le Hugging Face Hub (le produit de la forme de chaque tenseur, additionné pour chaque type de données), additionne la taille des poids et vérifie ce que vérifie la bibliothèque officielle safetensors : la longueur de l'en-tête, le JSON, les types de données, que les tenseurs remplissent les données sans trou ni chevauchement, que la taille de chaque tenseur correspond à son type et à sa forme, et que le fichier se termine juste après le dernier tenseur. Un modèle réparti sur plusieurs fichiers est fourni avec model.safetensors.index.json, qui indique quel fichier contient chaque tenseur. Choisissez les fichiers ensemble, et l'outil liste les fichiers manquants, les tenseurs qui ne sont pas où l'index le dit et si la taille totale correspond. Ajoutez config.json, et il affiche l'architecture, la longueur de contexte, les couches et les têtes d'attention, ainsi que le KV cache en f16, la valeur par défaut d'Ollama : 2 × couches × têtes KV × taille de tête × 2 octets × longueur de contexte. Nous avons vérifié l'outil avec les en-têtes de Qwen2.5-7B-Instruct (4 fichiers) et de Qwen2.5-0.5B-Instruct de Hugging Face : le nombre de paramètres correspondait à celui que donne le Hub (7,615,616,512 et 494,032,768), et la taille calculée à partir de chaque en-tête correspondait à celle du fichier à l'octet près. Nous avons aussi ouvert 52 fichiers valides et cassés avec le paquet Python officiel safetensors 0.8.0, et l'outil accepte et refuse les mêmes fichiers.

Le cœur de cet outil est open source, sous licence MIT. github.com/seigo5555/toolkitbox-lib/src/safetensors.ts

Cas d'usage

  • Vérifiez les fichiers safetensors d'un modèle Hugging Face avant de le convertir ou de l'importer : types de données, nombre de paramètres et si chaque fichier est complet
  • Trouvez le fichier manquant ou tronqué dans un modèle réparti sur plusieurs fichiers, avec model.safetensors.index.json
  • Regardez à l'intérieur d'un modèle de Hugging Face sans télécharger les poids, en n'enregistrant que le début de chaque fichier

Utilisation

  1. Choisissez les fichiers .safetensors (plusieurs à la fois pour un modèle réparti) et, si vous les avez, model.safetensors.index.json et config.json. Vous pouvez aussi les déposer sur la zone.
  2. Pour regarder un modèle sans le télécharger, n'enregistrez que le début de chaque fichier avec la commande curl affichée (une requête Range, la méthode de la documentation de Hugging Face) et cochez "Seulement le début du fichier".
  3. Vous pouvez aussi coller index.json, config.json ou un en-tête (le JSON après les 8 premiers octets) dans la zone de texte et l'ajouter.

FAQ

Le fichier est-il envoyé ?

Non. Le navigateur lit les fichiers sur votre ordinateur, et l'outil ne lit que le début de chaque fichier .safetensors : les 8 octets avec la longueur de l'en-tête et l'en-tête. Les poids ne sont pas lus.

Pourquoi le nombre de paramètres diffère-t-il du nom du modèle ?

L'outil compte tous les tenseurs des fichiers, comme le fait le Hugging Face Hub. Des noms comme 7B sont arrondis. Certains modèles partagent aussi un tenseur entre l'entrée et la sortie : Qwen2.5-0.5B-Instruct a tie_word_embeddings dans son config.json, et son fichier n'a pas de lm_head.weight.

Que signifie "file not fully covered" ?

La bibliothèque officielle safetensors refuse un fichier dont la taille n'est pas exactement 8 octets + l'en-tête + la fin du dernier tenseur, avec "incomplete metadata, file not fully covered". Si le fichier est plus court, une partie des poids manque, par exemple parce qu'un téléchargement s'est arrêté trop tôt.

Pourquoi certains problèmes sont-ils rouges et d'autres jaunes ?

Les problèmes rouges sont ceux que la bibliothèque officielle refuse. Les jaunes enfreignent la spécification, mais la bibliothèque officielle lit quand même le fichier : un nom de tenseur qui apparaît deux fois (la bibliothèque garde le dernier), ou un en-tête qui commence par un espace blanc ou qui est complété avec des caractères autres que des espaces.

Comment importer du safetensors dans Ollama ?

Le guide d'importation d'Ollama pointe FROM vers le dossier qui contient les poids safetensors, puis lance ollama create. Dans notre test avec Ollama 0.40.11 sur macOS, un dossier sans config.json a été refusé, tout comme un modèle Qwen2 (Qwen2ForCausalLM), comme architecture non prise en charge. Si votre modèle ne peut pas être importé, convertissez-le d'abord en GGUF, par exemple avec convert_hf_to_gguf.py de llama.cpp.

Quelle est la précision de la taille du KV cache ?

La formule correspondait au log d'Ollama dans notre test (224 MiB pour qwen2.5:7b à 4096 tokens), et le config.json de Qwen2.5-7B-Instruct donne les mêmes 224 MiB. Elle vaut pour f16, la valeur par défaut d'Ollama. Les modèles avec fenêtre glissante, KV compressé (kv_lora_rank) ou des couches autres que l'attention complète utilisent une quantité différente ; l'outil l'indique quand config.json le montre.

Voir aussi