模型的格式及下载

前言

模型格式

深度学习模型的存储格式多样,按用途、框架、安全性、部署场景可分为以下几类。
以下是全面、清晰的分类解析(附对比表格与选择指南):

主流模型存储格式

框架原生格式

格式 扩展名 特点 优点 缺点 适用场景
PyTorch 原生 .pt / .pth / .bin 基于 pickle 序列化 保留完整训练状态(模型+优化器+epoch) ⚠️ 安全风险高(可执行任意代码) 本地训练 checkpoint
Safetensors .safetensors 纯张量二进制 + JSON 头 ✅ 安全(无代码执行) ✅ 加载快 20–50% ✅ 跨框架(PT/TF/Flax) 不含模型结构(需配合 config.json Hugging Face 新标准,推荐下载
TensorFlow SavedModel 目录(含 saved_model.pb + variables/) 完整计算图 + 权重 生产部署友好,TF Serving 原生支持 体积大,目录结构复杂 TensorFlow 服务化部署
Keras HDF5 .h5 HDF5 格式存储权重/结构 人类可读元数据,Keras 原生支持 仅限 Keras,大模型加载慢 Keras 项目快速保存
JAX/Flax .msgpack / .flax Flax 原生序列化 与 JAX 生态深度集成 社区较小 JAX 项目

跨框架交换格式

模型迁移

格式 扩展名 核心价值 注意事项
ONNX .onnx 框架无关(PT/TF/MXNet → ONNX) 需验证算子兼容性;动态 shape 需显式指定
PMML .pmml 传统机器学习模型交换(Sklearn/XGBoost) 深度学习支持弱,逐渐被 ONNX 取代

💡 工具链:torch.onnx.export() / tf2onnx / skl2onnx

推理优化格式

格式 扩展名 优化方向 适用平台
TensorRT .engine / .plan NVIDIA GPU 极致加速(FP16/INT8) NVIDIA GPU 服务器
OpenVINO .xml + .bin Intel CPU/GPU 优化 Intel 硬件
TensorFlow Lite .tflite 移动端/嵌入式轻量化 Android/iOS/树莓派
Core ML .mlmodel Apple 全生态优化 iOS/macOS
TorchScript .pt PyTorch 固化计算图 LibTorch C++ 部署

量化专用格式

格式 扩展名 特点 适用工具链
GGUF .gguf CPU 友好,支持 INT4/5/8 量化 llama.cpp(本地运行 LLM 首选)
AWQ / GPTQ .safetensors(带量化元数据) GPU 友好,4-bit 量化 vLLM / AutoGPTQ / SGLang
bitsandbytes 框架内量化 训练时 4/8-bit 量化 Hugging Face transformers + accelerate

重要趋势

量化权重普遍采用 .safetensors 作为载体(如 model-00001-of-00002.safetensors),兼顾安全与效率。

其他格式

格式 说明
Diffusers 分片 Stable Diffusion 模型常拆分为 model.safetensors.index.json + 多个 .safetensors 分片
Caffe .caffemodel(历史格式,已少用)
Pickle 泛用 .pkl(Sklearn 模型等,同样有安全风险)

核心对比总结

维度 推荐格式 原因
安全下载 .safetensors 无 pickle 风险,Hugging Face 新模型默认提供
本地训练保存 .pt(含 optimizer) 便于断点续训
跨框架迁移 .onnx 生态工具链成熟
NVIDIA GPU 部署 TensorRT .engine 性能最优
CPU 本地运行 LLM GGUF .gguf llama.cpp 支持,低资源可用
大模型量化部署 AWQ/GPTQ + .safetensors vLLM/SGLang 原生支持

一句话选择指南

你的需求 选这个格式
我想安全下载开源模型 认准 .safetensors
我要在手机上跑模型 TFLite / Core ML
我要在 NVIDIA 服务器部署 TensorRTAWQ + vLLM
我要把 PyTorch 模型给 TensorFlow 用 ONNX
我只有 CPU 想跑 7B 大模型 GGUF (Q4_K_M)

行业趋势

Safetensors 已成为开源模型分发的新标准(Hugging Face、ModelScope、OpenRouter 均优先提供),
量化格式(GGUF/AWQ)+ 安全载体(.safetensors)是边缘/私有部署的黄金组合

模型下载

虚拟环境创建

Python虚拟环境-Miniconda的部署和使用 | 码客说

创建虚拟环境

1
conda create -n DeepSeek-OCR-2 python=3.10 -y

激活环境

1
conda activate DeepSeek-OCR-2

取消激活

1
conda deactivate

激活虚拟环境后

安装ModelScope

1
pip install modelscope

下载模型

方式1

指定下载目录

1
modelscope download --model deepseek-ai/DeepSeek-OCR-2 --local_dir "D:\AI\Models\DeepSeek-OCR-2"

方式2

下面这种方式会在设置的目录下自动创建models文件夹

1
2
3
4
5
6
7
# Linux/macOS
export MODELSCOPE_CACHE=/data/ai
modelscope download --model deepseek-ai/DeepSeek-OCR-2

# Windows (PowerShell)
$env:MODELSCOPE_CACHE="D:\AI"
modelscope download --model deepseek-ai/DeepSeek-OCR-2

方式3(推荐)

添加环境变量

image-20260129165749380

然后这样下载

1
modelscope download --model deepseek-ai/DeepSeek-OCR-2

相关知识

参数数量与显存

部署

场景 每参数显存估算 7B 模型示例
FP32 推理 4 字节 ~28 GB
BF16 推理 2 字节 ~14 GB
INT8 推理 1 字节 ~7 GB
INT4 推理 0.5 字节 ~3.5 GB
Adam 训练(无优化) ~12–20 字节 >100 GB
ZeRO-3 分片训练 ~2–4 字节 ~14–28 GB(多卡分摊)

微调

微调方法 显存需求 是否需要多卡 典型硬件
全参数微调 >100 GB ✅ 是 2×A100 80G / 8×V100
LoRA 20–25 GB ❌ 否 RTX 3090/4090 (24G)
QLoRA 14–18 GB ❌ 否 RTX 3080 (16G) 起
Prompt Tuning <5 GB ❌ 否 任意消费级显卡

LoRA

显存≈(原参数量×2)+(LoRA 参数量×12)显存≈(原参数量×2)+(LoRA 参数量×12)

7B 模型 + LoRA(0.5% 参数)

  • 原模型:7B × 2B = 14 GB
  • LoRA 参数:35M × 12B ≈ 0.42 GB
  • 激活值:~5–10 GB(取决于 batch size)

总计:~20–25 GB → 单张 RTX 3090/4090(24G) 可运行

张量类型

张量类型通常指张量所使用的数据格式(数值类型),用于表示其中每个元素的存储方式和精度。

常见于深度学习、科学计算和硬件加速场景。

张量(Tensor) 是数学和计算机科学中的一个基本概念,可以看作是标量、向量、矩阵的高维推广。它的核心思想是:用一个多维数组来表示具有多个方向或维度的数据

名称 阶数(Rank) 数学对象 编程中的形式 示例
标量 0 单个数值 5 温度、损失值
向量 1 一维数组 [1, 2, 3] 词嵌入、坐标
矩阵 2 二维数组 [[1,2],[3,4]] 图像灰度图、权重矩阵
张量 ≥3 三维及以上数组 shape=(64, 224, 224, 3) 彩色图像批次、视频、特征图

常见张量类型举例:

  • F32:32位单精度浮点数(标准高精度浮点)
  • F16:16位半精度浮点数(节省内存,适合推理)
  • BF16:Brain Float16,16位浮点,指数位与F32相同,动态范围大,适合训练
  • I32 / I64:32位或64位整数,常用于索引、计数
  • UINT8:8位无符号整数,常用于图像像素或量化模型

示例:

张量类型 BF16·I32·F32 表示:

  • 主数据(如权重、激活)以 BF16 存储;
  • 操作中使用了 I32 类型的索引或整数参数
  • 计算结果或累加值以 F32 精度输出,保证数值稳定性。