模型的基础知识、主流格式

前言

模型训练的三个阶段

image-20260202103136112

预训练 => 监督微调 => 偏好排序(RLHF)

方法 数据类型 目标 是否需要人类标注
预训练 无标签文本(如网页、书籍) 学习语言建模 ❌ 否
SFT 人工标注的 (指令, 回答) 对 学会遵从指令 ✅ 是
RLHF / DPO 人类偏好排序(A 比回答 B 好) 学会生成“更受欢迎”的回答 ✅ 是(更昂贵)

模型格式

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

主流模型存储格式

框架原生格式

格式 扩展名 特点 优点 缺点 适用场景
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)是边缘/私有部署的黄金组合

相关知识

模型名解析

Dense 稠密

全参数加载

MOE架构 稀疏

Qwen3-235B-A22B-Instruct-2507

  • 235B 总参数数量
  • A22B 推理时激活的参数数量
  • Instruct 监督微调后的模型

参数数量与显存

1B = 10亿

部署

场景 每参数显存估算 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 精度输出,保证数值稳定性。

企业推理框架

ollama适合个人 内部是llama.cpp封装的,不适合企业。

VLLM

vLLM 本身是一个高性能大语言模型推理引擎(Python 库),它内置 HTTP API 服务。因此,默认监听8000端口

1
2
3
4
5
6
7
8
VLLM_USE_MODELSCOPE=true vllm serve zai-org/GLM-4.7-Flash \
--tensor-parallel-size 4 \
--speculative-config.method mtp \
--speculative-config.num_speculative_tokens 1 \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--enable-auto-tool-choice \
--served-model-name glm-4.7-flash