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 = outputs[0] # 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 天前
CNNMNIST
人工智能·深度学习
宝贝儿好1 天前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
AI产品备案1 天前
生成式人工智能大模型备案制度与发展要求
人工智能·深度学习·大模型备案·算法备案·大模型登记
黑客思维者1 天前
机器学习071:深度学习【卷积神经网络】目标检测“三剑客”:YOLO、SSD、Faster R-CNN对比
深度学习·yolo·目标检测·机器学习·cnn·ssd·faster r-cnn
北山小恐龙1 天前
卷积神经网络(CNN)与Transformer
深度学习·cnn·transformer
汗流浃背了吧,老弟!1 天前
为什么RAG在多轮对话中可能表现不佳?
人工智能·深度学习
糖葫芦君1 天前
RQ-VAE(残差量化-变分自编码器)
人工智能·深度学习
yj_sharing1 天前
动手学深度学习softmax回归的笔记
笔记·深度学习·回归
温柔只给梦中人1 天前
深度学习:day03-04
人工智能·深度学习
棒棒的皮皮1 天前
【深度学习】YOLO 模型部署全攻略(本地 / 嵌入式 / 移动端)
人工智能·深度学习·yolo·计算机视觉