Qwen2.5简要全流程以及Q&A

1 输入prompt 得到input id

input id: B,L # batch size , lenth

2 embeding之后得到 input_embeds: B,L,D # demensions

3 进入Transformer层

先通过linear层得到shape不变的 QKV

多头注意力 分割Dimension , kv变成 B,H,L,head_dim h是head,head_dim * head = Dimension

(如果有kvcache的话):

new key B, H, 1 head_dim

past key B,H,L_prev,dim

concat:B,H,L_prev+1,dim

Attn输出 B,L,D

outputs = self.transformer(input_ids, ...)

final_hidden_states = outputs0 # shape: B, L, D

logits = self.lm_head(final_hidden_states) # shape: B, L, vocab_size

self.transformer 是由多层 Qwen2Block(带 attention + feedforward)堆叠组成,每层更新一次 hidden state。最终最后一层输出的 hidden state 就是 final_hidden_states。

logits = lm_head(final_hidden_states)

B, L, vocab_size

(值是每个位置对每个词的预测得分)

遇到到是哪个token_id之后 用tokenizer.decode()得到最终的词

lm_head是什么

语言建模头(Language Modeling Head)

一个线性层,将输出的hidden_states映射到词表维度

vocab_size = 151936, hidden_size = 4096

self.lm_head = nn.Linear(4096, 151936, bias=False)

得到logits之后还有一个sampling的过程

greedy sampling 直接取最大值

next_token = ops.argmax(next_token_logits, axis=-1) # B

Top-k / Top-p Sampling:

用 softmax 得到概率

probs = ops.softmax(next_token_logits, axis=-1) # B, vocab_size

根据策略采样

next_token = sample_from(probs, top_k=50, top_p=0.95, temperature=1.0)

top_k 取前k个概率大的

top_p 累积概率小于0.95

相关推荐
恒知学术1 小时前
SCI 文献怎么检索?英文关键词、DOI、被引量和开放获取线索整理
人工智能·深度学习·sci·文献检索·谷歌学术·doi
我登哥MVP2 小时前
Headroom 深度指南:AI Agent 上下文压缩实战
人工智能·python·深度学习·神经网络·机器学习·自然语言处理·pip
OpenApi.cc2 小时前
来了,来了,我来了,Mocode
人工智能·深度学习·神经网络·目标检测·数据挖掘
hongyucai4 小时前
大模型常见问题整理
人工智能·深度学习
再渊4 小时前
基因归因到底怎么计算的?
python·深度学习·机器学习
HiDev_5 小时前
【非标自动化】2、认识元器件(接近传感器)
人工智能·深度学习·自动化
phltxy6 小时前
LangGraph智能租房助手实践
大数据·人工智能·python·深度学习·语言模型·langchain
OpenApi.cc6 小时前
Mocode 开发文档平台
人工智能·深度学习·目标检测·自然语言处理·语音识别
大鹏的NLP博客6 小时前
CMAD:基于紧凑表征学习与马氏距离统计判别的工业异常检测架构
人工智能·深度学习
lkforce7 小时前
Transformer架构下的详细计算流程模拟,精确到数字(单层单头)
人工智能·深度学习·ai·transformer