你开了一家川味火锅店,雇了一位自称精通百家菜的全能大厨。他确实厉害,法餐、日料、甜品都不在话下,可端上来的火锅底料却寡淡无味——因为他过去读的菜谱覆盖全世界,唯独没认真钻研过你的本地火锅。这正是通用小语言模型(SLM)在业务场景中的真实处境:预训练阶段读过海量互联网文本,理解力不差,但缺少你所在行业的“手感”。 要让大厨适配火锅店,你不会让他把全球菜谱重学一遍,而是做一场“定向培训”:保留他已有的厨艺,只针对火锅底料、蘸料、配菜进行强化练习。在AI里,这就叫微调(Fine-tuning)。为了让培训成本更低,你也不用重写他全部的大脑——只需给他一本小本子记火锅配方,这就是LoRA;如果你想用更小的厨房和大冰箱跑起来,再配合QLoRA量化压缩。等培训完毕,把大厨塞进外卖快餐车(端侧设备)时,还需要做内存、速度上的适配优化。整条链路下来,小模型就真正成为了你火锅店的“专属主厨”。

岗位关联

掌握SLM微调,等于学会把开源小模型快速改造成企业的“岗位专家”。它不依赖大显卡和天价算力,却能大幅提升业务效果,是算法工程师在实际项目中性价比最高的硬技能之一。

目录
  1. 可视化演示
  2. 微调原理
  3. LoRA低秩适配
  4. QLoRA量化压缩
  5. 数据准备要点
  6. 端侧部署适配
  7. 调优评估实战
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示小语言模型(SLM)四种微调方法的训练损失曲线与效率对比,可视化Full FT/LoRA/QLoRA/Adapter在参数量、显存、时间和精度上的权衡,支持模式切换浏览。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+modeCaptions.curve+'

微调原理

你雇了一位全能的国际大厨,但端上来的火锅底料寡淡无味。他不是不努力,而是过去学的内容太杂:奶油蘑菇汤、寿司饭、马卡龙占满了他的经验,唯独没有认真钻研本地火锅。通用SLM也是同理——预训练阶段从互联网语料中学会语法、常识和推理,但缺少你业务场景里的术语、格式和规则,所以在具体任务上“有劲使不出”。

要让大厨适配火锅店,最直接的办法是“岗前培训”:在现有厨艺基础上,用你的火锅菜单继续训练。技术术语叫微调(Fine-tuning)。它的目标不是重学一切,而是让模型的参数分布偏向目标任务。全参微调会更新模型的所有参数,效果直接,但显存开销大;参数高效微调(PEFT)则只训练少量新增参数。无论哪种,核心都是最小化损失函数:

实操中,你把历史工单整理成培训菜单,损失函数就是那位严格的品菜师。只要菜单够准、评分科学,本店大厨很快就能端出像样的火锅——这就是微调解决业务适配的基本逻辑。

L(θ)=−1N∑i=1Nlog⁡pθ(yi∣xi)\displaystyle \mathcal{L}(\theta) = -\frac{1}{N}\sum_{i=1}^{N} \log p_\theta(y_i \mid x_i)
这个损失函数衡量模型在训练样本上的平均“出错程度”,值越小,说明大厨越懂火锅店的出餐要求。
  1. 构造样本对业务数据被整理成输入 $x_i$ 与输出 $y_i$,像是“顾客点单→标准出餐”。
    (xi,yi)∈Dtask(x_i, y_i) \in \mathcal{D}_{\text{task}}
  2. 计算条件概率$p_\theta(y_i \mid x_i)$ 表示模型在输入 $x_i$ 下输出正确 $y_i$ 的置信度。
    pθ(yi∣xi)\displaystyle p_\theta(y_i \mid x_i)
  3. 取负对数概率越低,$-\log$ 越大,让训练更猛烈地惩罚错误答案。
    −log⁡pθ(yi∣xi)\displaystyle -\log p_\theta(y_i \mid x_i)
  4. 加总平均对所有样本求均值,得到这一轮训练的整体损失,驱动参数更新。
    1N∑i=1N−log⁡pθ(yi∣xi)\displaystyle \frac{1}{N}\sum_{i=1}^{N} -\log p_\theta(y_i \mid x_i)

LoRA低秩适配

全参微调像把大厨的整套厨艺全部推翻重来,成本很高:显存要装下全部参数、优化器状态和梯度。于是老板想了一个办法:不重训大厨,只给他一本小本子,上面写满火锅店的配方要点。LoRA(Low-Rank Adaptation)就是这个“小本子”。

LoRA观察到,模型在下游任务上发生的参数变化,往往集中在一个低维子空间。于是它把权重的增量写成一个低秩矩阵乘积:$\Delta W = BA$。这里 $B$ 和 $A$ 是两个很小的矩阵,它们的秩 $r$ 远小于原始维度。训练时基座权重 $W_0$ 完全冻结,模型只更新 $B$ 和 $A$。输入经过模型时,计算变为:

就像小本子不占地方却让大厨牢牢记住自家汤底,LoRA仅用极少量可训练参数就能完成业务适配。推理时还可以把 $BA$ 合并回 $W_0$,模型结构完全不变,部署友好。

h=W0x+αrBAx\displaystyle h = W_0 x + \frac{\alpha}{r} B A x
前一项是冻结基座的原始输出,后一项是LoRA注入的低秩增量。$\alpha/r$ 控制这份“火锅配方”的影响强度。
  1. 冻结原权重$W_0 x$ 是基座线性变换,训练过程不更新 $W_0$。
    W0xW_0 x
  2. 压缩到低秩空间$A \in \mathbb{R}^{r \times d}$ 把输入从 $d$ 维压缩到 $r$ 维,像把整本菜谱提炼成十几条要点。
    Ax\displaystyle A x
  3. 映射回原维度$B \in \mathbb{R}^{d \times r}$ 把低维向量还原成 $d$ 维,得到增量 $\Delta W x$。
    B(Ax)\displaystyle B (A x)
  4. 缩放增量$\frac{\alpha}{r}$ 调节增量大小,避免小本子上的“偏方”破坏原有厨艺。
    αrBAx\displaystyle \frac{\alpha}{r} B A x

QLoRA量化压缩

分店老板的仓库很小,放不下大厨那套厚重的《世界菜谱大全》。QLoRA就是“厨房收纳术”:把全套菜谱压成一小盒浓缩香料,大厨做火锅时只取需要的精华。对应到算法里,就是把冻结基座权重量化到4bit,再在此基础上训练LoRA适配器。

QLoRA在LoRA基础上多做了一步:把基座权重量化成NF4精度(4-bit NormalFloat)。NF4是一种“分位量化”方法,它假设神经网络权重近似服从正态分布,于是把权重映射到正态分布的16个桶(4bit可表示16个值),每个桶用代表值近似。训练时,量化权重会临时反量化回更高精度参与计算,而LoRA适配器始终用float16训练,保证精度不丢失:

小仓库也能养大厨——普通消费级显卡用QLoRA也能微调1B~3B的SLM,显存占用大幅下降,成为低成本微调和端侧部署前的关键技术。

qi=Φ−1(i+0.52k−1),k=4\displaystyle q_i = \Phi^{-1}\left( \frac{i + 0.5}{2^k - 1} \right), \quad k = 4
这是NF4分位量化的核心公式:把连续权重按正态分布分位点离散成16个代表值,从而让4bit也能承载足够的信息量。
  1. 确定桶的数量$k=4$ 表示4bit,共有 $2^4=16$ 个量化桶。
    24−1=15\displaystyle 2^4 - 1 = 15
  2. 计算桶内代表位置$\frac{i+0.5}{15}$ 把第 $i$ 个桶放在区间中心,防止量化值偏向桶边界。
    i+0.515\displaystyle \frac{i + 0.5}{15}
  3. 分位函数映射$\Phi^{-1}$ 是标准正态分布的分位数函数,让量化桶按真实权重分布排布。
    Φ−1(⋅)\displaystyle \Phi^{-1}(\cdot)
  4. 得到定标值$q_i$ 就是16个代表值,原始权重就近取整到最近的 $q_i$,完成压缩。
    qi∈{−1.0,−0.76,…,1.0}\displaystyle q_i \in \{-1.0, -0.76, \ldots, 1.0\}

数据准备要点

火锅店要开业,食材必须统一装盘:底料、配菜、蘸料各有标准。数据准备就是微调的“备菜环节”。很多算法工程师一上来就调参,却忽略了数据,其实数据质量几乎决定了微调效果的上限。

业务数据通常长这样:一段用户问题、一个意图标签、一段标准回复。你要把它整理成模型能消化的“监督样本”,主要做三件事。第一,数据采样:优先选与业务分布一致的样本,控制类别比例。第二,清洗标注:去重、去敏感信息、修正错别字和错误标签。第三,模板化:把原始文本统一包装成指令+输入+输出的格式。不同来源的数据还可以加权混合训练:

没有干净食材就没有好火锅;没有统一且高质量的数据,LoRA再厉害也救不回来。数据准备工作占用微调项目60%以上的时间,一点不夸张。

Lmix=1M∑i=1Mwi ℓ(f(xi),yi)\displaystyle \mathcal{L}_{\text{mix}} = \frac{1}{M} \sum_{i=1}^{M} w_i \, \ell\left(f(x_i), y_i\right)
这是带样本权重的微调损失:重要的业务样本权重大,模型会更努力地学会它们。
  1. 模型预测$f(x_i)$ 代表SLM对输入 $x_i$ 的输出预测。
    f(xi)=y^i\displaystyle f(x_i) = \hat{y}_i
  2. 计算单样本损失$\ell(\hat{y}_i, y_i)$ 衡量预测与真实标注的差距,通常是交叉熵。
    ℓ(y^i,yi)\displaystyle \ell(\hat{y}_i, y_i)
  3. 分配样本权重$w_i$ 是每个样本的重要程度,难样本和核心业务样本可以给更高权重。
    wi\displaystyle w_i
  4. 加权求平均用 $M$ 个样本的加权平均得到最终损失,指导一轮参数更新。
    1M∑i=1Mwi ℓ(y^i,yi)\displaystyle \frac{1}{M}\sum_{i=1}^{M} w_i \, \ell(\hat{y}_i, y_i)

端侧部署适配

把大厨从后厨带到快餐车:灶台变小、煤气罐有限、顾客还催单。端侧部署就是微调后的“上餐车”环节。很多初学者以为训练完就结束了,实际上SLM要跑进手机、车机、边缘盒子,还需要一系列适配优化。

首先,训练产生的LoRA权重并不能独立部署,要先把 $BA$ 合并回基座权重,得到一个完整的模型。接着要考虑内存:模型能不能塞进目标设备,可以先用公式估一估:

实际部署时还会做算子融合、KV Cache复用、INT8/INT4量化、结构化剪枝,配合llama.cpp、ONNX Runtime、TensorRT等推理框架,把模型压到设备能承载的范围内。给小灶台设计菜谱是微调,把菜谱浓缩成便携版本才是部署。

MemGB≈Nparams×bbits×k8×109\displaystyle \text{Mem}_{\text{GB}} \approx \frac{N_{\text{params}} \times b_{\text{bits}} \times k}{8 \times 10^{9}}
这是模型推理内存估算公式:参数量 × 每参数位宽 × 额外开销系数,再换算成GB,决定端侧设备是否装得下。
  1. 参数量$N_{\text{params}}$ 是模型参数量,比如1.5B就是15亿个参数。
    Nparams\displaystyle N_{\text{params}}
  2. 位宽$b_{\text{bits}}$ 是每个参数占用的比特数,fp16是16,int8是8,4bit是4。
    bbits\displaystyle b_{\text{bits}}
  3. 额外开销$k$ 是推理时的放大系数,包含KV Cache、激活值和临时缓冲。
    k\displaystyle k
  4. 换算GB除以 $8 \times 10^9$ 从bit变成GB,得到模型最低内存量级。
    Nparams×bbits×k8×109\displaystyle \frac{N_{\text{params}} \times b_{\text{bits}} \times k}{8 \times 10^{9}}

调优评估实战

火锅店上线前,老板请品菜师试吃三轮:口味够不够正、上菜快不快、顾客回不回头。模型也一样,不能只看训练损失,要有一套完整评测体系。这决定了你的微调方案是“能上菜单”还是“只配进垃圾桶”。

先建评测集:固定一批验证集和测试集,记录基座SLM的基线效果,再对比LoRA微调后的效果。评估指标可以是分类准确率、问答EM/F1等。接着调节超参:LoRA秩 $r$、缩放系数 $\alpha$、学习率、训练轮数,这些都需要反复试。除了效果,还要算上时延和成本,可以把多个指标折算成一个决策分数:

最终,你拿着这份评估报告告诉老板:模型效果好、响应快、成本可接受,火锅店可以正式开门迎客了。调优评估不是最后一步,而是连接训练与业务的那杆秤。

U=α⋅Acc−β⋅Latency\displaystyle U = \alpha \cdot \text{Acc} - \beta \cdot \text{Latency}
这是业务评估的加权决策分:正确率高加分,推理慢扣分。分数最高的方案,就是最适合上线的那一版。
  1. 衡量正确率$\text{Acc}$ 是任务指标,例如分类正确的样本占比。
    Acc=#correct#total\displaystyle \text{Acc} = \frac{\#\text{correct}}{\#\text{total}}
  2. 衡量时延$\text{Latency}$ 是端侧单次推理耗时,单位通常用毫秒。
    Latency\displaystyle \text{Latency}
  3. 设置权重$\alpha$ 和 $\beta$ 是根据业务重要性调出的权重,决定你更看重质量还是速度。
    α,  β\displaystyle \alpha, \; \beta
  4. 计算决策分$U$ 越大代表方案越优,最终选择得分最高的配置上线。
    U=α⋅Acc−β⋅Latency\displaystyle U = \alpha \cdot \text{Acc} - \beta \cdot \text{Latency}

AI 应用场景

客服工单自动分类

阶段:模型微调与适配

解决的问题:传统关键词规则对口语、错别字、新业务词不敏感;通用SLM又没有商家特有的品类知识。用本地少量已标注工单,通过LoRA微调一个小模型,让模型学会业务标签与意图分布,敏感数据不出内网。

具体案例:某电商平台收集过去半年2万条“退货/退款/物流/发票”工单,按“问题描述→类别标签”的标准模板整理,用秩8、α16的LoRA训练10个epoch,在3B SLM上微调后部署到私有机房。工单一级分类准确率从75%提升到93%,客服流转效率大幅提高。

车载语音助手意图识别

阶段:端侧模型压缩与部署

解决的问题:车机需要离线快速响应“查天气、开空调、导航去公司”等固定意图,通用SLM体积大、响应慢,直接部署会超出车机内存和时延预算。

具体案例:先收集设备端日志构造意图数据,用QLoRA在消费级显卡上微调一个1B SLM,再把LoRA权重合并、量化为INT8,部署到车机8155芯片。推理耗时从900ms降到180ms,内存占用从2.6GB降到0.7GB,断网也能用。

医疗病历结构化抽取

阶段:数据准备与提示词工程

解决的问题:医疗机构数据不能出域,通用模型对医学缩略语(T2DM、COPD等)识别弱,且要求输出统一结构。微调成为兼顾隐私和效果的关键方案。

具体案例:在院内服务器对模型做LoRA微调,训练数据以“主诉 → ICD-10诊断码”模板组织,先用清洗流程做脱敏和标注,再让模型在离线工作站推理,把非结构化病历转成结构化字段,准确率达到可交付标准。

Python 演示

python79 行
import torchimport torch.nn as nnimport torch.optim as optim class LoRALinear(nn.Module):    def __init__(self, in_features, out_features, rank=4, alpha=16):        super().__init__()        self.rank = rank        self.alpha = alpha        self.weight = nn.Parameter(torch.randn(out_features, in_features) * 0.02)        self.bias = nn.Parameter(torch.zeros(out_features))        self.lora_A = nn.Parameter(torch.randn(rank, in_features) * 0.01)        self.lora_B = nn.Parameter(torch.zeros(out_features, rank))        self.enable_lora = True        self.weight.requires_grad = False        self.bias.requires_grad = False     def forward(self, x):        y = nn.functional.linear(x, self.weight, self.bias)        if self.enable_lora:            h = nn.functional.linear(x, self.lora_A)            y = y + (self.alpha / self.rank) * nn.functional.linear(h, self.lora_B)        return y class TaskModel(nn.Module):    def __init__(self, dim=32, classes=2, rank=4):        super().__init__()        self.encoder = LoRALinear(dim, 32, rank)        self.classifier = nn.Linear(32, classes)     def forward(self, x):        h = torch.relu(self.encoder(x))        return self.classifier(h) def make_dataset(n=2000, dim=32):    torch.manual_seed(0)    x = torch.randn(n, dim)    w = torch.randn(dim)    y = (x @ w > 0).long()    return x, y def evaluate(model, x, y):    model.eval()    with torch.no_grad():        logits = model(x)    return (logits.argmax(1) == y).float().mean().item() def main():    x, y = make_dataset()    model = TaskModel()    x_test, y_test = x[:500], y[:500]    model.encoder.enable_lora = False    print("baseline acc:", round(evaluate(model, x_test, y_test), 4))    model.encoder.enable_lora = True    opt = optim.Adam([        {"params": model.encoder.lora_A},        {"params": model.encoder.lora_B},        {"params": model.classifier.parameters()},    ], lr=0.01)    loss_fn = nn.CrossEntropyLoss()    for epoch in range(20):        perm = torch.randperm(x.size(0))        total_loss = 0.0        correct = 0        for i in range(0, x.size(0), 64):            idx = perm[i:i + 64]            xb, yb = x[idx], y[idx]            opt.zero_grad()            out = model(xb)            loss = loss_fn(out, yb)            loss.backward()            opt.step()            total_loss += loss.item() * xb.size(0)            correct += (out.argmax(1) == yb).sum().item()        print("epoch", epoch, "loss", round(total_loss / x.size(0), 4),              "acc", round(correct / x.size(0), 4)) if __name__ == "__main__":    main()
目的:演示在合成业务数据上“冻结基座权重 + LoRA微调”的完整流程,输出基座准确率与微调后的训练过程,直观感受低秩适配带来的效果提升。
  1. self.weight.requires_grad = False冻结基座线性层权重,只允许LoRA矩阵和分类头更新,体现“小参数微调大模型”。
  2. self.lora_B = nn.Parameter(torch.zeros(out_features, rank))B矩阵初始化为0,保证LoRA启动时对原有能力零扰动,训练更稳定。
  3. y = y + (self.alpha / self.rank) * nn.functional.linear(h, self.lora_B)用α/r缩放增量,把低秩适配结果加回主输出,这就是LoRA前向核心。
  4. {"params": model.encoder.lora_A}, {"params": model.encoder.lora_B}优化器只更新LoRA参数,冻结的基座参数不进入优化器,显著降低显存占用。
  5. correct += (out.argmax(1) == yb).sum().item()统计每个batch的预测正确数,用来观察微调是否在持续提升任务表现。

常见误区

误区很多初学者以为,微调就是把业务数据反复喂给模型,让模型把答案背下来,测试时直接“默写”。于是他们把测试集也混进训练集,结果模型看似分数很高,一换新表述就崩。

正解微调不是让模型做背诵,而是调整模型的概率分布与行为模式。正确做法是把任务整理成统一的输入输出对,用损失函数推动参数调整,让模型学会“处理”这类任务,而不是“记住”特定答案。训练集和测试集必须严格分离,才能看出真实泛化能力。

为何常见:大语言模型具有超强记忆能力,轻轻松松“背”出训练样本,新手因此误以为训练的本质就是记忆。

误区有人认为LoRA的秩 r 越大,适配能力越强,所以一上来就设64甚至128,觉得“参数越多越厉害”。

正解秩过大不仅增加可训练参数和显存占用,还容易在小数据集上过拟合。实践中,很多分类和抽取任务用 r=4 到 r=16 已经足够,关键是配合 α 和学习率一起调。秩的本质是“增量子空间的表达能力”,够用就好。

为何常见:这是“参数越多=模型越强”的直觉在预训练阶段的延续,但微调阶段数据量有限,复杂度并不是越高越好。

误区看到QLoRA训练时显存占用很小、模型是4bit,就以为拿到手机端直接能跑,不需要再做任何优化。

正解QLoRA是训练期的显存节省技术,得到的产物通常是“4bit基座 + 高精度LoRA增量”,不能直接当作部署格式。上线前一般要合并LoRA权重,再根据端侧做推理优化,例如转成INT8/INT4格式、算子融合、KV Cache复用,才能满足真实的内存和时延要求。

为何常见:训练时的低显存特性容易让人误以为训练状态等于部署状态,忽略了训练框架与推理框架之间的差异。

误区新手常以为疯狂堆数据就行,把通用语料、无关文本也混进训练集,期待模型“吃得多变得强”。

正解微调阶段的关键是任务分布匹配。少量高质量、模板统一、覆盖边界情况的业务数据,远胜于海量无关数据。通用数据会把模型注意力拉离任务,反而稀释业务信号,导致效果下降。应优先做采样和清洗,控制类别比例,而不是盲目加量。

为何常见:预训练阶段确实依赖超大规模语料,新手把这个经验直接套到微调阶段,忽视了二者目标不同。

面试题

Q1. 通用SLM在特定业务场景表现不佳,最直接原因是什么?

单选题 · easy

  • A.模型的参数量太小
  • B.语料与业务分布不匹配← 正确答案
  • C.模型缺少注意力机制
  • D.无法在GPU上推理

答案:B。通用SLM在预训练时主要学习互联网通用语料,缺少业务领域的术语、格式和规则,因此“能力有但不对口”。参数量小不是根源,注意力机制是模型自带结构,GPU推理更不是业务表现不佳的原因。就像全能大厨不会做火锅,是因为没学过火锅菜谱,而不是厨师本身不聪明。

Q2. 全参微调与LoRA微调的主要区别是什么?

单选题 · easy

  • A.全参微调冻结所有层
  • B.两者核心训练机制相同
  • C.LoRA只训练低秩增量矩阵← 正确答案
  • D.LoRA将模型权重清零重置

答案:C。全参微调更新模型所有参数,LoRA冻结基座权重,只训练低秩矩阵B和A。全参微调不是冻结所有层;两者机制不同;LoRA也绝不会把原权重清零。可以理解成:全参微调是让大厨推翻重学,LoRA只是给他一本小本子记配方。

Q3. LoRA中秩r的含义是什么?

单选题 · mid

  • A.是学习率大小的设置
  • B.是语言模型的隐藏层数
  • C.是低秩分解矩阵的维度← 正确答案
  • D.是训练批次大小的参数

答案:C。秩r决定低秩矩阵A和B的中间维度,r越小,可训练参数越少,r越大,增量表达能力越强。它不是学习率、层数或batch size。类比来说,r就像小本子上“要点条数”:条数太少记不全,条数太多又容易记混乱。

Q4. QLoRA中冻结基座模型使用的主要精度是什么?

单选题 · mid

  • A.FP32全精度存储
  • B.NF4的4位量化存储← 正确答案
  • C.采用INT8动态量化
  • D.使用BF16混合精度

答案:B。QLoRA的核心创新是把冻结基座权重量化为NF4(4-bit NormalFloat),大幅降低显存占用,同时保持训练效果。FP32、INT8、BF16都不是QLoRA的标志性精度。就像把厚重菜谱压缩成一盒浓缩香料,用最小体积保留最核心的味道。

Q5. 下列哪些是SLM微调中降低显存或内存开销的有效手段?

多选题 · mid

  • A.引入LoRA低秩适配器← 正确答案
  • B.使用QLoRA的NF4量化← 正确答案
  • C.将训练样本重复三份
  • D.开启梯度检查点机制← 正确答案

答案:ABD。LoRA减少可训练参数量,QLoRA把基座压到4bit,梯度检查点用计算换显存,三者都能显著降低显存开销。把训练样本重复三份既不改变显存,也不能提升效果,反而可能加剧过拟合。

Q6. 为什么微调阶段要准备高质量任务数据?

单选题 · easy

  • A.因为数据越多效果越好
  • B.因为只关注数据格式
  • C.因为模型需匹配业务分布← 正确答案
  • D.因为模型推理速度会更快

答案:C。微调的本质是让模型学会业务分布,高质量、与任务分布一致的数据才能让模型学到正确规律。数据多但无关,反而会分散模型注意力;数据格式只是手段之一,推理速度由部署优化决定,与训练数据无关。

Q7. 端侧部署SLM时需要做哪些适配优化?

多选题 · hard

  • A.合并LoRA后低比特量化← 正确答案
  • B.使用KV缓存复用与剪枝← 正确答案
  • C.无限增加模型的层数量
  • D.采用分片与异构核调度← 正确答案

答案:ABD。LoRA合并后要转成低比特格式才能瘦身;KV Cache复用减少重复计算;分片和异构核调度能利用CPU/GPU/NPU多核资源。无限增加层数只会让内存和时延爆炸,与端侧优化方向完全相反。

Q8. LoRA的“权重合并”指的是什么?

单选题 · mid

  • A.将BA矩阵与基座相加融合← 正确答案
  • B.将两个模型文件拼成整体
  • C.把LoRA参数直接删除丢弃
  • D.仅保留B矩阵忽略A矩阵

答案:A。推理时把训练好的低秩增量BA加回基座权重,即 W' = W0 + BA,得到完整模型。它不是把文件拼接,也不是删掉LoRA参数或只留B矩阵。就像培训结束后,把大厨小本子上的要点真正印进他的肌肉记忆里。

Q9. LoRA中缩放因子α的主要作用是什么?

单选题 · hard

  • A.用来决定rank的取值
  • B.调节低秩增量的影响强度← 正确答案
  • C.直接改变模型的词表大小
  • D.控制训练学习率衰减速度

答案:B。α在LoRA前向中通过α/r缩放BA增量,控制低秩适配对输出的影响强度。α与rank共同决定有效学习步长,但它不决定rank大小、不改变词表,也与学习率衰减无关。好比小本子上的配方写得更“浓”还是更“淡”。

Q10. 调优评估阶段通常包含哪些工作?

多选题 · easy

  • A.在验证集上对比微调效果← 正确答案
  • B.设定测试集和评估基准← 正确答案
  • C.依据任务指标调整超参数← 正确答案
  • D.忽略成本盲目堆叠算力

答案:ABC。调优评估要固定评测集、设定基座基准、微调后对比,并根据准确率、时延等指标调整超参。忽略成本只堆算力违背了端侧部署和低成本微调的初衷,不是正确工作方式。