小鹏二面:Transformer 基础与端侧 Agent Harness
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 请做一下自我介绍。
- 你的研究生研究方向具体是做什么?详细讲一下(这一部分被连续追问了 6 轮)。
- 详细讲讲 Encoder+Decoder 结构,和纯 Decoder-only 网络在结构上的差异。
- 详细讲解 Transformer 网络结构,以及 QKV 的计算过程。
- 注意力计算的时候,为什么要除以 √dk 做归一化?
- 多头注意力怎么理解?
- 为什么要设计多头注意力?
- 你知道 attention 的哪些变种?
- 你前面提到 LoRA,讲一下 LoRA 的数学原理。
- 两个实习项目里,挑一个和 Agent Harness 最相关的详细展开讲讲,避开传统后端工作。
- 你说你学习过 Agent Harness,Harness 具体要做哪些事情,怎么实践?
- 你提到上下文压缩,说说这方面的经验。
- 这些知识是看源码、论文还是别的渠道学习的?
- 有没有看过其他开源 Agent Harness 项目?
- 讲讲你看过的开源框架,在上下文、工具选择、运行时调度方面值得分享的设计要点。
- 如果把云端或桌面 Agent 的 Harness 经验迁移到端侧(车端、手机、PC),会有哪些不一样的难点?
- 你相比同龄人有什么明显优势?还有哪些不足?
- 你的性格是什么类型?
- 你过往做的是云端 Agent,为什么选择投递端侧 Agent 岗位?
- 如果发放校招 offer,你多久可以来实习?
《参考解析》
Encoder-Decoder 与 Decoder-only 的结构差异
Encoder 栈由双向(非因果)自注意力加前馈网络组成,每个位置都能看到整条输入序列,产出上下文化的表示;Decoder 每层则是带因果掩码的自注意力,加上对 Encoder 输出做 cross-attention 的第三块子层,再加前馈。纯 Decoder-only 只有因果自注意力堆叠,没有独立编码器,也没有 cross-attention——把输入与输出拼成一条序列,训练目标统一成预测下一个 token。差异带来三个后果:Encoder-Decoder 天然贴合「一段输入映射到一段输出」的任务(翻译、摘要、语音),源序列只编码一次、解码每步复用同一份 cross-attention 的 K/V;Decoder-only 结构只有一种层,实现简单、扩展性好、天然支持上下文学习与指令微调,所以成了主流。追问方向通常是「为什么现在几乎都用 Decoder-only」「cross-attention 与拼接序列在长输入下谁更省」,答题时要落到计算与工程复杂度上,而不只是背结构图。
Transformer 与 QKV 的计算过程
输入 token 先做 embedding 加位置编码,进入 N 层。每层流程是:层归一化、多头自注意力、残差相加、层归一化、前馈网络(两层线性加激活,中间维度通常是模型的四倍)、残差相加。自注意力里,输入 X 分别乘以三个投影矩阵得到 Q、K、V;打分用 Q 与 K 的转置相乘,除以 √dk,过 softmax 得到注意力权重,再对 V 加权求和,多个头的输出拼接后经输出投影融合。推理时缓存历史的 K、V,每步只算新 token 的 q 去和缓存的 K 相乘,这就是 KV cache 省下来的计算量——也是显存占用的主要来源之一。
为什么要除以 √dk
如果 q 与 k 的各维近似独立、均值 0 方差 1,那么它们点积的方差是 dk。dk 一大,点积的数值尺度就大,softmax 会被推到饱和区:最大项接近 1、其余接近 0,此时 softmax 的梯度趋近于零,反向传播推不动参数,训练容易不稳甚至停滞。除以 √dk 把方差拉回 1 量级,让 softmax 落在梯度良好的区间。追问一般会延伸到温度系数与注意力的熵、长序列时 dk 变大要不要额外缩放,以及它与后续各种注意力变体(如 scale 与 qk 归一化)的关系。
多头注意力:怎么理解,为什么要设计
直觉上它是「在多个子空间里并行做注意力」:不同的头会各自学到不同的对齐模式,有的盯相邻位置、有的抓句法依存、有的管长距离指代,最后拼接起来由输出投影融合。在总计算量不变的前提下,单头只能给出一种注意力分布,表达力受限;多头用同一份参数预算提供了 h 个独立的低秩投影空间,等价于把注意力分解成多个子空间并行,同时也便于把每个头映射到不同的计算单元上并行。追问的常见方向是 head_dim 太小会怎样(表达力受限、注意力分布更平)、以及 MQA/GQA 这类共享 K/V 的变体——它们牺牲一点质量换取 KV cache 显存与带宽,是为推理吞吐做的取舍,而 MLA 走的是低秩压缩的另一条路。
attention 的变种地图
按「改了数学还是只改实现」分两类更好记。改数学的:稀疏与滑窗注意力(长序列里只算局部加少量全局)、线性注意力与核方法(把 softmax 换成可结合核,复杂度降到线性)、低秩与压缩类(MLA、共享 K/V 的 MQA/GQA)。只改实现的:FlashAttention 系列用分块与 online softmax 把精确注意力做成 IO 友好,数学完全等价;PagedAttention 管的是 KV cache 的分页显存。再往外还有跨模态的 cross-attention,以及序列并行侧的 Ring Attention、Ulysses。回答时给出分类维度与各自适用的场景,比罗列名字更好。
LoRA 的数学原理
冻结预训练权重 W0,在旁路加上一个低秩增量 ΔW = B·A,其中 A 是 r×k、B 是 d×r,r 远小于原始维度。前向变成 h = W0·x + (α/r)·B·A·x,α/r 是缩放系数。初始化的讲究是 A 用高斯随机、B 全零,于是训练起点 ΔW = 0,不破坏预训练行为。可训练参数量从 d×k 降到 r×(d+k),显存与小样本微调成本都大幅下降;α/r 这个缩放让改 r 的时候不必重调学习率。推理时可以合并回 W = W0 + BA 做到零额外延迟,也可以保留旁路做多任务热插拔;代价是低秩假设未必总成立,秩 r 与加在哪些层(只加 q、v 还是全部线性层)需要实验。常被追问的还有 QLoRA 的量化组合、与 adapter、prefix tuning 的区别。
Agent Harness 要做哪些事、上下文压缩怎么做
Harness 是把模型包成能干活的运行时,通常包含七块:循环控制(何时继续调工具、何时收尾,以及步数、时间、预算上限)、工具注册与调用(schema、鉴权、沙箱、幂等)、上下文管理(裁剪、摘要、检索式记忆、预算分配、对前缀缓存友好的排序)、状态与持久化(会话状态、断点续跑、检查点)、可观测(每步的 trace、token、耗时与成本)、安全与人类介入(危险动作确认、权限边界、注入防护)、评测与回归(任务集、成功判据、对照实验)。实践顺序上先把循环与工具调用做扎实,再补记忆与评测——没有评测的 Harness 是改不动的。上下文压缩则分三类手段:截断最便宜但会丢关键约束;摘要要把实体、数字、约束、未完成事项结构化保留,并留最近若干轮原文;检索式压缩把历史与工具结果落外部存储、按需召回,不常驻上下文。压缩策略好不好,要用一组回归任务量「压缩比—成功率」的曲线来定,同时注意别打乱前缀顺序,否则前缀缓存全失效。
从云端到端侧,Harness 的难点差在哪
一是算力与内存:模型要量化蒸馏,KV cache 与上下文预算比云端小一到两个数量级,长上下文基本不可用,上下文管理策略必须更激进。二是延迟与能耗:交互要求首字快,不能一次并行几十个工具、也不能频繁唤醒大模型,通常要小模型做路由与槽位抽取、大模型只处理难样本的级联方案。
三是隐私:数据不出端,意味着记忆与工具执行都在本地,云端只做无隐私的补充,这反而简化了一部分权限设计。四是平台差异:车端有传感器与语音打断、多用户共用一辆车,手机与 PC 的权限模型又各不相同,工具集与中断恢复的要求更高。五是更新与版本碎片:模型与技能包的灰度、回滚、端云协议兼容都要重做。六是评测链路变长:真机验证成本高,得先建离线回放再补真机小样本闭环。