高德 大模型开发 一面

1. LoRA 时如何选择合适的参数?这些参数的选择如何影响模型性能?

答:LoRA 里最关键的参数是 rlora_alphalora_dropouttarget_modules。LoRA 的权重更新可以写成:

其中B∈Rd×r,A∈Rr×kr 是低秩分解的秩。r 越大,可训练空间越大,通常效果上限更高,但显存占用、训练耗时和过拟合风险也会增加,常见取值是 4、8、16、32。lora_alpha 是缩放系数,实际更新一般写成:

alpha 越大,LoRA 分支对原模型的影响越强,太小可能学不动,太大可能不稳定。lora_dropout 主要用于减少过拟合,数据量小或噪声大时通常设成 0.05 或 0.1。target_modules 决定把 LoRA 挂在哪些层上。大语言模型里最常见的是 attention 中的 q_projv_proj,有时也会加 k_projo_proj 或 MLP 层。挂得越多,训练参数越多,上限更高,但成本也更大。实际做法通常是先从 r=8alpha=16dropout=0.05q_proj+v_proj 起步,再根据验证集效果、loss 曲线和显存情况微调。

from peft import LoraConfig, get_peft_model

config = LoraConfig(
    r=8,
    lora_alpha=16,
    lora_dropout=0.05,
    target_modules=["q_proj", "v_proj"],
    bias="none",
    task_type="CAUSAL_LM"
)
model = get_peft_model(base_model, config)

2. LoRA 的优势是什么?

答:LoRA 的核心优势是只训练少量新增参数,而冻结原始大模型参数,因此显存占用更低、训练速度更快、存储更省。相比全量微调,LoRA 不需要保存一整份新模型权重,只需要保存低秩增量矩阵,所以一个底座模型可以挂很多个不同任务的 LoRA 适配器,切换成本很低。它特别适合企业里的领域微调、风格微调、指令微调,因为这类场景往往资源有限,但又需要快速迭代。另外 LoRA 对原模型侵入小,工程上也容易接入 Transformers、PEFT、DeepSpeed 等生态。缺点是它的表达能力受 rank 限制,如果任务和底座模型差异特别大,或者需要非常深的能力迁移,效果可能不如全量微调。

3. 大模型如何通过人工指标来评估效果?有哪些常用的人工指标?

答:人工评估主要是解决自动指标无法准确反映真实体验的问题,尤其是在开放问答、对话、总结、代码生成、Agent 执行这些场景里。常用人工指标包括:正确性、相关性、完整性、流畅性、逻辑性、事实性、指令遵循、安全性、可读性、稳定性。如果是 RAG 场景,通常还会加上是否基于检索内容回答、有没有编造、引用是否准确;如果是 Agent 场景,会关注工具选择是否正确、参数是否合理、任务是否完成、失败时是否会瞎编。人工评测一般有两种常见方式,一种是单回答打分,比如 1 到 5 分;另一种是偏好评测,也就是同一个问题给标注员看两个回答,让他选哪个更好。人工评测要想稳定,关键是题目覆盖真实业务、标注规则一致、最好双人标注并做冲突仲裁。

4. 学习率、Batch Size、Warmup 这些训练参数如何影响模型的学习和优化?

答:学习率决定参数更新步长。学习率过大,loss 容易震荡甚至发散;学习率过小,收敛会变慢,甚至可能陷在次优解附近。对大模型微调来说,学习率通常比较小,LoRA 微调常见是 10-4到 10-5,全量微调一般更小。Batch Size 会影响梯度估计的稳定性。Batch 越大,梯度越稳定,但显存占用越高;Batch 太小,噪声大,训练容易波动,不过有时泛化可能更好。Warmup 的作用是让学习率在训练初期从很小逐渐升高,避免一开始梯度更新过猛导致不稳定。除了这几个参数,大模型训练里常配合权重衰减、梯度裁剪、学习率衰减调度器一起使用。经验上一般先确定总 batch,再根据 batch 和可训练参数规模调学习率,然后配 warmup 和 cosine/linear decay。

from transformers import get_cosine_schedule_with_warmup
import torch

optimizer = torch.optim.AdamW(model.parameters(), lr=2e-4, weight_decay=0.01)
scheduler = get_cosine_schedule_with_warmup(
    optimizer,
    num_warmup_steps=500,
    num_training_steps=10000
)

5. DeepSpeed 的 ZeRO-1、ZeRO-2、ZeRO-3 分别有什么区别?

答:ZeRO 的目标是切分训练中冗余保存的状态,减少单卡显存压力。ZeRO-1 只切分优化器状态,比如 Adam 的一阶矩和二阶矩,模型参数和梯度仍然每张卡完整保存。ZeRO-2 在 ZeRO-1 基础上再切分梯度,也就是优化器状态和梯度都分片,但参数还是完整的。ZeRO-3 连模型参数也切分,每张卡只保存一部分参数,前向和反向时按需聚合和释放。显存节省能力是 ZeRO-3 最强,ZeRO-2 次之,ZeRO-1 最弱;但通信开销和系统复杂度也是 ZeRO-3 最高。如果模型不是特别大,ZeRO-2 往往是工程上比较平衡的选择;超大模型训练一般会使用 ZeRO-3。

6. Transformer 的自注意力中,KV-Cache 的引入有什么作用?它如何帮助加速推理过程?

答:KV-Cache 的作用是在自回归生成时缓存历史 token 的 Key 和 Value,避免每生成一个新 token 都把之前所有 token 的 K、V 重新计算一遍。如果没有 KV-Cache,生成第 (t) 个 token 时,需要对前 (t) 个 token 重新做投影并参与注意力;有了 KV-Cache 后,历史 token 的 K、V 可以直接复用,只需要计算当前 token 的 Q、K、V,并把新的 K、V 追加到缓存中。这样做能显著降低重复计算,尤其在长文本生成时加速非常明显。代价是显存会随着生成长度增长,因为缓存要一直保留历史 K、V。所以 KV-

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

找工作这阵子,发现用AI帮着捋JD和简历,比自己瞎琢磨高效多了,分享下我自己的玩法,没那么多规矩,纯个人实操心得。第一步其实很简单,就是把招聘JD和自己的简历,一股脑全粘贴给AI。不用特意整理,原始版本就行,核心就是让AI先搞明白,岗位要什么人,我有什么东西,两者之间差在哪——也就是所谓的人职匹配,自己看半天可能漏重点,AI扫一遍就能把gap标出来,省得我逐字逐句对比。关键是第二步,得给AI定个“人设”,不然它输出的东西太敷衍。我直接给它写了一段提示词,大概意思就是,让它当一个有15年经验的职场老炮,懂德鲁克管理、麦肯锡那套,能帮我把过往经历,转化成岗位需要的能力,别净说废话。具体要求也写得很明确,让它从岗位技能、个人素质这些维度,帮我找长板和短板,别只说表面,还要挖JD里没明说的需求——比如用PEST、波特五力模型,分析下行业痛点,知道公司招这个岗位真正想解决什么问题。还有面试预判也很重要,让它模拟面试官,挑我简历里模糊的地方追问,比如数据不详细、动词太笼统的经历,用STAR法则往深了问,逼我用过去式和数字回答,这样练下来,面试时就不会慌。如果有空窗期、跨行这种雷区,也让它帮我想话术,重点是突出“主动选择”,不是逃避,而且话术要具体,别来“保持自信”这种没用的建议。另外,还得让它帮我设计3个反向提问,就是面试最后问面试官的,比如向谁汇报、有多少资源权,这样能摸清这个岗位的真实情况,避免踩坑。指令给完之后,AI就会按步骤来,先让我确认JD和简历,然后用表格列清楚gap,给我补短板的建议,再抛3个尖锐的面试题,我答完之后,它再用KISS原则帮我复盘,哪些要保持,哪些要改进,哪些要停止,哪些要开始准备。
找工作,你都让AI帮你做...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务