なぜ GGUF を PTH に変換するのですか?
GGUF ビルドしか手元にない状況で、PyTorch エコシステム内でモデルをファインチューニングしたり再量子化したりしたい場合に、.gguf を .pth に変換します。GGUF はメタデータ(設定など)とテンソルデータ(ステート辞書など)を保持しているため、サポートされているアーキテクチャであれば PyTorch ステート辞書へのマッピングが可能です。これは「復元」の手段であり、ロスレス(無劣化)な変換ではありません。
GGUF から PTH への変換方法
gguf Python ライブラリ + PyTorch OPEN-SOURCE
gguf と torch をインストールし、GGUFReader(path).tensors をループで回して各テンソルに gguf.quants.dequantize() を実行し、torch.save(state_dict, "model.pth") で保存します。GGUF のテンソル名をモデル本来のキーにマッピングし直す必要があります。
gguf_to_safetensors 経由の変換 OPEN-SOURCE
gguf_to_safetensors を実行して .safetensors ファイルに逆量子化し、それを safetensors.torch.load_file で読み込んでから torch.save() で再保存して .pth を取得します。
llama.cpp のリバースツール FREE
llama.cpp の gguf リーダーはテンソルを公開しています。逆量子化ステップをスクリプト化し、PyTorch ステート辞書を書き出します。llama.cpp が完全にサポートしているアーキテクチャのみが正常に変換可能です。
これらの形式について
.gguf ファイルは GGML Universal Format ファイルであり、llama.cpp や関連ツールが大規模言語モデルを単一のファイルとして保存するために使用するバイナリコンテナです。モデルの重み、トークナイザー、およびすべてのメタデータをまとめて保持し、通常は一般的なハードウェアでモデルが動作するように量子化されています。LM…
.GGUF の詳細を開く →.pthファイルは、最も一般的にはPythonパス設定ファイルです。これは、Pythonの起動時にモジュール検索パスに追加するディレクトリを指示する小さなプレーンテキストファイルです。手動で開いたり実行したりするものではなく、Pythonがsite-packagesフォルダから自動的に読み込みます。内容を確認するには、任意のテキストエディタで開いてください。
.PTH の詳細を開く →品質と注意点
- 量子化された GGUF の重みは非可逆(lossy)です。逆量子化は近似値を与えるものであり、元の FP16/FP32 の値に戻ることはありません。
- テンソル名のマッピングはアーキテクチャ固有です。サポートされていないモデルではマッピングができず、変換は失敗します。
- 出力される
.pthは純粋なステート辞書であり、モデルクラスは含まれません。そのため、読み込むには対応する PyTorch モデルコードが別途必要です。
よくある質問
元のモデルを完全に復元できますか?
GPU は必要ですか?
変換するとテンソル名が間違ってしまうのはなぜですか?
.pth と .safetensors のどちらが良いですか?
.safetensors は(pickle コードの実行がないため)共有においてより安全で、読み込みも高速です。しかし、.pth はトレーニングにおける PyTorch ネイティブのステート辞書形式です。