《大模型的文件形态:Qwen3 文件结构与计算流程深度拆解》
本文以Qwen3-8B模型为例,系统解析了大语言模型的文件结构与计算原理。模型目录包含四类核心文件:架构说明书(config.json)、参数张量(safetensors)、输入编码规则(tokenizer.*)和生成控制参数(generation_config.json)。其中,safetensors文件存储了约80亿个bfloat16格式的权重参数,包括嵌入层、注意力层和MLP层等。文章详细拆
《大模型的文件形态:Qwen3 文件结构与计算流程深度拆解》

作者:吴佳浩
撰稿时间:2026-2-26
最后更新:2026-2-27
测试模型: Qwen3-8B
引言:
不知道有多少同学在使用大模型时,认真思考过一个问题:
大模型,究竟是由什么组成的?
我们每天调用接口,输入一段文字,几秒钟后得到一段看似“聪明”的回答。
它能写代码、能分析问题、能推理、能翻译,甚至能模拟人的思考方式。
但当我们把视角从“使用者”切换到“工程师”,问题就变了:
- 模型真的“会思考”吗?
- 那些参数到底存在哪里?
- 为什么一个文件夹可以装下 80 亿个参数?
- 一堆
.safetensors文件,是如何变成智能行为的?
如果把模型下载到本地,你会发现——
它并不是一个“神秘黑盒”。
它只是:
- 一份结构描述文件
- 一堆巨大的矩阵权重
- 以及一条固定的计算路径
当输入经过这条路径时,输出自然出现。
换句话说:
大模型不是魔法,它只是被高度工程化的数学。
这篇文章,我们就以 Qwen3 为例,拆开模型目录,
从文件结构、参数分布,到推理流程与数学本质,
彻底看看——
大模型,究竟是如何“被装进一个文件夹里的”。
前置说明:
本文以 Qwen3 系列模型为例,系统讲解大语言模型目录结构、参数本质与推理原理。
1.Qwen3?
Qwen3 是阿里巴巴通义实验室发布的大语言模型系列,涵盖从 0.6B 到 235B 的多个规模版本,支持文本生成、代码、数学推理等任务。(其实国内的开源狂魔他比较有代表性,我个人用的他家的系列也比较多 所以就以它举例了!)
典型型号:
Qwen3-0.6BQwen3-1.7BQwen3-4BQwen3-8BQwen3-14BQwen3-32BQwen3-30B-A3B(MoE 架构)Qwen3-235B-A22B(MoE 架构)
2. 模型目录结构
当你从 HuggingFace 或 ModelScope 下载 Qwen3 模型后,会得到一个目录,结构如下:
Qwen3-8B/
├── config.json
├── generation_config.json
├── tokenizer.json
├── tokenizer_config.json
├── vocab.json
├── merges.txt
├── model.safetensors.index.json
├── model-00001-of-00005.safetensors (4 GB)
├── model-00002-of-00005.safetensors (3.99 GB)
├── model-00003-of-00005.safetensors (3.96 GB)
├── model-00004-of-00005.safetensors (3.19 GB)
├── model-00005-of-00005.safetensors (1.24 GB)
├── README.md
└── LICENSE
这些文件从功能上可以归为四类:
3. 核心文件详解
3.1 config.json — 架构说明书
这个文件告诉框架(如 Transformers)如何把参数矩阵拼装成完整的神经网络。
{
"model_type": "qwen3",
"hidden_size": 4096,
"num_hidden_layers": 32,
"num_attention_heads": 32,
"num_key_value_heads": 8,
"intermediate_size": 22016,
"max_position_embeddings": 32768,
"vocab_size": 151936,
"rms_norm_eps": 1e-06,
"rope_theta": 1000000.0,
"torch_dtype": "bfloat16"
}
关键字段解读:
hidden_size: 每个 token 经过模型后的向量维度,8B 模型为 4096num_hidden_layers: Transformer 层数,8B 模型为 32 层num_attention_heads: 多头注意力的头数num_key_value_heads: GQA(分组查询注意力)中 KV 头数,8 表示用了 GQA 压缩vocab_size: 词表大小,Qwen3 约 15 万词rope_theta: RoPE 位置编码的基础频率
没有 config.json,你只有一堆无法解读的数字矩阵。
3.2 safetensors — 参数张量集合
这是模型的"真正内容",存储了所有可学习参数的数值。
什么是 Tensor(张量)?
在 Qwen3 中,safetensors 存储的主要参数类型:
为什么文件这么大?
以 Qwen3-8B 为例:
参数量:约 80 亿(8B)
每个参数精度:bfloat16 = 2 字节
磁盘大小:80亿 × 2 字节 ≈ 16 GB
文件分片原因:单个文件超过 4-5GB 时,HuggingFace 会自动分片为多个 .safetensors 文件,由 model.safetensors.index.json 记录每个参数在哪个分片里。
safetensors vs pytorch_model.bin
pytorch_model.bin → Python pickle 格式,存在安全风险,加载慢
safetensors → 专为 ML 设计,内存映射,加载快,安全
Qwen3 默认使用 safetensors 格式。
3.3 Tokenizer — 语言编解码规则
Tokenizer 不是模型参数,它是一套独立的文字与 token id 双向转换规则。
Qwen3 使用的是基于 BPE(字节对编码)的分词方案,词表大小约 151,936。
主要文件:
tokenizer.json:完整的词表和合并规则,核心文件vocab.json:token 到 id 的映射表merges.txt:BPE 合并规则tokenizer_config.json:tokenizer 类型、特殊配置及特殊 token 定义(如<|im_start|>、<|im_end|>,Qwen3 将其合并在此文件中)
Qwen3 的 ChatML 格式模板:
<|im_start|>system
你是一个有帮助的助手。<|im_end|>
<|im_start|>user
你好<|im_end|>
<|im_start|>assistant
你好!有什么可以帮你的?<|im_end|>
3.4 generation_config.json — 生成控制
这个文件控制模型如何"采样"输出:
{
"temperature": 0.7,
"top_p": 0.8,
"top_k": 20,
"repetition_penalty": 1.05,
"max_new_tokens": 8192
}
temperature:值越低输出越确定,值越高越随机;0 表示完全贪心解码top_p:核采样,只从累积概率达到 p 的 token 中采样top_k:只从概率最高的 k 个 token 中采样repetition_penalty:惩罚重复出现的 token
Qwen3 支持 Thinking 模式(类似 o1),可通过 enable_thinking=True 开启,此时模型会在 <think>...</think> 标签内输出推理过程。
4. 模型推理的完整流程
每个 Transformer Block 的内部结构:
5. Qwen3 的关键技术特性
5.1 GQA(分组查询注意力)
标准 MHA 与 GQA 的对比:
GQA 的好处:显著减少 KV Cache 内存占用,推理速度更快。
5.2 RoPE(旋转位置编码)
Qwen3 使用 RoPE 而非传统的绝对位置编码:
传统位置编码:position 1 → 固定向量加到 embedding 上
RoPE:通过旋转矩阵编码相对位置关系,天然支持长上下文外推
Qwen3 的 rope_theta = 1,000,000,支持最长 32,768 token 上下文(部分版本支持 131,072)。
5.3 MoE 架构(Qwen3-30B-A3B / 235B-A22B)
混合专家模型(Mixture of Experts):
Qwen3-235B-A22B 表示:总参数 235B,但每次推理只激活 22B,计算量大幅降低,推理效率接近 22B 模型。
6. 参数规模与资源需求
不同版本 Qwen3 的资源对照:
Qwen3-0.6B → 约 1.2 GB → CPU 或入门 GPU
Qwen3-1.7B → 约 3.4 GB → 4GB 显存 GPU
Qwen3-4B → 约 8 GB → 8GB 显存 GPU
Qwen3-8B → 约 16 GB → 24GB 显存 GPU(如 RTX 3090)
Qwen3-14B → 约 28 GB → 2x A100 40G 或量化后单卡
Qwen3-32B → 约 64 GB → 4x A100 40G
Qwen3-235B → 约 470 GB → 多节点推理 / 量化压缩
计算公式:
磁盘大小(GB)= 参数量(B)× 精度字节数
bfloat16:每参数 2 字节 → 8B × 2 = 16 GB
int8: 每参数 1 字节 → 8B × 1 = 8 GB
int4: 每参数 0.5字节 → 8B × 0.5 = 4 GB
7. 从数学角度的本质
整个推理过程可以用一个公式概括:
y = f(x; θ)
其中:
x:输入的 token id 序列θ:所有参数矩阵(存储在 safetensors 中)f:网络结构(由 config.json 定义)y:输出的概率分布
参数 θ 在推理阶段是完全冻结的,不会更新。所有的"智能"都已经被编码在这些数值中,通过训练阶段的梯度下降学习而来。
8. 总结
一句话总结:
模型目录 = 架构说明书(config) + 神经网络参数张量集合(safetensors) + 输入编解码规则(tokenizer) + 生成采样配置(generation_config)
模型的"智能"本质上是数十亿个参数矩阵中数值的精确组合,通过海量数据训练后冻结在 safetensors 文件里,推理时按照 config 定义的结构依次执行矩阵乘法,最终产生输出。
更多推荐


所有评论(0)