亚信科技 大模型开发 二面
1. 写一下 attention 公式,代码实现一下
attention 的公式是:

计算过程就是三步:先算 (Q) 和 (K) 的相似度分数,再做缩放,然后过 softmax 得到权重,最后用这个权重对 (V) 加权求和。
import numpy as np
def softmax(x):
x = x - np.max(x, axis=-1, keepdims=True)
exp_x = np.exp(x)
return exp_x / np.sum(exp_x, axis=-1, keepdims=True)
def attention(Q, K, V):
dk = Q.shape[-1]
scores = np.matmul(Q, K.T) / np.sqrt(dk)
weights = softmax(scores)
output = np.matmul(weights, V)
return output
Q = np.array([[1.0, 0.0, 1.0]])
K = np.array([[1.0, 0.0, 1.0],
[0.0, 1.0, 0.0]])
V = np.array([[1.0, 2.0],
[3.0, 4.0]])
print(attention(Q, K, V))
2. 训练时为什么要 mask,推理时也需要吗?两处有什么区别?推理时的 sequence length 和训练时一样吗?
训练时要 mask,主要是为了防止模型看到未来信息。像自回归语言模型,预测当前位置时,只能看当前 token 前面的内容,不能偷看后面的标准答案。所以训练时会加一个下三角 mask,也叫 causal mask。
推理时也需要这个约束。因为推理本质上也是一个一个 token 往后生成,当前时刻只能利用已经生成的内容,不能看到未来。只是训练时一般是整段并行计算,推理时是逐步生成,所以实现形式上看起来不太一样,但本质一样,都是因果 mask。
两者区别主要在这里:
- 训练时:输入是一整段已知文本,靠 mask 保证“只能看前文”
- 推理时:前文是已经生成出来的内容,本身就天然满足从左到右生成,但底层 attention 依然遵守因果约束
推理时的 sequence length 不一定和训练时一样。训练时通常会设一个最大长度,比如 512、1024、2048。推理时输入可能比训练短很多,也可能接近训练上限。但一般不能超过模型本身支持的最大上下文长度,否则要么报错,要么效果明显下降。
3. Transformer 和传统 seq2seq 模型有什么区别?
传统 seq2seq 一般是 RNN、LSTM 这类 Encoder-Decoder 结构。输入一个序列,编码成隐状态,再由解码器一步一步生成输出。
Transformer 最大的不同,是它不用循环,而是靠 self-attention 建模序列关系。
传统 seq2seq 的特点是按时间步顺序处理,前面的信息要一层层传到后面,所以并行性差,序列长了以后长期依赖也比较难学。Transformer 里每个位置都可以直接和其他位置做 attention,更容易建模长距离依赖,而且训练时可以并行,所以效率更高。
简单说:
- 传统 seq2seq:靠循环,顺序计算
- Transformer:靠 attention,并行计算
这也是为什么后面的大模型基本都建立在 Transformer 上。

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