开源模型到底开源了什么?

当你看到一个模型标注"开源"时,它到底给了你什么?权重?训练数据?训练代码?本文用实际例子拆解开源模型的"开放边界"。


一、一句话回答

开源模型 = 公开权重(参数)。权重就是模型学到的那几十亿个数字,是模型的"全部知识"。

但"开源"的程度各不相同——有的给全套,有的只给权重,训练数据通常不给。


二、一个模型仓库里有什么?

以你的 Hugging Face 下载目录为例:

Qwen3.5-0.8B/                    ← 一个完整的开源模型
├── model.safetensors            ← ★ 权重文件(8亿个数字)
├── config.json                  ← 模型架构配置
├── tokenizer.json               ← 分词器(词汇表)
├── tokenizer_config.json        ← 分词器配置
├── chat_template.jinja          ← 对话模板
├── vocab.json / merges.txt      ← 词汇表原始数据
├── LICENSE                      ← 许可证(使用条款)
└── README.md                    ← 模型说明

各文件的作用

文件 内容 大小 开源?
model.safetensors 8 亿个权重数字 1.6 GB 核心!
config.json 24层、hidden_size=1024 等 2.9 KB 是
tokenizer.json 248,320 个词汇 12.8 MB 是
chat_template.jinja 对话格式模板 7.8 KB 是
LICENSE Apache 2.0 11 KB 是

model.safetensors 就是模型的全部"知识"——那 8 亿个 BF16 数字。 有了它,你就可以在本地运行、微调、量化这个模型。


三、开源 vs 不开源,到底差在哪?

开源的内容(你拿得到的):
├── 权重文件        ← 模型的"大脑",最核心的东西
├── 架构配置        ← 模型的结构图纸
├── 分词器          ← 模型的"语言字典"
├── 推理代码        ← 怎么运行这个模型
└── 许可证          ← 你可以怎么用

不开源的内容(你通常拿不到的):
├── 训练数据        ← 用什么数据训练的(商业机密)
├── 训练代码        ← 怎么训练的(可能部分公开)
├── RLHF 数据       ← 人类反馈偏好数据(核心机密)
├── 训练日志        ← 训练过程的 loss 曲线等
└── 基础设施细节    ← 用了多少 GPU、训练了多久

为什么不给训练数据?

训练数据 = 模型的"教材"

如果公开教材:
  1. 版权风险:训练数据包含大量网页、书籍、代码,版权不明确
  2. 隐私风险:可能包含个人信息
  3. 竞争壁垒:高质量训练数据是公司的核心竞争力
  4. 安全风险:可能被用来生成有害内容

四、实际例子:各模型的开源程度

4.1 Qwen(通义千问)— 阿里 — 开源程度:高

公开:
  ✅ 权重(0.6B / 1.7B / 4B / 8B / 14B / 32B / 72B 全系列)
  ✅ 架构代码
  ✅ 分词器
  ✅ 推理代码
  ✅ 技术报告(论文级别的设计说明)
  ✅ Apache 2.0 许可证(商用友好)

不公开:
  ❌ 训练数据(万亿级 token 的网页/书籍/代码)
  ❌ RLHF 偏好数据
  ❌ 训练基础设施细节

你能做的:下载 → 本地运行 → 微调 → 量化 → 商用部署。

4.2 Llama(Meta)— 开源程度:中高

公开:
  ✅ 权重(8B / 70B / 405B)
  ✅ 架构代码
  ✅ 分词器
  ✅ 技术报告

限制:
  ⚠️ 自定义许可证(非 Apache 2.0,月活>7亿的公司需申请)
  ⚠️ 训练数据不公开

不公开:
  ❌ 训练数据
  ❌ RLHF 数据

你能做的:下载 → 本地运行 → 微调 → 量化 → 大部分场景商用。

4.3 DeepSeek — 开源程度:高

公开:
  ✅ 权重(R1-Distill 系列、V2/V3)
  ✅ 架构代码
  ✅ 分词器
  ✅ 技术报告(MoE 架构设计详细公开)
  ✅ MIT 许可证(最宽松的开源协议)

不公开:
  ❌ 训练数据
  ❌ RLHF 数据

你能做的:下载 → 本地运行 → 微调 → 量化 → 任何用途(MIT 协议最宽松)。

4.4 GPT-4(OpenAI)— 不开源

不公开:
  ❌ 权重
  ❌ 架构
  ❌ 分词器
  ❌ 训练数据
  ❌ 训练代码

你能做的:
  → 只能通过 API 调用(付费,按 token 计价)
  → 不能下载、不能微调、不能离线运行

4.5 Claude(Anthropic)— 不开源

同 GPT-4,只提供 API 服务。

4.6 开源程度对照表

模型 权重 架构 分词器 技术报告 训练数据 许可证
Qwen3.5 ✅ ✅ ✅ ✅ ❌ Apache 2.0
DeepSeek-R1 ✅ ✅ ✅ ✅ ❌ MIT
Llama 3.1 ✅ ✅ ✅ ✅ ❌ Llama 协议
GPT-4 ❌ ❌ ❌ 部分 ❌ 无(仅 API)
Claude ❌ ❌ ❌ 部分 ❌ 无(仅 API)

五、权重文件里面到底是什么?

5.1 本质:一个巨大的数字数组

from safetensors import safe_open

# 打开权重文件
with safe_open("model.safetensors", framework="pt") as f:
    # 查看所有张量(参数组)的名称和形状
    for key in f.keys():
        tensor = f.get_tensor(key)
        print(f"{key:50s}  {list(tensor.shape)}  {tensor.dtype}")

输出类似:

model.embed_tokens.weight           [248320, 1024]  torch.bfloat16
model.layers.0.self_attn.q_proj     [1024, 256]     torch.bfloat16
model.layers.0.self_attn.k_proj     [1024, 256]     torch.bfloat16
model.layers.0.self_attn.v_proj     [1024, 256]     torch.bfloat16
model.layers.0.self_attn.o_proj     [256, 1024]     torch.bfloat16
model.layers.0.mlp.gate_proj        [1024, 3584]    torch.bfloat16
model.layers.0.mlp.up_proj          [1024, 3584]    torch.bfloat16
model.layers.0.mlp.down_proj        [3584, 1024]    torch.bfloat16
...
model.layers.23.mlp.down_proj       [3584, 1024]    torch.bfloat16
lm_head.weight                      [248320, 1024]  torch.bfloat16

每一行就是一个参数矩阵,里面全是 BF16 数字。

5.2 看看具体数字

import torch
from safetensors import safe_open

with safe_open("model.safetensors", framework="pt") as f:
    # 取出第1层的 Q 投影矩阵
    q_proj = f.get_tensor("model.layers.0.self_attn.q_proj")

    # 看前 5×5 个权重
    print(q_proj[:5, :5])

输出:

tensor([[ 0.0234, -0.0156,  0.0312,  0.0078, -0.0469],
        [-0.0039,  0.0195, -0.0273,  0.0117,  0.0059],
        [ 0.0430, -0.0098,  0.0020, -0.0352,  0.0176],
        [-0.0215,  0.0391,  0.0059, -0.0020, -0.0293],
        [ 0.0137, -0.0254,  0.0410,  0.0195, -0.0117]], dtype=torch.bfloat16)

这就是开源的内容——这些具体的数字。 每个权重就是一个 BF16 浮点数,像 0.0234、-0.0156 这样。


六、有了权重能做什么?

开源权重 → 你可以:

1. 本地运行(离线推理)
   python -c "from transformers import AutoModelForCausalLM; ..."

2. 微调(用你自己的数据修改权重)
   → 你的 HXXedge:在 Qwen3.5-0.8B 权重基础上 LoRA 微调

3. 量化(压缩精度,减小体积)
   → 你的 RKLLM:BF16 权重 → W8A8 INT8 量化

4. 部署到边缘设备
   → 你的香橙派:rkllm-server 加载量化后的模型

5. 研究分析
   → 看权重分布、剪枝、蒸馏...

闭源模型(GPT-4)这些全做不了——你只能调 API。


七、"开源"的灰色地带

7.1 "开源"vs "开放权重"

严格来说,很多"开源模型"其实应该叫"开放权重(Open Weights)":

术语 含义 代表
真正的开源 权重 + 训练代码 + 训练数据全部公开 OLMo(Allen AI)
开放权重 只公开权重,不公开训练数据 Qwen、Llama、DeepSeek
闭源 什么都不公开,只提供 API GPT-4、Claude

业界习惯把"开放权重"也称为"开源",但严格意义上有区别。

7.2 许可证很重要

MIT 许可证(DeepSeek):
  → 你可以做任何事,包括商用,几乎无限制

Apache 2.0(Qwen):
  → 你可以做任何事,包括商用,需保留版权声明

Llama 协议(Meta):
  → 大部分场景免费商用
  → 月活>7亿的公司必须单独申请

Qwen 协议(部分版本):
  → 月活>1亿的公司需要申请

八、总结

开源模型 = 给你权重(那几十亿个数字)+ 配置 + 分词器

你能做的:
  ✅ 下载到本地
  ✅ 离线运行
  ✅ 用自己的数据微调
  ✅ 量化压缩
  ✅ 部署到任何硬件

你拿不到的:
  ❌ 训练数据(用什么教材训练的)
  ❌ RLHF 偏好数据(人类怎么教的)
  ❌ 训练基础设施(用了多少 GPU)

一句话:开源给你的是模型的"大脑"(权重),
       但不告诉你"怎么长大的"(训练过程)。

相关链接

相关笔记