☰
现代 LLM 是怎么训练出来的:从 2017 Transformer 到 2026 推理时代的工程全景(TaoToken 统一 Key 视角)
2026/10/4 10:50:35 网站建设 项目流程

1. 从 2017 Transformer 到 2026 推理时代:LLM 训练全链路到底在训什么

现代 LLM 是怎么训练出来的?如果你只记一句话:LLM 训练是一条五阶段流水线,不是一次事件。预训练长出能力,对齐校准方向,RL 点燃推理。这句话听起来抽象,但落到工程上,它决定了你每一次调用模型 API 时,背后到底是哪一层能力在起作用。

我见过太多人把「训练」理解成「扔数据进去跑一次」,然后在实际接入模型时踩坑:明明模型号称 128K 上下文,喂长文档却答非所问;明明开了推理模式,简单问题反而绕一大圈。这些现象都不是 bug,而是你没分清模型处在流水线的哪一段。

这篇文章面向三类人:想搞懂 LLM 训练全貌但被 RLHF、DPO、GRPO 这些缩写绕晕的开发者;需要给团队做多模型选型和统一接入的工程负责人;以及想验证「推理模型到底强在哪」的实践者。全文按五阶段流水线展开——数据准备、预训练、持续预训练、对齐训练、推理训练,每一段都给出可复制的配置片段和验证动作。

最后一段会落到一个很实际的问题:当你要同时调用 GPT、Claude、DeepSeek、Qwen 这些不同厂商、不同训练阶段的模型时,怎么用一套统一 Key 和 API 通道管理它们,而不是在每个项目里维护一堆散落的密钥和 base_url。这就是 TaoToken 统一 Key 视角要解决的问题。

先建立心智模型。基础模型(base model)只做过 next-token 预训练,补全能力强但不会听话;指令模型(instruct model)在基础模型上做了 SFT 和偏好对齐,能按对话格式回答;推理模型(reasoning model)在指令模型之上,通过后训练和推理时算力分配强化长思考行为。从基础模型到推理模型,至少五个阶段,每个阶段的数据、目标、代表论文和工程坑都不一样。

2. 预训练阶段 tokenizer 与 Scaling Laws 配置:next-token prediction 的工程细节

预训练的目标朴素到一句话:给定前面所有 token,预测下一个 token。但这一件事要跑起来,工程细节极多。先讲 tokenizer,因为它是模型看世界的眼睛,一旦训好就很难换。

模型看到的不是中文字符,而是 token——分词器切出来的整数 ID。主流方案是 BPE 和 SentencePiece。这里有个新手常忽略的坑:早期英文为主的 tokenizer 对中文很差,一个汉字往往切成 2 到 3 个 byte-level token,等于同样的 context 长度装的中文更少,训练和推理都更贵。这也是为什么 Qwen、DeepSeek、GLM、Kimi 都会自建 tokenizer。

Scaling Laws 是预训练的资源分配指南。2020 年 OpenAI 的 Kaplan Scaling Laws 给出第一版经验公式,但让很多人误以为参数越大越划算,结果做出了 175B 但只训 300B tokens 的 GPT-3。2022 年 DeepMind 的 Chinchilla 纠正了这个问题:对固定 compute 预算,每 1 个参数配约 20 个 tokens 才是最优。训练算力有个经验公式:训练 FLOPs 约等于 6 × N × D,N 是参数量,D 是训练 tokens。为什么是 6?一次 forward pass 约 2 FLOPs/参数/token,backward 约 4,总 6。

下面是一份可复制的预训练配置片段,用 YAML 描述关键参数,你可以对照自己的场景调整:

# pretrain_config.yaml —— 预训练阶段核心参数 model: architecture: decoder_only_transformer n_layers: 32 d_model: 4096 n_heads: 32 vocab_size: 128000 # Llama 3 级别词表,中文压缩更好 max_seq_len: 8192 # 预训练长度,长上下文靠 mid-training 扩展 rope_theta: 500000.0 # RoPE 基频,影响长度外推能力 training: total_tokens: 15_000_000_000_000 # 15T tokens,token/param 比约 1875 global_batch_size: 2048 learning_rate: 3.0e-4 lr_schedule: cosine warmup_steps: 2000 weight_decay: 0.1 grad_clip: 1.0 precision: bf16 # 预训练常用 bf16,FP8 需额外数值稳定性处理 parallel: dp: 8 # 数据并行 tp: 8 # 张量并行,节点内 pp: 4 # 流水线并行,跨节点 zero_stage: 3 # ZeRO-3 去冗余 sequence_parallel: true # 长序列训练必开

这份配置里最容易被忽略的是rope_theta和sequence_parallel。RoPE 基频设大一点,后续做长度外推会容易很多;序列并行不开,长上下文训练的 activation 显存会随序列长度平方增长,直接爆掉。

数据决定基础能力上限。Common Crawl 是大部分模型的起点,但原始垃圾率极高,必须配合 MinHash 去重、质量分类器和多阶段过滤。FineWeb、DCLM 是近年公开的高质量子集。LLaMA 3.1 公开了数据混合比:约 50% general、25% math/reasoning、17% code、8% multilingual。合成数据在 2024 到 2025 正式进入预训练,Phi-4 约 40% 训练数据是合成。

3. 对齐训练 SFT 与 DPO 配置片段:从模仿到偏好的可复制流程

基础模型训好之后,你扔一个「你好,怎么做蛋炒饭」给它,它很可能不回答,而是续写。要让它听话,需要后训练。后训练有四条常被混为一谈的路线:SFT、RLHF、DPO、Constitutional AI。

SFT 最朴素:收集高质量的指令-回答对,做交叉熵训练,和预训练同一个损失,只是数据变了。优点是简单稳定见效快,是所有 post-training 的第一步。缺点是只会模仿给定答案,不会选更好的答案。现代主流 pipeline 的 SFT 数据量通常在几万到百万条量级,质量远比数量重要。

RLHF 是 InstructGPT 系统化的三阶段:SFT、训 Reward Model、PPO。关键技巧是加 KL 惩罚,不让模型在 RL 中跑得离原 SFT 模型太远,否则会 reward hacking。RLHF 解决了 SFT 解决不了的问题:怎么排序两个都合法的回答。但代价是工程复杂,要额外训 reward model,还要跑 PPO,超参敏感。

DPO 把 RLHF 简化成一个分类问题。既然最优策略和奖励之间有一一对应的闭式关系,那就别训 reward model 了,直接把偏好对当成二分类问题。损失函数是:

# DPO loss 核心实现(PyTorch 风格伪代码) import torch.nn.functional as F def dpo_loss(policy_chosen_logps, policy_rejected_logps, ref_chosen_logps, ref_rejected_logps, beta=0.1): # y_w = preferred(人类选出的更好回答) # y_l = less preferred(较差的那条) # pi = 正在训练的 policy 模型 # pi_ref = 参考模型,通常是 SFT 后的权重,训练期间冻结 chosen_logratios = policy_chosen_logps - ref_chosen_logps rejected_logratios = policy_rejected_logps - ref_rejected_logps logits = beta * (chosen_logratios - rejected_logratios) # beta 越大约束越强、越贴近参考模型;越小越激进也越容易过拟合 losses = -F.logsigmoid(logits) return losses.mean()

DPO 的实用价值极大:少一个模型,少一个 RL 算法,稳定性远好于 PPO。今天几乎所有开源 post-training 都以 DPO 或其变种为主。DPO 家族还有几个变体值得知道:IPO 解决强偏好下过拟合;KTO 只需 binary 标签,适合产品里的点赞点踩数据;SimPO 不要 reference model,省一半显存。

实战选择上,如果你刚有 base 模型想让它能聊天,走 SFT 到 DPO,工程最简;如果有大量人类偏好数据想全面对齐,走经典 RLHF,上限高但工程复杂;如果没有足够人标偏好,用 Constitutional AI 或 RLAIF 降本;如果只有二元反馈,用 KTO;如果关心数学代码等有客观答案的任务,跳过学出来的 RM,用下一节的 RLVR 加 GRPO。

4. 推理模型 GRPO 与 RLVR 验证:思考时间成为第二条 scaling 轴

2024 下半年开始,LLM 主战场发生转向。以前讨论怎么让模型更强,大家说加参数、加数据、加算力。o1 登场后,出现了一条新的 scaling 轴——推理时的思考 tokens。指令模型的流程是用户问题到模型一次生成答案,模型想多久等于写多久。推理模型不一样:先生成一长段内部思考,可能几千到几万 tokens,再生成对用户可见的答案。

让模型在 test time 更聪明有好几条路线,不只写更长 CoT。Best-of-N 采样 N 个答案选 reward 最高的;Self-consistency 采样 N 个 CoT 对最终答案多数投票;MCTS 风格搜索把思考过程看成树;多 agent 并行加投票是 Grok 4 Heavy 的公开做法。一条往深走,一条往宽走。

核心挑战是思考链不能靠人标。谁去给一段 3000 tokens 的数学推理标注偏好?2024 到 2025 的解法是 RLVR 加 GRPO。RLVR 的思路很直接:在有客观答案的任务上,奖励直接用 0/1 可验证信号,不训学出来的 RM,天然防 reward hacking。GRPO 是 DeepSeekMath 提出的算法,对每个 prompt 采样 G 个回答,用组内奖励的均值和方差做标准化来估计 advantage,不需要 critic 网络。

下面是一个 GRPO 训练配置片段,用 TOML 描述关键超参:

# grpo_train.toml —— 推理模型 RL 训练配置 [model] base = "deepseek-v3-base" # 从 base 或 instruct 出发 policy_dtype = "bf16" ref_model_frozen = true # 参考模型冻结 [grpo] group_size = 8 # 每个 prompt 采样 G 个回答 beta_kl = 0.04 # KL 惩罚系数,防止偏离参考模型 clip_ratio = 0.2 # PPO 风格裁剪 advantage_normalize = "group" # 组内标准化,GRPO 核心 learning_rate = 1.0e-6 max_new_tokens = 8192 # 思考链长度上限 [reward] type = "verifiable" # RLVR:可验证奖励 math_checker = "sympy" # 数学答案符号验证 code_checker = "unit_test" # 代码跑单元测试 format_reward = 0.1 # 格式奖励,鼓励结构化输出 [rollout] engine = "vllm" # 推理引擎,训练和推理是两个世界 temperature = 1.0 top_p = 0.95

一个具体的小例子:同一道数学题,GRPO 采 4 个回答,reward 分别是 1、1、1、0。组内均值 0.75,标准差约 0.433。对的三个答案 advantage 约正 0.58,错的那个约负 1.73。RL 目标加大对三个正确回答的正向更新,压低错误回答的概率。

DeepSeek R1 的训练流程是:从 V3-Base 开始做 cold-start SFT,大规模 GRPO RL,用 RL 后模型生成推理数据做第二次 SFT,第二次 RL 涵盖更广任务。最震撼的是 R1-Zero:完全跳过 cold-start SFT,从 base 直接 RL,仍然涌现了 long CoT、self-verification、反思和回溯。这说明推理能力是预训练模型里潜在的,RL 只是把它激活。

但有个重要 caveat:2025 年清华等团队的研究提出,RLVR 主要改善的是采样效率,低 k 下准确率显著提升,但高 k 下的总覆盖可能持平甚至收窄。换句话说,RL 让模型更常做对,但 base 模型做不到的题 RL 后也做不到多少。读 R1 时既要被惊到,也要知道这只是一条刚开始的路线。

5. 多模型统一 Key 接入与常见报错排查:401 与 local proxy failed 怎么解

当你把训练流水线搞清楚后,实际工程里更常见的问题是:怎么同时调用不同厂商、不同训练阶段的模型,并且稳定排障。这里就是 TaoToken 统一 Key 视角的落点。TaoToken 提供统一的 API 通道,官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API 端点是 https://taotoken.net/api。

先说清楚三件套:Base URL、Key、Model ID。任何接入问题,先确认这三个。Base URL 填 https://taotoken.net/api,Key 在控制台生成,Model ID 按你要验证的模型填。下面是一个可复制的 settings 片段,以 Claude Code 风格配置为例:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-your-taotoken-key", "ANTHROPIC_MODEL": "claude-opus-4-7" }, "permissions": { "allow": ["Bash", "Read", "Write"] } }

如果你用 Codex 风格配置,auth.json 长这样:

{ "base_url": "https://taotoken.net/api", "api_key": "sk-your-taotoken-key", "model": "gpt-5.2-thinking" }

现在讲排错。第一个高频报错是 401 Unauthorized。原因通常是 Key 没填对、Key 过期、或者 Base URL 末尾多了斜杠导致路径拼接错误。排查动作:先用 curl 直接打一次,确认 Key 本身有效:

curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-your-taotoken-key" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"ping"}]}'

如果 curl 通了但客户端报 401,问题在客户端配置,检查环境变量有没有被覆盖。

第二个高频报错是 local proxy failed。这个通常出现在你本地配了代理但代理没起来,或者代理端口和客户端配置不一致。注意:这里说的是本地开发环境的网络配置问题,不是让你去用什么特殊网络工具。排查动作:检查客户端里的 proxy 设置,如果不需要就走直连,把 proxy 相关环境变量清掉再试。

第三个是 reading choices 报错,通常是响应格式和客户端预期不匹配。比如你用了 OpenAI 兼容格式,但客户端按 Anthropic 格式解析。排查动作:确认你调用的端点路径和请求体格式一致,OpenAI 兼容用 /v1/chat/completions,Anthropic 风格用对应路径。

第四个是 OAuth 相关报错,出现在 Claude Code 这类工具里。如果你用的是 API Key 模式,就不该走 OAuth 流程,检查配置里有没有混入 OAuth 字段。

验证请求成功的标志很明确:返回体里有 choices 数组,或者 Anthropic 风格返回 content 数组,且没有 error 字段。下面是一个成功的响应结构示例:

{ "id": "chatcmpl-xxx", "object": "chat.completion", "model": "deepseek-v4-flash", "choices": [ { "index": 0, "message": {"role": "assistant", "content": "pong"}, "finish_reason": "stop" } ], "usage": {"prompt_tokens": 5, "completion_tokens": 2, "total_tokens": 7} }

看到 usage 字段有数字,说明计费链路也通了。这一步验证完,你才算真正把统一 Key 接入跑通。

6. 语义一致 CTA:用统一通道验证不同训练阶段的模型差异

把训练流水线搞懂之后,最有价值的实践是:用同一套 Key 和 API 通道,去对比不同训练阶段模型的行为差异。这比读十篇论文都直观。

你可以这样操作:拿同一个 prompt,分别打基础模型、指令模型、推理模型,观察输出差异。基础模型会续写,指令模型会直接回答,推理模型会先给一段思考再给答案。这个对比能让你对「预训练长出能力、对齐校准方向、RL 点燃推理」这句话有肌肉记忆。

具体验证路径上,模型对话入口适合快速对比不同模型的对话表现,你可以直接开一个会话,切换 Model ID 看差异。如果你要长期做编码和 Agent 任务,Coding Plan 更适合,它按编码场景优化了调用方式。接入文档里有完整的端点和参数说明,API Keys 页面用来管理你的密钥。

我试过用同一段长文档分别喂给标称 128K 和 1M 上下文的模型,结果发现标称长度只是上限,真正能不能用要看 RULER 风格的多任务表现。所以选型时别只看参数页写的长度,拿自己的业务数据跑一遍再决定。

最后给一个实用技巧:把不同模型的 Model ID 和适用场景做成一张对照表放在项目里,比如便宜任务路由到小模型,推理任务路由到强推理模型,长上下文路由到长窗口模型。这样团队里任何人接入时都不会选错。统一 Key 的价值就在这里——你不用为每个厂商维护一套鉴权和计费逻辑,一套通道管到底。

如果你要跟进训练侧的最新进展,建议按时间尺度走:第一周通读 InstructGPT、Chinchilla、DPO、DeepSeek R1 四篇核心论文;第一个月选一个开源 base 跑一次 SFT 到 DPO 流水线;第三个月复现一次 GRPO on 数学题。方法每半年变一次,但流水线加可监督信号加可验证奖励这个底层框架,比具体方法稳定得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询