ファイルを知る、使いこなす。
.pth

PyTorchモデル / 重み

AI・機械学習

PTHは、PyTorchで保存したAIモデルの重み・チェックポイントと、Pythonのパス設定で使われる別用途の拡張子です。AIモデルでも、重みだけ、学習再開用データ、モデル全体の保存では読み込み方が違います。ファイル名だけで対応ツールや安全性を決めず、入手元の説明と保存方法を確認して使います。

主な用途
モデルの重み保存、またはPythonのパス設定
中身の種類
作成元により異なる
目次・よくある質問・根拠資料を見る

内容の最終確認: · 編集:Kai

最初に見分ける:AIモデルかPython設定か

最初に見分ける:AIモデルかPython設定か
入手場所・説明考えられる用途最初の確認
モデル配布ページ・学習出力フォルダーPyTorchの重み・チェックポイントモデル名、構造、保存方法、対応アプリの版を確認
site-packagesPythonのパス設定テキストとして確認。知らない設定を配置・実行しない
出所不明の添付・ダウンロード拡張子だけでは判定不能提供元を確認するまでロードしない

容量やテキスト表示は手掛かりであり、確定判定ではありません。メモ帳などを先に起動し「ファイル」→「開く」でコピーを確認できますが、文字が読めることも安全性の証明にはなりません。

開き方・操作手順

使っている環境や目的の項目を開いて、手順を確認してください。

PyTorchの重み:モデル定義と組み合わせる

重みは学習した数値です。対応するモデル構造、入力の形、前処理、出力の読み方が別途必要になります。

  1. 配布元のREADME・モデル定義・設定ファイル・対応ライブラリの版を揃え、重みだけのstate_dictかを確認します。
  2. 信頼できるファイルだけを、更新された対応環境で読み込みます。CPUへの読み込み指定とweights_onlyの条件を明示します。
  3. 対応するモデルへload_state_dictで重みを渡し、キーと形状が一致することを確認します。推論前はevalに切り替え、指定の前処理・入力で結果を確認します。
AIツールで使う:ツール指定の手順を確認

同じPTHでも、別のモデル構造や用途のツールへ自由に移し替えられるとは限りません。

  1. ツール名、モデルの種類・世代、配置先、必要な設定ファイル、対応する重み形式を配布元の手順で確認します。
  2. モデル名の変更や拡張子の付け替えで対応させようとせず、正式に対応しているロード手順を使います。
Pythonのパス設定:テキストとして確認

このPTHはAIモデルではありません。Pythonがモジュールを探す場所などに関係する設定です。

  1. 利用中のPython環境とsite-packagesの場所を確認します。内容はエディターで読むだけにし、不明な設定を別環境へコピーしません。
  2. 通常のパス行に加え、Pythonの版や同名.startファイルの有無によってimport行の扱いが変わります。設定の修正は該当パッケージの公式手順に従います。

操作名・対応状況はアプリ・OS・版によって異なります。変更する前に原本を残してください。

重みだけのPTHを読み込む最小例

次は、信頼できるstate_dictだけを保存したPTH向けの関数例です。引数modelには、作成元と同じ構造・設定であらかじめ作ったモデルを渡します。この関数はモデル構造を自動生成せず、出所不明のファイルを安全と判定するものでもありません。

import torch

def load_weights(model, path):
    state = torch.load(
        path, map_location="cpu", weights_only=True
    )
    model.load_state_dict(state, strict=True)
    model.eval()
    return model

実行例として掲載しているだけで、このサイトはPTHをアップロード・実行しません。eval()は推論時の動作モードを変える操作であり、勾配計算の無効化とは別です。

この手順の根拠:PyTorch Project · Saving and Loading Models / PyTorch Project · torch.load

state_dictとチェックポイントは読み方が違う

  • state_dictは、パラメーター名とテンソルなどを対応付けた保存データです。モデルのPythonクラスや入力処理が一式そろうとは限りません。
  • 学習用チェックポイントには、モデルの重み以外にoptimizer_state_dict、epoch、lossなどが含まれる場合があります。全体をload_state_dictへ渡さず、作成元が定めたキーからモデルの重みを取り出します。
  • モデル全体を保存したファイルは、元のPythonクラス・依存関係が必要になる場合があります。制限付き読み込みで失敗したからといって、出所不明のオブジェクトを無条件に許可しないでください。

この手順の根拠:PyTorch Project · Saving and Loading Models / PyTorch Project · Serialization semantics

開けないとき:症状から確認

  • Missing key(s) / Unexpected key(s):モデル構造、保存した辞書の階層、学習時と推論時のラッパーを確認します。module.などの接頭辞が見えても、無条件に削除する前に保存元の定義を確認します。
  • size mismatch:層の幅、クラス数、モデル設定などが重みのテンソル形状と合っていません。strict=Falseだけで解消できるとは限らず、部分読み込みが目的の推論結果を保証するわけでもありません。
  • CUDA device関連のエラー:対応するロードでmap_location="cpu"を指定する方法があります。ただしモデル本体や後処理がGPU専用なら、読み込めてもCPUで全処理が動くとは限りません。
  • Weights only load failed / Unsupported global:保存形式と対応版を配布元に確認します。エラーの指示をそのまま使ってweights_only=Falseへ変更したり、未知のクラスを許可リストへ追加したりしないでください。
  • ModuleNotFoundError:モデル全体の保存に元のクラスが必要な場合があります。信頼できる配布元に依存関係を確認し、可能なら重みだけの提供を依頼します。
  • アーカイブの読み取りエラー・予想より小さいファイル:ダウンロードが途中でないか、取得したものがHTMLのエラーページでないかを確認します。配布元の容量やハッシュがあれば照合します。
  • メモリー不足:ファイル容量だけで実行に必要なRAM・VRAMは決まりません。モデル構造や入力サイズを確認します。CPUへのロード指定は、メモリー使用量をゼロにする設定ではありません。
  • Pythonパス設定のPTHでimportに失敗:使用中のPythonと対象パス、環境の切り替えを確認します。AIモデルのロードやONNX変換で直す問題ではありません。

PTH → ONNX / Safetensors:用途を確認して書き出す

  1. 信頼できるモデル定義、重み、前処理・入力仕様を揃え、元の環境で期待した結果が出ることを確認します。
  2. ONNXはモデルの計算を出力する選択肢です。入力例、演算の対応、動的な形状、書き出し先の実行環境に合わせた条件を確認します。
  3. Safetensorsは主にテンソルの保存用です。state_dict等から必要なテンソルを取り出す方針と、使用先の期待する名前・構造を確認します。モデルのPythonコード一式を置き換えるものではありません。
  4. 出力を別名で保存し、同じ入力で結果、形状、精度、速度を比較します。Pythonのパス設定PTHはモデル変換の対象にしません。

.pthを.onnxや.safetensorsに改名しても変換できません。変換前にPTHをロードする工程自体にもリスクがあるため、配布元が提供する希望形式を取得できるなら、その対応版を確認します。

関連形式との違い

関連形式との違い
形式主な違い
.pth / .ptPyTorch保存で使う慣例的な拡張子。重み・オブジェクト・チェックポイントのどれかは保存方法次第。
.safetensorsテンソルを保存する形式。利用先のモデル構造やパラメーター名との一致が必要。
.onnxモデルの計算グラフなどを扱う交換形式。演算対応と実行環境を確認。
PythonのテキストPTHパス設定などに使う別用途。AIモデルではない。

取り扱いと安全性

PyTorchの保存方法によってはpickleを通したコード実行が起こり得ます。weights_only=Trueは読み込み対象を制限しますが、すべての危険やメモリー枯渇を防ぐ保証ではありません。提供元、配布条件、ファイルの一致、更新済みの対応環境を確認し、出所不明のモデルをロードしないでください。Python設定のPTHにも、版によって起動時に実行されるimport行があり得ます。

よくある質問

ダブルクリックすればAIモデルが動きますか?

通常は動きません。対応ツールか、モデル定義を用意したPyTorch環境からロードして使います。

PTHの重みだけでモデルを完全に復元できますか?

モデル構造、設定、前処理などが必要です。学習再開ではオプティマイザー等の状態も必要になる場合があります。

strict=Falseなら違うモデルへ読み込めますか?

互換性を保証しません。キーや形状の違いと、実際に読み込めたパラメーターを確認します。元のモデルと異なる結果になる可能性があります。

CPUに読み込めばGPUなしで全部動きますか?

保証できません。重みのロード先と、モデル・演算・アプリ全体の実行条件は別です。

weights_only=Trueなら出所不明でも安全ですか?

いいえ。安全保証ではなく、無条件に読み込む理由にはなりません。ファイルの提供元と対応環境を確認します。

同じPTHならどのAIアプリでも使えますか?

使えません。モデル構造、用途、世代、保存方式と、ツール側の対応が一致する必要があります。

site-packagesのPTHは削除してよいですか?

パッケージの読み込みを壊す場合があります。モデルファイルと混同せず、該当パッケージの修復・削除手順を確認します。

形式の基本情報:正式名称・MIME type・管理団体
名称
PyTorchモデル保存 / Pythonパス設定(用途による)
管理・仕様
PyTorch Project / Python Software Foundation
MIME type
作成元・配信元の指定による。拡張子だけでMIME typeは確定できません。

公式・一次情報

  • プロジェクト公式Saving and Loading Models

    state_dict、モデル全体、チェックポイントを区別する資料です。

    PyTorch Project · リンク確認:
  • プロジェクト公式torch.load

    map_location、weights_only、信頼できない入力への警告を確認できます。

    PyTorch Project · リンク確認:
  • プロジェクト公式Serialization semantics

    制限付き読み込みの仕組みと、安全性が保証されない範囲の説明です。

    PyTorch Project · リンク確認:
  • プロジェクト公式torch.onnx

    モデル定義と入力例を使ったONNX書き出しの条件です。

    PyTorch Project · リンク確認:
  • プロジェクト公式site — Site-specific configuration hook

    パス設定PTH、起動時処理、Pythonの版による違いを確認できます。

    Python Software Foundation · リンク確認:
  • プロジェクト公式Safetensors

    テンソル保存形式と、PyTorch保存オブジェクトとの違いの資料です。

    Hugging Face · リンク確認: