~/tools / 模型檔案與聊天範本 / Safetensors Metadata Viewer
Safetensors Metadata Viewer — 開啟 safetensors:資料型別、參數、權重大小、KV cache
在瀏覽器中開啟 Hugging Face 模型的 safetensors 檔案,不必載入權重就能看到裡面有什麼:每個張量的資料型別與形狀、參數數量、權重大小,以及 __metadata__。對於拆成多個檔案的模型,加入 model.safetensors.index.json 可以找出遺失或不完整的檔案,加入 config.json 則可以看到架構、最長上下文與 KV cache。本工具以與官方 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 cache = 2 × 層數 × KV 頭數 × head 大小 × 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 個位元組開頭,這 8 個位元組給出 JSON 標頭的長度。標頭列出每個張量的資料型別(dtype)、形狀(shape)與位置(data_offsets),也可以包含字串對應表 __metadata__,例如 {"format": "pt"}。權重接在後面。本工具依照 safetensors 儲存庫中說明的格式,只讀取這個標頭,因此即使是數 GB 的檔案也能瞬間開啟:在 Qwen2.5-7B-Instruct 中,每個 3.3 到 3.7 GiB 的檔案,其標頭為 7 到 11 KiB。它以與 Hugging Face Hub 相同的方式計算參數(將每個張量形狀的乘積,依資料型別加總),並加總權重的大小,同時檢查官方 safetensors 函式庫所檢查的項目:標頭長度、JSON、資料型別、張量是否不留空隙也不重疊地填滿資料、每個張量的大小是否與其型別和形狀相符,以及檔案是否在最後一個張量之後立即結束。拆成多個檔案的模型會附有 model.safetensors.index.json,說明每個張量在哪個檔案中。一起選取這些檔案,工具就會列出遺失的檔案、不在索引所指位置的張量,以及總大小是否相符。加入 config.json,則會顯示架構、最長上下文、層數與注意力頭,以及 Ollama 預設的 f16 KV cache:2 × 層數 × KV 頭數 × head 大小 × 2 位元組 × 上下文長度。我們以 Hugging Face 上 Qwen2.5-7B-Instruct(4 個檔案)與 Qwen2.5-0.5B-Instruct 的標頭檢查了本工具:參數數量與 Hub 回報的數字相符(7,615,616,512 與 494,032,768),由每個標頭計算出的大小與檔案逐位元組相符。我們也用官方 Python 套件 safetensors 0.8.0 開啟了 52 個有效與損壞的檔案,本工具接受與拒絕的檔案和它相同。
這個工具的核心邏輯以 MIT 授權開放原始碼。 github.com/seigo5555/toolkitbox-lib/src/safetensors.ts
使用情境
- 在轉換或匯入之前,檢查 Hugging Face 模型的 safetensors 檔案:資料型別、參數數量,以及每個檔案是否完整
- 利用 model.safetensors.index.json,在拆成多個檔案的模型中找出遺失或被截斷的檔案
- 只儲存每個檔案的開頭,不必下載權重,就能查看 Hugging Face 上的模型內部
使用方法
- 選取 .safetensors 檔案(拆分的模型可一次選多個),如果有的話,也選取 model.safetensors.index.json 與 config.json。也可以把它們拖放到框中。
- 若要在不下載的情況下查看模型,請用所顯示的 curl 指令(Range 請求,Hugging Face 文件中的方法)只儲存每個檔案的開頭,並勾選「只有檔案開頭」。
- 也可以把 index.json、config.json 或標頭(前 8 個位元組之後的 JSON)貼到文字方塊中並加入。
FAQ
檔案會被上傳嗎?
不會。瀏覽器讀取你電腦上的檔案,工具只讀取每個 .safetensors 檔案的開頭:記錄標頭長度的 8 個位元組與標頭。不會讀取權重。
為什麼參數數量與模型名稱不同?
工具和 Hugging Face Hub 一樣,會計算檔案中的每個張量。像 7B 這樣的名稱是四捨五入後的數字。有些模型也會讓輸入與輸出共用一個張量:Qwen2.5-0.5B-Instruct 的 config.json 中有 tie_word_embeddings,而它的檔案裡沒有 lm_head.weight。
「file not fully covered」是什麼意思?
如果檔案大小不恰好等於 8 位元組 + 標頭 + 最後一個張量的結尾,官方 safetensors 函式庫會以 "incomplete metadata, file not fully covered" 拒絕該檔案。如果檔案比這更短,就是缺少一部分權重,例如下載提前中斷。
為什麼有些問題是紅色,有些是黃色?
紅色問題是官方函式庫會拒絕的問題。黃色問題違反規格,但官方函式庫仍然會讀取該檔案:同一個張量名稱出現兩次(函式庫保留最後一個),或標頭以空白開頭,或以空格以外的字元填充。
如何將 safetensors 匯入 Ollama?
Ollama 的匯入指南讓 FROM 指向存放 safetensors 權重的資料夾,然後執行 ollama create。在我們於 macOS 上使用 Ollama 0.40.11 的測試中,沒有 config.json 的資料夾被拒絕,Qwen2 模型(Qwen2ForCausalLM)也因架構不受支援而被拒絕。如果你的模型無法匯入,請先將它轉換成 GGUF,例如使用 llama.cpp 的 convert_hf_to_gguf.py。
KV cache 大小有多準確?
在我們的測試中,這個公式與 Ollama 的記錄相符(qwen2.5:7b 在 4096 個 token 時為 224 MiB),Qwen2.5-7B-Instruct 的 config.json 算出的也是同樣的 224 MiB。這是針對 Ollama 預設的 f16。使用滑動視窗、壓縮 KV(kv_lora_rank),或含有完整注意力以外層的模型,所需的量會不同;當 config.json 顯示出這種情況時,工具會告訴你。