2025年2月17日 星期一

深度學習模型權重檔案格式與存放目錄

 隨著深度學習模型的發展,越來越多的開發者透過 GitHubHugging Face 分享模型權重,以便其他人可以下載並加以應用。但不同的深度學習框架有各自的儲存格式與資料夾結構,因此了解這些規範能幫助我們更快速找到所需的模型。

1. 常見的深度學習權重檔案格式

不同的深度學習框架使用不同的檔案格式來儲存模型的權重,以下是最常見的副檔名:

副檔名

用途

對應框架

.bin

PyTorch 模型權重 (Hugging Face)

PyTorch

.pth / .pt

PyTorch 權重 (state_dict 或完整模型)

PyTorch

.safetensors

更安全的 PyTorch 權重存儲格式

PyTorch, Hugging Face

.pb

TensorFlow Frozen Graph

TensorFlow

.ckpt

TensorFlow PyTorch Checkpoint

TensorFlow, PyTorch

.h5

Keras/TensorFlow 權重

TensorFlow, Keras

.tflite

TensorFlow Lite 模型

TensorFlow Lite

.msgpack

Chainer 權重存儲格式

Chainer

.npz

JAX NumPy 存儲格式

JAX, NumPy

.onnx

ONNX 格式,方便跨框架使用

ONNX


當下載 Hugging Face 或 GitHub 上的模型時,可以根據這些副檔名來判斷模型的格式並選擇合適的框架來載入。


2. 深度學習模型權重的儲存目錄

不同的框架與專案通常會將模型權重存放在特定的目錄中,以下是最常見的結構與對應的儲存位置:

(1) Hugging Face (transformers, diffusers, sentence-transformers 等)

Hugging Face 的模型通常儲存在 model 相關的資料夾下,例如:

/model
  ├── config.json
  ├── pytorch_model.bin  # PyTorch 權重
  ├── model.safetensors  # SafeTensors 權重
  ├── tf_model.h5        # TensorFlow 權重
  ├── tokenizer.json
  ├── special_tokens_map.json

有些大型模型(如 LLaMA)會有多個拆分的 .bin 權重檔案:

/model
  ├── pytorch_model-00001-of-00003.bin
  ├── pytorch_model-00002-of-00003.bin
  ├── pytorch_model-00003-of-00003.bin
  ├── tokenizer.json
  ├── config.json

📌 相關目錄/model/, /weights/, /checkpoints/, /snapshots/


(2) PyTorch(GitHub 上常見的專案結構)

PyTorch 模型的權重通常儲存在 weightscheckpoints 目錄:

/project_root
  ├── models/
  │   ├── model.py
  │   ├── __init__.py
  ├── weights/
  │   ├── best_model.pth
  │   ├── last_checkpoint.pth
  ├── checkpoints/
  │   ├── epoch_10.pth
  │   ├── epoch_20.pth

📌 相關目錄/weights/, /checkpoints/, /models/, /logs/


(3) TensorFlow/Keras

TensorFlow 和 Keras 的權重通常儲存在 checkpointssaved_model 目錄:

/project_root
  ├── checkpoints/
  │   ├── model.ckpt.index
  │   ├── model.ckpt.data-00000-of-00001
  │   ├── checkpoint
  ├── saved_model/
  │   ├── assets/
  │   ├── variables/
  │   ├── saved_model.pb

📌 相關目錄/checkpoints/, /saved_model/, /logs/


(4) ONNX(跨框架模型)

ONNX 模型通常存放在 onnx_modelsexported_models 目錄:

/project_root
  ├── onnx_models/
  │   ├── model.onnx
  ├── exported_models/
  │   ├── model.onnx

📌 相關目錄/onnx_models/, /exported_models/


(5) 擴散模型(Stable Diffusion, ControlNet)

擴散模型通常使用 .safetensors.ckpt 格式,並存放在 models 目錄中:

/stable-diffusion
  ├── models/
  │   ├── stable-diffusion-v1-4.ckpt
  │   ├── stable-diffusion-v2.safetensors
  ├── configs/
  │   ├── v1-inference.yaml

📌 相關目錄/models/, /diffusion_models/


總結

框架/類型

常見儲存目錄

Hugging Face

/model//weights//checkpoints//snapshots/

PyTorch

/weights//checkpoints//models//logs/

TensorFlow

/checkpoints//saved_model//logs/

ONNX

/onnx_models//exported_models/

擴散模型

/models//diffusion_models/