GPT-OSS大模型Attention架构设计

模型参数(20B和120B版本)

考虑Attention Sink的Attention计算

大模型推理时,在大部分层上能观察到注意力很大程度关注到开头的几个token上,在StreamingLLM中被称为attention sink。究其原因,并不是开头的token一定最重要,而是当大模型无法有效关注到主要token时,由于开头的token能被后面所有token看到,所以表现出很高的attention score。

因此有一类工作聚焦于 规避attention sink的出现 ,避免这样的现象影响有效的attention计算。
GPT-OSS提出bias项来修正attention sink,基本的思路是在计算完QK之后,给每个head拼接上额外的一个token(可学习的bias token),然后计算softmax,再把bias token丢弃,最后去和V相乘计算attention的输出。

GPT-OSS源代码如下(写法相对比较晦涩):

于是,我重新整理了一版更简洁的代码:

S这个可学习的bias项应该是head-wise,即给每个head都加上一个额外的token,参数定义如下:

python 复制代码
self.S = torch.nn.Parameter(torch.empty(config.num_attention_heads))

从数学角度分析,上面这个过程 本质上就是给attention的计算中分母的求和加上了额外的一项:

softmax(xi)=exp⁡(xi)∑jexp⁡(xj)→exp⁡(xi)∑jexp⁡(xj)+exp⁡(S)softmax(x_i) =\frac{\exp(x_i)}{\sum_j \exp(x_j)} \rightarrow \frac{\exp(x_i)}{\sum_j \exp(x_j)+\exp(S)}softmax(xi)=∑jexp(xj)exp(xi)→∑jexp(xj)+exp(S)exp(xi)

但注意和V相乘之前,需要去掉bias token,从而得到attention的输出。

补充:也有工作是给分母上加1,达到类似的效果,不过GPT-OSS用可学习的bias项会更加灵活。

分层混合稀疏Attention

GPT-OSS采用隔层交错的attention,混合标准的GQA(full attention)和sliding window attention。

其中,window的大小是128,通过下面的方式决定哪些层用sliding window attention:

python 复制代码
self.sliding_window = config.sliding_window if layer_idx % 2 == 0 else 0
相关推荐
薛定谔的猫-菜鸟程序员3 小时前
上传试卷、打Boss,玩游戏:我用 TextIn xParse 做了一套“会解析试卷的刷题游戏“
人工智能·游戏·大模型·textin·ai数据层基础设施
feasibility.5 小时前
“美版DeepSeek”等海外开放模型,能夺回生态入口吗?——中国开放权重领先下的2026全球AI分水岭
人工智能·开源·大模型·llm·minimax·deepseek·beam
迷糊小面包7 小时前
DeepSeek Harness 接入GLM-5.
大模型
M--Y7 小时前
LangChain 提示工程:少样本提示与输出解析器
python·langchain·大模型·llm·输出解析器·少样本提示
爱笑的k118 小时前
实践中layernormal的计算方式
大模型·ai infra
Guarding and trust9 小时前
项目拆解(二):模型输出是‘野‘的——三层兜底+重分析,把AI变成可靠零件
java·人工智能·python·大模型·fastapi·ollama·错误兜底
星核0penstarry11 小时前
企业接入多家 AI API,聚合平台能解决什么、不能解决什么
人工智能·大模型·ai编程·合规·api聚合平台·大模型网关·接入层
for_ever_love__11 小时前
LangChain Text-to-SQL:让不会写 SQL 的人查数据库
数据库·sql·langchain·大模型·agent·rag·问答
问天_观心11 小时前
Mistral-7B QLoRA 实战(二):官方权重转换、4-bit NF4 加载与 Base Model 基线测试
人工智能·深度学习·学习·大模型·transformer
倔强的石头10611 小时前
Gemini架构解析_多模态大模型的设计思路
人工智能·大模型