~/tools / モデルのファイルとチャットテンプレート / Safetensors Metadata Viewer

Safetensors Metadata Viewer — safetensors のデータ型と重みのサイズを確認

Hugging Face モデルの safetensors ファイルをブラウザで開き、重みを読み込まずに中身を確認できます。すべてのテンソルのデータ型と形状、パラメータ数、重みのサイズ、__metadata__ が見られます。複数のファイルに分かれたモデルでは、model.safetensors.index.json を加えると、足りないファイルや不完全なファイルが見つかり、config.json を加えると、アーキテクチャ、最長のコンテキスト、KV キャッシュが分かります。公式の 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 キャッシュ = 2 × レイヤー数 × KV ヘッド数 × ヘッドサイズ × 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 ファイルは、JSON ヘッダーの長さを示す 8 バイトで始まります。ヘッダーには、すべてのテンソルのデータ型(dtype)、形状(shape)、位置(data_offsets)が並び、{"format": "pt"} のような文字列のマップ __metadata__ を持つこともできます。重みはその後ろに続きます。このツールは、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 キャッシュ(2 × レイヤー数 × KV ヘッド数 × ヘッドサイズ × 2 バイト × コンテキスト長)が表示されます。ツールは、Hugging Face にある Qwen2.5-7B-Instruct(4 ファイル)と Qwen2.5-0.5B-Instruct のヘッダーで確認しました。パラメータ数は Hub が示す値と一致し(7,615,616,512 と 494,032,768)、各ヘッダーから計算したサイズはファイルとバイト単位で一致しました。また、正常なファイルと壊れたファイルの 52 個を公式の Python パッケージ safetensors 0.8.0 で開き、ツールが受け入れるファイルと拒否するファイルが同じであることを確かめました。

このツールの計算部分は、オープンソース(MIT ライセンス)で公開しています。 github.com/seigo5555/toolkitbox-lib/src/safetensors.ts

こんな時に使う

  • Hugging Face モデルの safetensors ファイルを変換や取り込みの前に確認する: データ型、パラメータ数、すべてのファイルがそろっているか
  • 複数のファイルに分かれたモデルで、足りないファイルや途中で切れたファイルを model.safetensors.index.json で見つける
  • 各ファイルの先頭だけを保存して、重みをダウンロードせずに Hugging Face のモデルの中身を見る

使い方

  1. .safetensors ファイル(分割されたモデルでは複数)を選び、あれば model.safetensors.index.json と config.json も選びます。枠にドロップすることもできます。
  2. ダウンロードせずにモデルを見る場合は、表示される curl コマンド(Range リクエスト。Hugging Face のドキュメントにある方法)で各ファイルの先頭だけを保存し、「ファイルの先頭のみ」にチェックを入れます。
  3. index.json、config.json、ヘッダー(最初の 8 バイトの後ろの JSON)をテキストボックスに貼り付けて追加することもできます。

FAQ

ファイルはアップロードされますか?

いいえ。ブラウザがお使いのコンピューター上でファイルを読み、ツールが読むのは各 .safetensors ファイルの先頭、つまりヘッダーの長さを示す 8 バイトとヘッダーだけです。重みは読み込みません。

パラメータ数がモデル名と違うのはなぜですか?

ツールは、Hugging Face Hub と同じように、ファイルにあるすべてのテンソルを数えます。7B のような名前は丸めた値です。また、入力と出力で 1 つのテンソルを共有するモデルもあります。Qwen2.5-0.5B-Instruct は config.json に tie_word_embeddings があり、ファイルには lm_head.weight がありません。

"file not fully covered" とはどういう意味ですか?

公式の safetensors ライブラリは、ファイルのサイズが 8 バイト + ヘッダー + 最後のテンソルの終わりとちょうど一致しない場合、"incomplete metadata, file not fully covered" と表示して拒否します。ファイルがそれより短い場合は、たとえばダウンロードが途中で止まったために、重みの一部が欠けています。

問題に赤と黄色があるのはなぜですか?

赤は、公式ライブラリが拒否する問題です。黄色は仕様に反していますが、公式ライブラリがファイルを読める問題です。同じテンソル名が 2 回出てくる場合(ライブラリは最後のものを使います)や、ヘッダーが空白で始まる場合、スペース以外の文字で埋められている場合です。

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 キャッシュのサイズはどのくらい正確ですか?

私たちのテストでは、この式は Ollama のログと一致しました(qwen2.5:7b の 4096 トークンで 224 MiB)。Qwen2.5-7B-Instruct の config.json から出した値も同じ 224 MiB です。これは Ollama のデフォルトである f16 の場合です。スライディングウィンドウ、圧縮された KV(kv_lora_rank)、フルアテンション以外のレイヤーを持つモデルでは必要な量が異なります。config.json からそれが分かる場合は、ツールがその旨を表示します。

関連ツール