mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
4999 字
14 分钟
Qwen:152K 词表藏野心
2026-07-13

Qwen 论文解读:一个 152K 词表,藏着阿里对中文大模型的全部野心#

论文:Qwen Technical Report 作者:Jinze Bai, Shuai Bai, Yunfei Chu, Zeyu Cui 等 53 人(阿里云通义实验室) arXiv: 2309.16609,2023年9月28日提交,59页

这不是一篇”我有一个新idea”的论文,而是一份”我把基建干完了”的工程报告。它记录了 Qwen 1.0 从数据清洗到 RLHF 对齐的全流程,覆盖 1.8B、7B、14B 三个尺寸。读这篇论文,你看到的不是学术创新,而是一个大厂团队怎么用工程暴力把中文 LLM 从”能用”推到”好用”。如果你关心中文大模型到底怎么练的,这是绕不过去的一篇。

一、总盘子:Qwen 1.0 到底放了什么出来#

先说结论:Qwen 1.0 不只是一个模型,是一个家族。

论文覆盖的模型矩阵长这样:

  • 基座模型(Base):Qwen-1.8B、Qwen-7B、Qwen-14B
  • 对话模型(Chat):对应的 Chat 版本,经过 SFT + RLHF
  • 代码模型:Code-Qwen、Code-Qwen-Chat(7B/14B)
  • 数学模型:Math-Qwen-Chat(7B/14B)

说白了,阿里把 OpenAI 那套”基座 + 对齐 + 垂直领域”的产品矩阵,在开源世界复刻了一遍。2023年9月这个时间点,国内开源模型基本还在”放一个 7B 的 base 出来大家玩”的阶段,Qwen 直接甩出一整套,这个格局就不一样。

训练数据方面,论文给出的数字是 2.4 万亿 token。什么概念?LLaMA-2 用了 2 万亿,Qwen 比它多了 20%。而且这 2.4 万亿不是英文为主的——中英文占比接近,还包含代码、数学、百科等多领域数据。这个数据配比,直接决定了 Qwen 在中文任务上的优势不是靠”中文 benchmark 调参”得来的,而是数据层面就赢了。

二、架构:没有花活,但每个选择都有讲究#

1. 基本骨架:LLaMA 式 Transformer,但细节不同#

Qwen 的架构是标准的 decoder-only Transformer,跟 LLaMA 同宗同源。但有几个关键区别值得注意:

词表大小:152K(准确说是 151,936)。这是全文最值得关注的设计决策。

同期对比:LLaMA 的词表是 32K,LLaMA-2 也是 32K,ChatGLM 是 65K。Qwen 直接干到 152K,是 LLaMA 的将近 5 倍。

为什么要这么大?因为中文。

英文在 BPE 分词下,一个常见单词通常 1-2 个 token。但中文如果用 32K 词表,一个汉字可能被切成 2-3 个 token,一句话的 token 数直接膨胀。152K 的词表让常见汉字和词语都能用单个 token 表示,同样一句中文,Qwen 需要的 token 数远少于 LLaMA。

这意味着什么?同样的上下文窗口,Qwen 能装更多中文内容;同样的训练 token 数,Qwen 实际”读”了更多中文文本。 这是一个看似简单但影响深远的设计决策。

分词器:基于 tiktoken 的 BPE(Byte Pair Encoding,字节对编码),底子是 OpenAI 的 cl100k_base,然后在此基础上扩充了大量中文字符、中文词语、以及日语等其他语言的 token。数字被拆成单个数字 token,这对数学计算有帮助。

2. 注意力机制:RoPE + 选择性 bias#

位置编码用的是 RoPE(Rotary Position Embedding,旋转位置编码),这跟 LLaMA 一样,没什么新鲜的。但 Qwen 做了一个有意思的选择:在 QKV 投影中保留了 bias,其他线性层去掉了 bias

这个设计跟 LLaMA 不同——LLaMA 是全部不要 bias。Qwen 团队保留了注意力层的 bias,可能是实验发现在 QKV 上保留 bias 对效果有正向贡献。这种”不教条”的态度,说明他们真的跑了消融实验,而不是照抄。

3. 归一化和激活函数#

  • RMSNorm(Root Mean Square Layer Normalization):用在 pre-normalization 位置,即每个子层之前做归一化。这比 post-norm 训练更稳定,也是 LLaMA 的选择。
  • SwiGLU(Swish-Gated Linear Unit):激活函数。说白了就是给 FFN 加了个门控,比传统 ReLU/GELU 效果更好,代价是 FFN 参数量多了 50%。

4. 输入输出 Embedding 不共享#

Qwen 的输入 embedding 和输出层(LM Head)是独立的,不共享权重。LLaMA-1 是共享的,LLaMA-2 也是共享的。不共享意味着多花一份 embedding 参数的显存,但好处是输入和输出的表示空间不受约束,对生成质量有帮助。在 152K 词表下,这份 embedding 大概有 6 亿参数(152K × 4096),不算小数目。Qwen 愿意为此买单,说明他们更看重效果而不是极致压缩参数。

5. 各尺寸具体参数#

模型层数隐藏维度注意力头数参数量
Qwen-1.8B24204816~1.8B
Qwen-7B32409632~7.7B
Qwen-14B40512040~14B

注意 Qwen-7B 实际参数量是 7.7B,不是刚好 7B。多出来的主要是那份独立的 embedding。

三、上下文扩展:从 2048 到 8192 的骚操作#

1. 问题:训练时只有 2048#

预训练时,上下文长度是 2048 token。这是当时的主流选择——LLaMA-2 也是 4096,大部分模型都在 2K-4K 这个范围。但用户想要更长的上下文,怎么办?

2. 解法:三件套#

Qwen 用了一套组合拳来把上下文从 2048 扩展到 8192,而且不需要重新训练:

第一招:NTK-aware interpolation(NTK 感知插值)

RoPE 的核心思想是:位置信息通过旋转角度编码,角度随位置线性增长。当序列超过训练长度时,角度会超出”见过”的范围。NTK-aware 插值的核心想法是:不是简单地压缩所有频率,而是按频率分组,高频(局部位置信息)少压,低频(全局位置信息)多压

这比 Position Interpolation(简单线性缩放所有位置)更聪明,因为它保护了局部的细粒度位置信息。

第二招:LogN attention scaling

当序列变长,attention 的 softmax 输入会变大(因为求和项变多了),导致注意力分布变得更”平坦”。LogN 的做法是:把 attention score 除以 log(n),其中 n 是当前序列长度。这是一个很轻量的修复,但确实有效。

第三招:Window attention(局部窗口注意力)

对于特别长的序列,让每个 token 只关注它附近一个窗口内的 token,而不是全局注意力。这降低了计算复杂度,也避免了远距离 token 之间的噪声干扰。

3. 效果#

论文给出了 arXiv 数据集上的困惑度(PPL):

序列长度有三件套无三件套
20483.81-
81923.33-
163843.227.27
327683.17181.49

没有扩展技术时,16K 长度的 PPL 直接飙到 7.27,32K 更是爆炸到 181。有了三件套,32K 长度下 PPL 依然只有 3.17,甚至比 2048 时还低(因为更长的上下文提供了更多信息)。这个效果相当惊人。

四、数据工程:2.4 万亿 token 是怎么来的#

1. 数据来源#

论文提到数据来自:网页文本、百科、书籍、代码等。覆盖中文、英文、多语言文本、代码和数学。

这个描述比较笼统——毕竟数据是核心竞争力,不可能全说。但从 2.4T 的量和最终效果来看,可以推断数据质量相当高。

2. 清洗流程#

这是论文里比较实在的部分,清洗管线包括:

  1. HTML 文本提取:从网页中抽取正文
  2. 语言标注:识别文本语言,过滤非目标语言
  3. 文本规范化:统一格式、处理乱码
  4. 精确去重:完全相同的文档只保留一份
  5. 近似去重:用 MinHash + LSH(局部敏感哈希)找到高度相似但不完全相同的文档,去重
  6. 质量过滤:结合规则过滤和机器学习模型打分,过滤低质量、不安全内容

这套流程跟 LLaMA、GPT-3 的管线大同小异,但关键差异在于中文数据的质量和数量。国内团队在中文数据获取上有天然优势,这是 Qwen 中文能力强的根本原因。

3. 代码和数学数据#

论文特别提到了代码和数学数据的处理。后续 Code-Qwen 用了约 900 亿 token 的代码数据做继续预训练,这个量级在当时的开源代码模型里算很大的了。

五、训练配置:稳扎稳打的工程选择#

1. 预训练#

  • 目标:标准的自回归 next-token prediction
  • 上下文长度:2048 token
  • 优化器AdamW,β1=0.9,β2=0.95,ε=10⁻⁸
  • 加速Flash Attention(不占额外显存的精确注意力计算)
  • 数据打包:把不同文档 shuffle 后拼接,切成固定 2048 长度的训练样本

学习率调度用的是 cosine schedule,有 warmup 阶段。具体数值论文没有特别强调,但这套配置基本是 2023 年的标准操作。

2. 跟同期对比#

说实话,训练配置这块没什么”独门秘籍”。AdamW + cosine schedule + Flash Attention,跟 LLaMA、MPT、Falcon 基本一样。Qwen 的优势不在训练技巧,而在数据量和数据质量。2.4T token 在 2023 年 9 月的开源模型里是第一梯队的。

六、后训练:SFT + RLHF 全流程#

1. SFT(监督微调)#

SFT 阶段的配置:

  • 多风格对话数据(不只是一问一答,还包括多轮对话、创意写作、代码对话等)
  • Loss 只算模型回复部分,system prompt 和用户输入不算 loss——这个设计很关键,避免模型去”背诵”用户的输入
  • AdamW,β1=0.9,β2=0.95,ε=10⁻⁸
  • 序列长度 2048
  • Batch size 128

2. RLHF(基于人类反馈的强化学习)#

这是论文里技术含量最高的部分之一。

奖励模型训练

  • 先做 偏好模型预训练(Preference Model Pretraining):用成对的回复数据训练模型区分好坏
  • 然后用人类反馈数据微调
  • 标注体系包含约 6600 个标签,覆盖各种质量维度
  • 数据采样策略:按 prompt 多样性和复杂度做平衡采样

PPO 训练

  • 四个模型同时在线:policy model(策略模型)、value model(价值模型)、reference model(参考模型)、reward model(奖励模型)
  • 先跑 50 步 value-only 训练,让 value model 先热身
  • 每个 query 采样 2 个回复做对比
  • KL 系数 0.04:控制模型不要偏离 reference model 太远
  • 奖励值用 running average 做归一化

KL 系数 0.04 是一个比较保守的值,说明 Qwen 团队更倾向于”别把模型练歪了”,而不是激进地追求 reward 最大化。这个选择很务实。

3. 效果验证#

人类评估用了 300 条中文 prompt,覆盖知识问答、语言理解、创意写作、代码生成、数学推理五个维度。结论:RLHF 模型显著优于纯 SFT 模型

在自动评测中,Qwen-14B-Chat 在 MMLU、C-Eval、GSM8K、HumanEval、BBH 上超过了同期大部分对比模型,仅次于 ChatGPT 和 LLaMA2-Chat-70B。考虑到 Qwen-14B 只有 14B 参数,而 LLaMA2-Chat-70B 有 70B,这个结果相当能打。

七、垂直领域:代码和数学#

1. Code-Qwen#

  • 基座:Qwen-7B / Qwen-14B
  • 继续预训练:约 900 亿 token 的代码数据
  • 训练策略:多阶段 SFT
  • 评测:HumanEval(pass@1)、MBPP、HumanEvalPack
  • 结果:超过同尺寸开源模型,跟 StarCoder 竞争

2. Math-Qwen-Chat#

  • 基座:Qwen-7B / Qwen-14B
  • 数据:扩充的数学指令数据
  • 序列长度:1024
  • 评测:GSM8K、MATH、Math401、Math23K
  • 结果:7B 版超过 Minerva-8B 的 MATH 成绩;14B 版在 GSM8K 和 MATH 上接近 Minerva-62B 和 GPT-3.5

一个有意思的细节:Math-Qwen 在中文数学题上的表现比 Minerva 好不少,因为 Minerva 基本没见过中文数学题。这再次印证了数据决定上限。

3. Agent 能力#

论文还提到了工具使用能力:

  • 支持 ReAct 框架做工具调用
  • 内置 Python 代码解释器,可以做数学计算和数据分析
  • 可以调用 Hugging Face 上的多模态模型
  • Agent 调优用了 self-instruct 和 in-context learning

这在 2023 年 9 月算是比较前沿的功能了。大部分开源模型还在卷对话质量,Qwen 已经开始布局 Agent 了。

八、Benchmark 全景:数字说话#

1. 基座模型对比#

模型MMLUC-EvalGSM8KMATHHumanEvalMBPPBBHCMMLU
LLaMA2-7B46.832.516.73.312.820.838.231.8
LLaMA2-13B55.041.429.65.018.930.345.638.4
ChatGLM2-6B47.951.732.46.5--33.7-
Baichuan2-7B54.756.324.65.618.324.241.657.1
Baichuan2-13B59.559.052.810.117.130.249.062.0
Qwen-7B58.263.551.711.629.931.645.062.2
Qwen-14B66.372.161.324.832.340.853.471.0

几个关键观察:

Qwen-7B 全面碾压 LLaMA2-7B。MMLU 58.2 vs 46.8,差了 11 分;C-Eval 63.5 vs 32.5,差了 31 分。这不是小优势,是代差。

中文能力断层领先。C-Eval 上 Qwen-7B 拿到 63.5,比 Baichuan2-13B(59.0)还高,更别说 LLaMA2-13B 的 41.4 了。

代码能力突出。HumanEval 29.9,比 Baichuan2-7B 的 18.3 高了 11 分。这说明 152K 词表对代码也有帮助(代码中的变量名、关键字能更高效地编码)。

Qwen-14B 越级挑战。14B 参数在 MMLU 上拿到 66.3,跟 LLaMA2-70B(68.9)差距不大。在 C-Eval 上 72.1 甚至超过了很多更大的模型。

2. 评测设置说明#

  • MMLU:5-shot
  • C-Eval:5-shot
  • GSM8K:8-shot
  • MATH:4-shot
  • HumanEval:0-shot
  • MBPP:3-shot
  • BBH:3-shot
  • CMMLU:5-shot

收尾:我的一点看法#

说实话,这篇论文读起来不像一篇学术论文,更像一份工程验收报告。它没有提出任何新的架构、新的训练算法、或者新的理论框架。RoPE 是别人的,SwiGLU 是别人的,Flash Attention 是别人的,RLHF 也是别人先做的。但正是这种”不发明轮子,把轮子造到最好”的态度,让 Qwen 1.0 成为了 2023 年下半年最强的中文开源模型。

152K 词表这个决策,回头看是 Qwen 系列最正确的决定之一。它不是一个”看起来牛逼”的创新,而是一个”用了才知道好”的工程选择。中文 token 效率提升带来的好处是全方位的:同样的上下文窗口装更多内容,同样的训练预算学到更多知识,推理时同样的 max_tokens 能生成更长的回复。这个设计一直延续到了 Qwen2、Qwen2.5,证明它经得起时间检验。

但论文也有明显的不足。数据部分写得太模糊——“web texts, books, codes”这种描述等于没说。训练超参数也没有完整列出。RLHF 部分的描述虽然有框架,但很多关键细节(比如偏好数据规模、标注者是谁、质量怎么控制)都是一笔带过。相比之下,LLaMA-2 的论文在 RLHF 部分写得详细得多。这可能是因为 Qwen 论文要覆盖的内容太多(基座 + Chat + Code + Math + Agent),每个部分都只能点到为止。

放在 Qwen 系列演进的大背景里看,1.0 的意义是”打地基”。它证明了阿里有能力从头到尾训一个高质量的中文大模型,建立了数据管线、训练基建、评测体系。后面的 Qwen1.5 加了更多尺寸和 GQA,Qwen2 换了词表结构、去掉了 QKV bias,Qwen2.5 把数据量推到 18T token——但这些都是在这个地基上盖楼。没有 1.0 把路趟出来,后面不可能迭代那么快。

最后一个判断:如果你只能读一篇中文大模型的技术报告来理解”2023年中国团队怎么练模型”,就读这篇。它不花哨,但真实。

附:核心数据速查#

模型架构参数#

参数Qwen-1.8BQwen-7BQwen-14B
层数243240
隐藏维度204840965120
注意力头数163240
词表大小~152K~152K~152K
上下文长度2048(可扩展至8192+)2048(可扩展至8192+)2048(可扩展至8192+)
位置编码RoPERoPERoPE
激活函数SwiGLUSwiGLUSwiGLU
归一化RMSNorm (pre-norm)RMSNorm (pre-norm)RMSNorm (pre-norm)
Embedding输入输出独立输入输出独立输入输出独立

训练配置#

项目数值
训练数据量2.4 万亿 token
训练上下文长度2048
优化器AdamW (β1=0.9, β2=0.95, ε=1e-8)
注意力加速Flash Attention
数据语言中文、英文、多语言、代码、数学
去重方法精确去重 + MinHash/LSH 近似去重
SFT batch size128
SFT 序列长度2048
RLHF KL 系数0.04
PPO 每 query 采样数2
奖励模型标签数~6600

关键 Benchmark 成绩#

模型MMLUC-EvalGSM8KMATHHumanEvalBBH
Qwen-7B58.263.551.711.629.945.0
Qwen-14B66.372.161.324.832.353.4
LLaMA2-7B(对比)46.832.516.73.312.838.2
LLaMA2-13B(对比)55.041.429.65.018.945.6
Baichuan2-13B(对比)59.559.052.810.117.149.0

长上下文扩展效果(arXiv PPL)#

序列长度有扩展技术无扩展技术
81923.33-
163843.227.27
327683.17181.49

关键概念清单#

  • RoPE = Rotary Position Embedding,旋转位置编码,通过旋转向量编码相对位置信息
  • SwiGLU = Swish-Gated Linear Unit,带门控的激活函数,比 ReLU 效果更好
  • RMSNorm = Root Mean Square Normalization,只用均方根做归一化,比 LayerNorm 快
  • BPE = Byte Pair Encoding,字节对编码,主流的子词分词算法
  • NTK-aware interpolation = 一种改进的 RoPE 外推方法,按频率分组缩放位置编码
  • MinHash/LSH = MinHash + Locality-Sensitive Hashing,用于近似文本去重
  • SFT = Supervised Fine-Tuning,监督微调,用标注数据教模型对话
  • RLHF = Reinforcement Learning from Human Feedback,基于人类反馈的强化学习
  • PPO = Proximal Policy Optimization,近端策略优化,RLHF 中最常用的强化学习算法
  • KL 系数 = Kullback-Leibler 散度系数,控制 RLHF 模型不偏离原始模型太远
  • Flash Attention = 一种 IO-aware 的精确注意力计算算法,不增加显存开销
  • ReAct = Reasoning + Acting,一种让 LLM 交替推理和使用工具的 Agent 框架
  • GQA = Grouped Query Attention,分组查询注意力,Qwen-72B 中使用(Qwen-7B/14B 未使用)
  • C-Eval = 中文综合评测基准,覆盖 52 个学科
  • CMMLU = 中文多任务语言理解评测,侧重中国文化知识
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Qwen:152K 词表藏野心
https://mizuki-eaf.pages.dev/posts/qwen/qwen152k-词表藏野心/
作者
无名之子
发布于
2026-07-13
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录