從GPT-OSS談談大模型算法和Infra演進
TL;DR
gpt-oss開源了,整個模型架構的設計真的是非常的simple & elegant。本文結合一些前段時間一些Infra相關的爭議和自己開發Agent相關的分析, 來對未來模型架構演進做一些分析。
1. Overview
OpenAI這次開源的是gpt-oss-20b 和 gpt-oss-120b兩個模型。
圖片
在自己的mac m4pro上運行了一下20b的模型, 基于LM Studio輸出為38 token/s, 非??焖倭恕R恍I問題回答思路和格式都也很不錯, 這也使得很多小規模部署, 特別是基于它做一些簡單的Agent任務成為可能。
Attention使用了GQA和Sliding-window GQA交替的方式, 當然Llama 4也這么干過, 同時還有一個Attention Sink來解決一些long context的任務. 同時這樣的結構對于KVCache的處理有很多可以在推理優化中進一步挖掘的地方。
MoE上, 小的20b模型采用了4Active/32Routed, 而較大的120b采用了4Aactive/128Routed. 比較有趣的是Intermediate Size = Hidden Size = 2880. 為什么不升維度呢? 然后MLP還帶了Bias. 激活函數用了SwiGLU帶了clamp并且, 它的EP并行是如何實現的呢?
然后Reasoning的強度也有高中低的區別...另外和國內一些開源模型相比, 它的最大特點就是層數特別少. 120b只有36層....這樣就直接的提高了TPS。
這些疑問都有很多值得推敲的地方。
2. Attention
在Attention這一塊, 首先是使用了GQA和Sliding-window GQA交替的方式, 即Hybrid Attention. 在Llama 4中其實也見到過, 但是沒有像OAI這樣interleave的方式. 這樣的好處有幾點: 首先計算量少了很多, KVCache也少了很多, 特別是Long-context的情況下。
但是有一個疑問, 如果未來針對更大規模的模型例如一個1T參數左右的GPT-5如果還是這樣的方式, 模型可能要繼續加寬和加深? 那么勢必也會進行一些分布式的推理, EP并行或者AFD怎么處理呢? GQA應該是可以有效的使用AFD和EP的, 而對于Sliding-window GQA本身計算時間會短很多, 那么可能還是和MLP融合? 對于這類hybrid attention的模型如何overlap是一個很好玩的事情。
另外是對于不同的請求context-length在Agent場景也會存在很大的差異, 是不是還有一個根據context不同來配對Decoding的調度算法呢? 實際上對于一個Stateful且計算量和存儲長度都有很大差異的情況下, 類比于大數據中的一些Remote Shuffle方式處理數據偏斜, 通過layerwise的KVCache傳輸來處理呢? 這樣來實現一些長context請求驅逐出某個decoding cluster? 同時有一些額外的KVCache內存池作為Stateful的存儲似乎也有不少辦法去做一些事情?
而本質上,針對不同的context長度, 如果有一種大家計算時間都差異不大的方式那不是更好么?們注意到DeepSeek的NSA其實也是使用了Sliding window的方式, 然后使用Gated Output。同時又采用了block selection機制使得整體的計算時間并不會隨著context的差異變化過大。
圖片
其實從個人的視角來看, 我可能會更偏向于NSA, 特別是Agent場景. 很多工具返回的結果剛好像內存管理那樣, 按照Page可以填充到Block中。這樣Agent context engineering和NSA本身可以做很多的協同設計了。
另一方面最近在看Google的一篇論文《Learning without training:The implicit dynamics of in-context learning》[1]
Attention本身產生兩種輸出, 一種是查詢x的輸出A(x), 另一種是有Context的輸出A(C,x)。兩者的delta就包含了上下文本身的信息. 當這個Delta經過MLP后, 等價于增加了一個很簡單的scratchpad。
圖片
然后這篇論文還有一個很好的結果, 使用原始的權重處理A(C,x)等同于使用新的權重 處理x。這樣模型不用重新訓練又可以進一步的根據上下文更新參數了, 似乎很值得期待, 特別是結合Sutton的The Era of Experience。前段時間我也在考慮如何通過模型推理的經驗來動態改變prompt. 感覺這條路又可以做不少事情了。
另一方面Attention的一個比較好的實現是Sink Attention, 大致意思是context長了以后, 注意力全中多集中在開始的幾個token, 例如論文《Efficient Streaming Language Models with Attention Sinks》[2]
另一篇論文是DeepMind的《Transformers need glasses! Information over-squashing in language tasks》[3] 也提到了類似的問題。
圖片
SteamingLLM的做法就是通過Attention Sink來分散注意力, 使得中段和尾段注意力.. gpt-oss創建了一些可學習sink參數, 然后處理如下:
self.sinks = torch.nn.Parameter(
torch.empty(config.num_attention_heads, device=device, dtype=torch.bfloat16)
)
t = sdpa(q, k, v, self.sinks, self.sm_scale, self.sliding_window)
def sdpa(Q, K, V, S, sm_scale, sliding_window=0):
S = S.reshape(n_heads, q_mult, 1, 1).expand(-1, -1, n_tokens, -1)
...
QK = torch.einsum("qhmd,khmd->hmqk", Q, K)
...
QK = torch.cat([QK, S], dim=-1) #拼接Sink
W = torch.softmax(QK, dim=-1) #計算帶Sink的softmax
W = W[..., :-1] #丟棄Sink權重
attn = torch.einsum("hmqk,khmd->qhmd", W, V)其實我覺得還有一個補充的點是做一些自適應溫度的工作? 也是來自Deepmind 《Softmax is not Enough (for Sharp Size Generalisation) 》[4]
圖片
最后還有一個小細節, attn head-dim =64 ? 小了很多, 查詢了一下蘇老師的文章《關于維度公式“n > 8.33 log N”的可用性分析》[5],好像只有在Sliding-window GQA上是匹配的. 為了遷就這個而構成的一個Trade-off?
另一個問題就來了, 針對國產的各種NPU算力又要怎么搞呢?
3. MoE
其實對于120B的模型, 還是采用的Finegrain的Experts, 專家數128個. 但是沒有Shared Expert. 其實算法上去掉Shared也沒啥問題. 但是Fine grain本身的意義就不在多說了. 關鍵的問題回到Intermediate Size = Hidden Size = 2880. 為什么不升維度呢? 因為這個模型本來大小就相對小一點, 新的B200一類的卡顯存賊大. 4個Expert直接拼接在一起不就成了一個intermediate = 4 * hidden size大矩陣了么?
然后MLP還帶了Bias. 激活函數用了SwiGLU帶了clamp并且, 實際上也構成了一個殘差項的連接. 這些設計的動機是什么我不知道...
其實這一塊,如果我們要走hybrid attn的路, 做EP或者AFD似乎還有一些事情要處理. 特別是Sliding-window GQA的那一層. 突然想到一個idea, 兩批請求錯層去做overlap, 然后通過GreenContext去限制Full GQA和 Sliding-window GQA的計算資源是不是有收益呢?
至少我們看到的是在Attn上大家都在想方設法去解決long-context的各種效率問題, 這些問題解決了A和F之間的差異其實也就開始變小了...不過OAI這種Intermediate :hidden = 1:1 的設計是否在更大的模型上會采用, 還是針對小模型的時候拼接處理容易做的一些設計, 我不知道... 或許一些更大規模的模型, 例如1T參數的又繞到1:4. 感覺這里還是有不少設計空間的...
4. 總結
總體來看, 這次CloseAI再次Open帶來了不少變化, 這些變化似乎又給Infra賞了一口飯吃. 模型-系統-硬件的協同又有好多活干了~ 還有一些gpt-oss-mcp-server和tools的API挺有趣的, 后面再花時間學習吧!
參考資料
[1] Learning without training: The implicit dynamics of in-context learning: https://arxiv.org/pdf/2507.16003
[2] Efficient Streaming Language Models with Attention Sinks: https://arxiv.org/html/2309.17453v4
[3] Transformers need glasses! \faGlasses Information over-squashing in language tasks: https://arxiv.org/html/2406.04267v2
[4] Softmax is not Enough (for Sharp Size Generalisation): https://arxiv.org/html/2410.01104v3
[5] 關于維度公式“n > 8.33 log N”的可用性分析: https://kexue.fm/archives/8711



































