PyTorchモデル / 重み
AI・機械学習PTHは、PyTorchで保存したAIモデルの重み・チェックポイントと、Pythonのパス設定で使われる別用途の拡張子です。AIモデルでも、重みだけ、学習再開用データ、モデル全体の保存では読み込み方が違います。ファイル名だけで対応ツールや安全性を決めず、入手元の説明と保存方法を確認して使います。
- 主な用途
- モデルの重み保存、またはPythonのパス設定
- 中身の種類
- 作成元により異なる
目次・よくある質問・根拠資料を見る
内容の最終確認: · 編集:Kai
最初に見分ける:AIモデルかPython設定か
| 入手場所・説明 | 考えられる用途 | 最初の確認 |
|---|---|---|
| モデル配布ページ・学習出力フォルダー | PyTorchの重み・チェックポイント | モデル名、構造、保存方法、対応アプリの版を確認 |
| site-packages | Pythonのパス設定 | テキストとして確認。知らない設定を配置・実行しない |
| 出所不明の添付・ダウンロード | 拡張子だけでは判定不能 | 提供元を確認するまでロードしない |
容量やテキスト表示は手掛かりであり、確定判定ではありません。メモ帳などを先に起動し「ファイル」→「開く」でコピーを確認できますが、文字が読めることも安全性の証明にはなりません。
開き方・操作手順
使っている環境や目的の項目を開いて、手順を確認してください。
操作名・対応状況はアプリ・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:用途を確認して書き出す
- 信頼できるモデル定義、重み、前処理・入力仕様を揃え、元の環境で期待した結果が出ることを確認します。
- ONNXはモデルの計算を出力する選択肢です。入力例、演算の対応、動的な形状、書き出し先の実行環境に合わせた条件を確認します。
- Safetensorsは主にテンソルの保存用です。state_dict等から必要なテンソルを取り出す方針と、使用先の期待する名前・構造を確認します。モデルのPythonコード一式を置き換えるものではありません。
- 出力を別名で保存し、同じ入力で結果、形状、精度、速度を比較します。Pythonのパス設定PTHはモデル変換の対象にしません。
.pthを.onnxや.safetensorsに改名しても変換できません。変換前にPTHをロードする工程自体にもリスクがあるため、配布元が提供する希望形式を取得できるなら、その対応版を確認します。
関連形式との違い
| 形式 | 主な違い |
|---|---|
| .pth / .pt | PyTorch保存で使う慣例的な拡張子。重み・オブジェクト・チェックポイントのどれかは保存方法次第。 |
| .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 · リンク確認: