第 1 周 LLM 原理与高效微调知识精讲手册

第 1 周 LLM 原理与高效微调知识精讲手册

适用目标:AI 算法工程师、多模态 / 大模型算法工程师

学习周期:7 天,约 28-32 小时

实验模型:Qwen/Qwen2.5-1.5B-Instruct

本手册解决:每个概念是什么、为什么存在、代码中体现在哪里、面试如何表达。

配套材料:VS Code 实战项目提示词包


1. 先建立完整认知地图

不要把 Tokenizer、Transformer、SFT、LoRA、量化和评测当成互不相关的知识点。一个领域微调项目的真实链路是:

text 复制代码
业务问题
  -> 定义输入、输出与评价标准
  -> 构造并切分数据
  -> Chat Template 拼接对话
  -> Tokenizer 转换为 input_ids
  -> Data Collator 补齐 batch,并构造 attention_mask / labels
  -> Decoder-only Transformer 前向计算 logits
  -> Cross Entropy 计算目标 token loss
  -> 反向传播只更新 LoRA 参数
  -> 验证集选择配置
  -> 独立测试集对比 Base / Prompt-only / LoRA
  -> 错误分析与工程部署

第一周必须形成三个层面的理解:

  1. 模型层:语言模型如何预测下一个 token。
  2. 训练层:数据如何变为 loss,参数如何更新。
  3. 实验层:如何证明提升来自微调,而不是数据泄漏或提示词变化。

2. 语言模型的本质

2.1 从一句话理解 LLM

大语言模型最核心的训练目标不是"理解问题"或"生成答案",而是:

给定已有 token,预测下一个 token 的条件概率。

一句话 遥感影像发生变化 被 Tokenizer 转为 token 序列:

text 复制代码
x1, x2, x3, ..., xT

自回归语言模型将整段文本的概率分解为:

text 复制代码
P(x1, x2, ..., xT)
= P(x1) × P(x2|x1) × P(x3|x1,x2) × ... × P(xT|x1,...,xT-1)

模型训练时不断提高真实下一个 token 的概率。经过海量数据训练后,它在预测 token 的过程中间接学到了语言规律、事实关联、推理模式和指令格式。

2.2 为什么 next-token prediction 能完成问答

Instruct 模型看到大量如下形式的数据:

text 复制代码
<system> 你是一个助手
<user> 问题
<assistant> 高质量回答

当推理输入停在 <assistant> 后,模型预测"这种上下文之后最可能出现什么"。由于训练分布中这里通常跟着回答,它便生成答案。

这说明两个重要事实:

  • Prompt 的本质是把输入组织成模型熟悉的条件分布。
  • SFT 的本质是改变某些上下文下的目标输出分布。

2.3 训练与推理为何不同

训练时已知完整正确序列,可一次性预测所有位置:

text 复制代码
输入:  [BOS, 遥, 感, 变, 化]
标签:  [遥,  感, 变, 化, EOS]

这叫 teacher forcing。各位置虽然通过 Causal Mask 看不到未来,但可以在 GPU 上并行计算。

推理时不知道未来 token:

text 复制代码
第 1 步:输入问题 -> 生成 token A
第 2 步:输入问题 + A -> 生成 token B
第 3 步:输入问题 + A + B -> 生成 token C

因此 Decode 天然逐步进行。KV Cache 可以减少重复计算,但不能完全消除自回归依赖。

2.4 Logits、概率与采样

模型最后一层为每个位置输出长度为词表大小 V 的向量:

text 复制代码
logits shape = [batch_size, sequence_length, vocab_size]

logits 是未经归一化的分数。Softmax 将其转成概率:

text 复制代码
p_i = exp(z_i) / sum(exp(z_j))

生成策略:

  • greedy:选概率最高的 token,稳定但可能僵硬或重复。
  • temperature:缩放 logits;低温更确定,高温更多样。
  • top-k:只在概率最高的 k 个 token 中采样。
  • top-p:在累计概率达到 p 的最小候选集合中采样。
  • beam search:维护多个高概率序列,更适合翻译等明确目标,开放对话未必更好。

结构化抽取项目应优先确定性解码,避免采样导致评测波动。

3. Tokenizer:文字进入模型的入口

3.1 为什么不能直接按词切分

按完整单词构建词表会遇到:

  • 词表巨大。
  • 新词、专业词、人名无法覆盖。
  • 中文没有天然空格分词。
  • 拼写变化、数字、代码组合无限。

现代 LLM 通常采用子词或字节级方法,在词表大小与序列长度之间折中。

3.2 BPE 的直观理解

BPE 从较小基本单元开始,反复把语料中最常一起出现的相邻单元合并。例如:

text 复制代码
l o w
l o w e r
n e w e s t

高频组合可能逐渐合并成 lo、low、est。常用词可成为较少 token,罕见词仍能拆开表示。

不需要第一周手写工业级 Tokenizer,但必须知道:

  • Token 不等于汉字、英文单词或字节,具体取决于词表。
  • 同一句话在不同模型上的 token 数可能不同。
  • 序列长度按 token 计算,不按字符计算。
  • 专业术语被切得很碎会增加长度,也可能影响学习难度。

3.3 特殊 Token

常见特殊 token:

  • BOS:序列开始。
  • EOS:序列结束;生成停止的重要依据。
  • PAD:将 batch 内样本补齐到相同长度。
  • UNK:无法表示的单元,字节级模型中可能很少出现。
  • 角色/对话边界 token:标记 system、user、assistant 或消息结束。

特殊 token 必须与模型训练时一致。重复添加 BOS/EOS、遗漏 assistant 起始标记、把 PAD 与 EOS 混用,都可能造成输出异常。

3.4 Chat Template 为什么重要

下面两段在人看来语义相同,对模型却不是同一种输入:

text 复制代码
用户:判断变化类型。助手:
text 复制代码
<|im_start|>user
判断变化类型。<|im_end|>
<|im_start|>assistant

Instruct 模型按特定模板训练。如果推理和训练模板不一致,模型可能:

  • 把用户文本当成系统指令。
  • 复述问题而不是回答。
  • 不知道何时结束。
  • 输出角色标记或格式异常。

实际项目中应使用 tokenizer.apply_chat_template(),不要手工猜模板。

3.5 Padding 与 Attention Mask

一个 batch 的序列长度不同,需要补齐:

text 复制代码
样本 A: [a, b, c, EOS]
样本 B: [d, e, EOS, PAD]

attention_mask 通常用 1 表示有效 token,0 表示 padding。模型应忽略 PAD,否则无效位置会污染注意力和 loss。

注意区分:

  • Padding Mask:不看补齐位置。
  • Causal Mask:不看未来位置。

两者解决不同问题,通常会共同生效。

4. Embedding 与位置表示

4.1 Token Embedding

输入 token id 为整数索引:

text 复制代码
input_ids: [B, T]

Embedding 表相当于大小为 [V, D] 的可训练查找表。查表后:

text 复制代码
hidden_states: [B, T, D]

其中:

  • B:batch size。
  • T:sequence length。
  • V:vocabulary size。
  • D:hidden size。

Embedding 只告诉模型 token 的语义表示,不自然包含它位于第几个位置。

4.2 为什么需要位置编码

如果没有位置,Self-Attention 对输入排列缺少感知:

text 复制代码
人追狗
狗追人

两句 token 集合相似,但语义相反。模型必须知道相对顺序。

4.3 RoPE 的核心思想

RoPE 不是简单把位置向量加到 token embedding,而是根据位置对 Q/K 的二维子空间做旋转。不同位置使用不同角度,旋转后的 Q/K 点积会自然包含相对位置信息。

面试层面的正确表达:

RoPE 对 Query 和 Key 注入与位置相关的旋转,相同内容在不同位置得到不同相位;两个位置旋转后的内积可表示相对位置差,因此适合自回归模型。

需要知道的边界:

  • RoPE 不会让模型无限理解任意长上下文。
  • 超过训练长度可能退化。
  • RoPE scaling 是工程扩展方法,但扩大长度不等于长上下文质量不损失。

5. Self-Attention:token 如何互相读取信息

5.1 Q、K、V 的直觉

对每个 token 的表示 X 做三组线性映射:

text 复制代码
Q = XWq
K = XWk
V = XWv

可以把它们类比为:

  • Q:我想寻找什么信息。
  • K:我能被什么查询匹配。
  • V:如果被关注,我实际提供什么信息。

类比仅帮助理解,最终仍是矩阵运算。

5.2 核心公式

text 复制代码
Attention(Q,K,V) = softmax(QK^T / sqrt(dk))V

计算过程:

  1. QK^T 得到查询位置和各键位置的相关分数。
  2. 除以 sqrt(dk),避免维度增大使点积方差过大、Softmax 饱和。
  3. 加入 Causal / Padding Mask。
  4. Softmax 得到注意力权重。
  5. 用权重加权 V,得到聚合信息。

5.3 张量形状必须熟练

设:

text 复制代码
B = batch size
T = sequence length
D = hidden size
H = attention heads
Dh = D / H

典型形状:

text 复制代码
X       [B, T, D]
Q/K/V   [B, H, T, Dh]
QK^T    [B, H, T, T]
weights [B, H, T, T]
context [B, H, T, Dh]
concat  [B, T, D]

标准注意力中,T × T 是长序列计算和显存开销增长的关键来源。

5.4 Multi-Head Attention 的意义

多个头不是简单重复。每个头有不同投影参数,可在不同表示子空间关注不同关系,例如局部搭配、远距离指代、格式边界等。各头输出拼接后再投影回 hidden size。

不能把某个头稳定解释为明确的人类语义规则,但多头确实提升了表示容量。

5.5 MHA、GQA、MQA

  • MHA:每个 Query head 有自己的 K/V head。
  • GQA:多组 Query head 共享较少的 K/V head。
  • MQA:所有 Query head 共享一组 K/V。

减少 K/V heads 可以显著降低 KV Cache,大模型推理常使用 GQA,在质量和效率之间折中。

6. Decoder Block 的其他组件

6.1 MLP / FFN

Attention 负责 token 间信息交流,MLP 对每个 token 的表示独立做非线性变换。现代 LLM 常使用带门控的激活,如 SwiGLU。

直觉上:

  • Attention 负责"从上下文拿什么"。
  • MLP 负责"拿到后如何加工"。

6.2 Residual Connection

残差结构:

text 复制代码
y = x + F(x)

它让信息和梯度有直接通路,使深层网络更易优化。子层只需学习相对于输入的增量变化。

6.3 LayerNorm 与 RMSNorm

归一化用于控制激活尺度、稳定训练。许多现代 LLM 使用 RMSNorm,它不减均值,只按均方根缩放,计算更简单。

6.4 Pre-Norm 与 Post-Norm

  • Post-Norm:子层后归一化,原始 Transformer 常见。
  • Pre-Norm:先归一化再进入子层,现代深层 LLM 更常见,梯度传播通常更稳定。

不要死记所有模型结构,查看具体模型配置和源码。

7. Causal Language Modeling 的 Loss

7.1 Shift Labels

模型在位置 t 的输出用于预测位置 t+1 的 token:

text 复制代码
logits[:, :-1] 对齐 labels[:, 1:]

很多 Hugging Face 模型内部会完成 shift,但你必须确认所用模型与训练器行为,避免重复 shift。

7.2 Cross Entropy

对于真实 token y:

text 复制代码
loss = -log P(y | context)

模型越确信正确 token,loss 越小。一个 batch 的 loss 是有效目标 token loss 的平均或加权结果。

7.3 Perplexity

text 复制代码
PPL = exp(cross_entropy)

PPL 可衡量语言建模不确定性,但不等于业务正确率。结构化抽取应以 Accuracy、F1、Schema 合法率等任务指标为主。

7.4 为什么只训练 Assistant Token

在指令微调中,system/user 是条件,assistant 是期望模型生成的目标。通常把非 assistant 的 label 设为 -100,CrossEntropyLoss 会忽略这些位置。

text 复制代码
input:  system + user + assistant
label:  -100   + -100 + assistant token ids

优点:优化目标更集中于回答行为。风险:如果 mask 边界错误,可能没有有效 token,或误训练角色标记。因此必须可视化检查一条 batch。

8. SFT:监督微调究竟改变什么

8.1 SFT 的作用

SFT 擅长:

  • 学习任务指令与输出格式。
  • 学习领域表达和有限模式。
  • 改善特定分类、抽取或风格任务。
  • 让模型学会何时拒答或触发人工复核。

SFT 不擅长:

  • 用很少数据可靠注入大量事实知识。
  • 保证所有事实实时更新。
  • 自动解决模糊任务定义和错误标签。
  • 消除幻觉。

需要实时或海量知识时,RAG 往往更合适;需要任务行为变化时,SFT 更合适。

8.2 SFT、持续预训练、RAG、DPO 的区别

方法 主要数据 主要目标 典型用途
持续预训练 大量领域原始文本 继续学习领域语言分布 法律、医疗等领域适配
SFT 指令与标准回答 学任务和回答行为 抽取、问答、格式输出
RAG 文档库 + 查询 推理时读取外部证据 更新快、需引用的知识
DPO 等偏好优化 chosen / rejected 对 学习偏好与风格 对齐、拒答、回答质量

8.3 高质量数据比数量更重要

小规模 SFT 中,以下问题会直接破坏训练:

  • 同一输入对应互相冲突的标签。
  • 输出 JSON 字段有时缺失、有时改名。
  • 标签说明模糊。
  • 训练集与测试集存在改写版本泄漏。
  • 合成数据句式单一,模型只学模板。
  • 训练样本中混有真实客户或敏感数据。

一个合格 Dataset Card 应说明:来源、许可、规模、类别、字段、清洗、切分、隐私、偏差和已知局限。

9. LoRA:低成本更新模型行为

9.1 全量微调为什么昂贵

训练时的显存不只包含模型权重,还包含:

  • 参数。
  • 梯度。
  • 优化器状态,例如 Adam 的一阶、二阶矩。
  • 激活值。
  • 临时计算缓冲区。

全量微调所有参数会带来很大显存、存储和训练成本。

9.2 LoRA 的低秩更新

冻结原权重 W,只学习增量:

text 复制代码
W' = W + ΔW
ΔW = scale × B × A
scale 常为 alpha / r

若 W 形状为 [d_out, d_in]:

text 复制代码
A: [r, d_in]
B: [d_out, r]

新增参数:

text 复制代码
r × d_in + d_out × r
= r × (d_in + d_out)

当 r 远小于输入输出维度时,新增参数远少于原矩阵。

9.3 LoRA 超参数如何理解

  • r:低秩容量。过小可能欠拟合,过大增加参数且可能过拟合。
  • lora_alpha:更新缩放。需结合 r 理解,不能单独比较。
  • lora_dropout:LoRA 分支上的正则化,小数据可适当使用。
  • target_modules:注入哪些线性层。
  • bias:是否训练偏置,常保持冻结。

常见 target modules:

  • Attention:q_proj、k_proj、v_proj、o_proj。
  • MLP:gate_proj、up_proj、down_proj。

只训练 Q/V 更省参数;覆盖 Attention 与 MLP 容量更强。没有永远最优配置,应通过验证集对照。

9.4 Adapter 与合并模型

  • Adapter 只保存增量参数,体积小,加载时需要 Base model。
  • 合并模型将 ΔW 加到 W,单模型部署方便,但体积恢复为完整模型大小。
  • 一个 Base 可以挂多个业务 Adapter,便于多任务管理。

10. QLoRA 与量化

10.1 量化的基本思想

FP32、BF16、FP16、INT8、4-bit 使用不同位宽表示数值。位宽越低,存储和带宽更省,但数值误差与算子支持更复杂。

需要区分:

  • 权重量化。
  • 激活量化。
  • KV Cache 量化。
  • 训练时量化。
  • 推理部署量化。

它们不是同一件事。

10.2 QLoRA 的工作方式

QLoRA 将冻结的 Base 权重以 4-bit 保存,需要计算时反量化到 BF16/FP16;LoRA 参数通常以较高精度训练。

核心概念:

  • NF4:适合近似正态分布权重的 4-bit 数据类型。
  • Double Quantization:进一步量化量化常数,减少平均存储。
  • 高精度计算 dtype:低位存储不等于所有矩阵计算都以 4-bit 进行。

QLoRA 省下 Base 权重显存,但激活、LoRA 参数、梯度、优化器状态仍占显存。长序列依然可能 OOM。

10.3 BF16 与 FP16

  • FP16 尾数较多但指数范围较小,可能溢出,需要 loss scaling。
  • BF16 指数范围接近 FP32,训练通常更稳定,但需要硬件支持。

硬件支持时优先尝试 BF16;否则使用 FP16 并关注 NaN/Inf。

11. 训练超参数与显存

11.1 Learning Rate

LoRA 常使用比全量微调更高的学习率,但具体值取决于数据量、模型、batch 和模块范围。

  • 太高:loss 震荡、输出崩坏、遗忘通用能力。
  • 太低:短周期内学不到任务。

第一周可从 1e-4 与 2e-4 做单变量对照。

11.2 Batch 与梯度累积

有效 batch size:

text 复制代码
per_device_batch × gradient_accumulation_steps × GPU_count

梯度累积先进行多次前向/反向,再更新一次参数。它节省单步显存,但训练耗时增加,并不与真正大 batch 在所有细节上完全相同。

11.3 Sequence Length

不要默认设 4096。先统计数据 token 长度的 P50/P90/P95,再选择可覆盖大多数样本的长度。

过短:截断输入或答案。

过长:padding 浪费、激活显存和计算开销增加。

11.4 Epoch、Warmup 与 Scheduler

  • Epoch 太少可能欠拟合,太多会记忆小数据。
  • Warmup 在训练初期逐步提高学习率,减轻初始不稳定。
  • Cosine/linear scheduler 控制后续学习率下降。

小数据通常应频繁验证并保存最佳 checkpoint,而不是只看最后一个 epoch。

11.5 Gradient Checkpointing

正常反向传播需要保存中间激活。Gradient Checkpointing 只保留部分节点,反向时重新计算其他激活,以计算换显存。

特点:

  • 降低激活显存。
  • 训练更慢。
  • 不降低模型权重本身占用。

12. KV Cache 与推理性能

12.1 缓存了什么

在自回归生成中,历史 token 在每一层的 K/V 不再变化。保存它们后,新一步只需计算新 token 的 Q/K/V,并让新 Q 查询历史 K/V。

近似显存:

text 复制代码
KV bytes ≈ 2 × layers × batch × seq_len × kv_heads × head_dim × bytes_per_element

2 表示 K 和 V。

12.2 Prefill 与 Decode

  • Prefill:处理完整 Prompt,计算密集,可较好并行;决定首 token 延迟的重要部分。
  • Decode:逐 token 生成,常受内存带宽和 KV Cache 读取影响。

常见指标:

  • TTFT:Time To First Token。
  • TPOT:Time Per Output Token。
  • ITL:Inter-Token Latency。
  • Throughput:每秒请求数或 token 数。

第一周只需理解;第四周再用 vLLM 系统压测。

13. 评测:如何证明模型真的变好

13.1 为什么训练 Loss 不够

Loss 下降只能说明模型更拟合训练目标,不能证明:

  • 未见数据上更好。
  • 输出符合业务格式。
  • 没有幻觉。
  • 没有记住测试答案。
  • 提升超过 Prompt 优化。

13.2 Train / Validation / Test 的职责

  • Train:更新参数。
  • Validation:选超参数、epoch 和 checkpoint。
  • Test:只用于最终一次客观报告。

如果根据测试结果反复改训练,测试集就被间接用于调参,不再独立。

13.3 三组公平基线

本周必须比较:

  1. Base:基础指令。
  2. Prompt-only:优化指令、Schema、少样本示例,但不训练。
  3. LoRA:与 Prompt-only 使用相同推理模板。

只有这样才能区分提示工程收益和微调收益。

13.4 推荐指标

遥感变化结构化抽取建议:

  • Accuracy:整体分类正确率。
  • Macro-F1:每类 F1 等权平均,关注少数类。
  • JSON Valid Rate:能否被 JSON parser 解析。
  • Schema Valid Rate:字段、类型、枚举是否全部正确。
  • Evidence Support Rate:证据是否由输入支持。
  • Hallucination Rate:是否添加输入中不存在的关键事实。
  • Review Recall:真正不确定样本是否触发人工复核。

13.5 数据泄漏

常见泄漏:

  • 相同样本或改写样本跨 split。
  • 同一原始案例切出的片段跨 split。
  • 先看测试错误,再把类似样本加入训练。
  • 用答案生成输入,留下明显模板线索。

先按原始案例或生成模板分组,再切分;不能只做逐行随机切分。

13.6 错误分析

至少把失败分为:

  • 类别混淆。
  • JSON 语法错误。
  • Schema 字段错误。
  • 证据不支持。
  • 幻觉。
  • 不确定样本过度自信。
  • 长度截断。
  • Prompt 歧义。
  • 标签错误。

错误分析的目的不是解释过去,而是决定下一步应该改数据、Prompt、训练还是业务流程。

14. 常见训练故障与诊断逻辑

14.1 Loss 不下降

按顺序检查:

  1. labels 是否几乎全是 -100。
  2. 可训练参数是否大于 0。
  3. LoRA 参数是否有非零梯度。
  4. Chat Template 与答案边界是否正确。
  5. 学习率是否过低。
  6. 是否能在 10-20 条数据上过拟合。

极小数据过拟合测试是验证训练管线的关键。如果 20 条数据都记不住,先修代码,不要扩大数据。

14.2 OOM

通常按以下顺序处理:

  1. 降低 per_device_train_batch_size。
  2. 降低 max_seq_length。
  3. 使用梯度累积维持有效 batch。
  4. 开启 gradient checkpointing。
  5. 使用 QLoRA。
  6. 缩小模型。

不要先盲目清缓存或反复重启;先理解主要显存来自哪里。

14.3 Loss 很低但测试很差

可能原因:

  • 过拟合。
  • 训练/推理模板不一致。
  • 数据泄漏导致验证分虚高。
  • 训练数据过于模板化。
  • 测试分布与训练分布不同。
  • 评测解析代码有错误。

14.4 JSON 输出不稳定

处理顺序:

  1. 统一所有训练答案 Schema。
  2. Prompt 明确只输出 JSON。
  3. 确定性解码。
  4. Schema 校验与有限重试。
  5. 仍不稳定时再增加格式样本或使用约束解码。

模型生成之后必须由程序校验,不能假设"看起来像 JSON"就是合法 JSON。

15. 本周项目的完整设计

15.1 项目名称

GeoChange Text SFT:遥感变化描述结构化抽取

15.2 输入输出

输入:自然语言描述双时相变化。

输出:固定 JSON。

json 复制代码
{
  "change_type": "building_added",
  "evidence": "后时相新增规则矩形屋顶",
  "confidence": "high",
  "needs_review": false
}

15.3 类别建议

  • building_added
  • building_removed
  • road_changed
  • water_changed
  • farmland_changed
  • no_change
  • uncertain

15.4 系统边界

本周只做文本描述抽取,不处理图像。第二周把文本输入替换为双时相图像,并保留同一输出 Schema、评测器和错误分类体系。

15.5 为什么这个项目适合你

  • 利用遥感业务经验,标签和困难样本更专业。
  • 能客观评测,不会退化成聊天演示。
  • 与下一周 VLM 任务直接衔接。
  • 面试中可同时展示算法、数据、微调、评测和工程能力。

16. 七天知识学习顺序

天 核心知识 必须完成的证明
Day 1 语言建模、Attention、Decoder 画数据流,手推张量形状
Day 2 Tokenizer、Template、RoPE、KV Cache Token 检查与 KV 估算
Day 3 SFT、数据、Loss Mask Dataset Card 与可视化 labels
Day 4 LoRA、QLoRA、量化 首次训练与 Adapter 重载
Day 5 超参数、显存、故障诊断 两组单变量实验
Day 6 基线、指标、错误分析 三组评测与 20 个失败样例
Day 7 复现、报告、面试表达 README、实验报告、10 分钟口述

详细日程与验收清单见:第 1 周详细学习手册。

17. 权威资料阅读顺序

只看与当天任务相关章节,不要求一周读完所有材料。

  1. D2L:注意力机制与 Transformer
  2. The Annotated Transformer
  3. Hugging Face LLM Course
  4. Transformers:Chat Templates
  5. Transformers:KV Cache
  6. TRL:SFTTrainer
  7. PEFT:LoRA
  8. Transformers:bitsandbytes 量化
  9. Qwen 官方文档
  10. LoRA 论文
  11. QLoRA 论文

18. 面试时的表达标准

不要只回答"LoRA 比较省显存"。一个合格回答应包含机制、收益、代价和验证:

LoRA 冻结基座权重,用两个低秩矩阵表示权重增量,新增参数约为 r(d_in+d_out),因此梯度和优化器状态只作用于少量参数。它显著降低可训练参数和 checkpoint 大小,但激活值仍占显存,rank 与 target modules 也会影响容量。我会在固定验证集上对比不同 rank,并以任务指标而不是训练 loss 选择配置。

回答 QLoRA:

QLoRA 在 LoRA 基础上把冻结的 Base 权重以 4-bit 保存,计算时反量化到较高精度,LoRA 参数仍用较高精度训练。NF4 和双重量化进一步降低存储,但它不能消除激活和序列长度带来的显存开销。训练量化与最终部署量化也需要区分。

回答评测:

我会固定独立测试集,比较 Base、优化 Prompt 和 LoRA,保证推理模板与解码配置一致;验证集用于选 rank、学习率和 checkpoint,测试集只做最终报告。除 Macro-F1 外,还评测 JSON/Schema 合法率、幻觉率,并对至少 20 个失败样例分类。

19. 本周完成标准

达到以下标准才算学完,而不是看完:

  • 能从文本到 token、hidden states、logits、loss 完整讲一遍。
  • 能解释 Attention 的公式、Mask 和关键张量形状。
  • 能解释 RoPE、KV Cache、Prefill 和 Decode。
  • 能检查 Chat Template 和 assistant-only loss mask。
  • 能计算 LoRA 参数量,说明 QLoRA 的节省与边界。
  • 能独立跑通训练、加载 Adapter、执行批量推理。
  • 能设计无泄漏的 Train/Validation/Test。
  • 有 Base、Prompt-only、LoRA 公平对照。
  • 有任务指标、格式指标、幻觉指标和错误分析。
  • 项目可按 README 从干净环境复现。

完成后进入第二周多模态学习时,你增加的只是视觉输入和视觉编码器;训练纪律、数据治理和评测方法不需要重新学习。

相关推荐
Metaphor6922 小时前
轻松使用 Python 将 RTF 转换为 Word(含批量转换与格式互转)
python·word·rtf
zh路西法2 小时前
【深入理解 LSTM】从时间反向传播(BPTT)到长时记忆:门控机制与实验验证
pytorch·python·rnn·gru·lstm·bptt
青少儿编程课堂2 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
2601_966949652 小时前
Python 实战:如何统计五档盘口买卖盘总挂单量?附计算公式与代码
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈陈序员2 小时前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
得物技术3 小时前
Jev 实战:为AI工作流引入轻量决策层 x10倍提速|得物技术
python·llm·测试
reasonsummer3 小时前
【教学类-07-12】20261028大3班破译电话号码html(手机按钮版本)
python·html
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 复用 13
java·笔记·python
用户298698530143 小时前
Python 将 Word 文档转换为 XML 的实践要点
后端·python·api