乱蚣 发表于 2026-3-12 02:50:01

LLM 算法岗 | 八股问答(2)· 大模型训练流程与微调技术

完整题库链接:LLM 算法岗 | 面试常问的 LLM 八股题目汇总

目录

[*]1. 从 txt 文本预处理到 SFT 训练的全流程
[*]2. Pretrain、SFT、RLHF 的区别
[*]3. Pretrain 和 SFT 优化目标的区别
[*]4. SFT 核心流程及数据集构建策略
[*]5. SFT 的 Loss 及多 Token 计算
[*]6. SFT 与预训练样本 Loss 计算区别及屏蔽方法
[*]7. SFT Loss 计算代码(含 shift right)
[*]8. SFT 之后的常见 Post-Training 及目的区别
[*]9. 为什么 SFT 后还要做 RL?为何偏好对齐不能用偏好数据直接做 SFT?
[*](夹带私货)为什么 DPO 现在不火了?
[*]面试背诵要点速查

1. 从 txt 文本预处理到 SFT 训练的全流程

步骤详解:

[*]文本预处理:

[*]清洗原始文本,去除无关字符、HTML 标签、乱码、去重等;质量过滤:基于规则(长度、乱码率)+ 基于模型(困惑度打分)筛选;
[*]统一编码和格式;可能进行句子分割或段落划分;
[*]对于多轮对话数据,需结构化处理,构建 JSON / Parquet 格式,比如统一为 {"instruction": "...", "input": "...", "output": "..."} 或对话格式。

[*]Tokenization:

[*]使用分词器(如 BPE、SentencePiece)将文本转换为 token IDs,添加特殊 token(如 、、)。
[*]对话模板(Chat Template):不同模型格式不同(Llama-3、Qwen、ChatGLM 等)。

[*]构建输入:

[*]max_length 截断,将 token IDs 序列进行 padding 至统一长度,padding="max_length" 或 padding="longest"(batch 内动态),生成 input_ids;
[*]创建 attention_mask 标识有效 token,区分 pad token(mask=0)和真实 token(mask=1);
[*]构造labels,其中 prompt 部分设为忽略索引(如 -100),response 部分为对应的 token IDs。

[*]Forward:

[*]将 input_ids 和 attention_mask 输入模型,得到logits,形状为 。

[*]Loss 计算:

[*]采用交叉熵损失,通常需要 shift right:用当前 token 预测下一个 token,即取 logits[:, :-1, :] 和 labels[:, 1:],然后计算损失,忽略 labels 中为 -100 的位置。

[*]参数更新:

[*]反向传播计算梯度,使用优化器(如 AdamW)更新模型参数,常配合学习率调度、梯度裁剪等技巧。

2. Pretrain、SFT、RLHF 的区别

维度Pretrain(预训练)SFT(监督微调)RLHF(人类反馈强化学习)目标学习通用语言表示和世界知识学习指令遵循 + 任务格式对齐人类偏好(有用、无害、诚实)数据海量无标注文本(网页、书籍、代码)高质量指令-输出对(数十万到数百万)偏好对/排序数据(A > B)任务定位自监督学习,next token prediction;基础模型构建有监督学习,条件生成;任务适配 / 对话能力培养强化学习,优化奖励函数;价值观对齐解决问题"模型会说话",从海量无标注文本中获取语言能力"模型听指令",让模型理解人类意图,输出符合期望的内容"模型说得好",纠正模型生成中不符合人类偏好的行为Loss纯交叉熵(所有 token)交叉熵(通常只算 answer 部分)PPO / DPO 等(基于奖励模型)3. Pretrain 和 SFT 优化目标的区别

Pretrain:优化目标是自回归语言建模损失,即最大化整个序列中每个 token 的条件概率(通常忽略部分 token 如 mask)。学习文本的统计分布。
<ul>目标:$ \max_\theta \sum_{t=1}^{T} \log P_\theta(x_t | x_{

科元料 发表于 4 天前

感谢分享,学习下。

赖秀竹 发表于 4 天前

这个好,看起来很实用

仟仞 发表于 前天 21:35

yyds。多谢分享

恿榫 发表于 昨天 23:01

很好很强大我过来先占个楼 待编辑
页: [1]
查看完整版本: LLM 算法岗 | 八股问答(2)· 大模型训练流程与微调技术