当前位置: 首页 > news >正文

Qwen2.5模型结构

self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False) 这个是用来干嘛的

输出层,词汇投影层,将模型输出的隐藏状态向量映射回词表空间,用于预测下一个token

# 预测 logits,未经过 softmax

lm_logits = self.lm_head(hidden_states)  # shape: [B, L, vocab_size]

之后再通过 softmax 转换为每个 token 的概率。

class Qwen2Model(Qwen2PreTrainedModel):

    def __init__(self, config):

        super().__init__(config)

        self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size)

        self.layers = nn.ModuleList([

            Qwen2DecoderLayer(config) for _ in range(config.num_hidden_layers)

        ])    #这里由config文件决定的有很多很多层

        self.norm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)

每一层结构

class Qwen2DecoderLayer(nn.Module):

    def __init__(self, config):

        ...

        self.self_attn = Qwen2Attention(config)

        self.mlp = Qwen2MLP(config)

        self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)

        self.post_attention_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)

    def forward(self, hidden_states, ...):

        residual = hidden_states

        hidden_states = self.input_layernorm(hidden_states)

        hidden_states, _ = self.self_attn(hidden_states, ...)

        hidden_states = residual + hidden_states

        residual = hidden_states

        hidden_states = self.post_attention_layernorm(hidden_states)

        hidden_states = self.mlp(hidden_states)

        hidden_states = residual + hidden_states

        return hidden_states, ...

self.mlp = Qwen2MLP(config) 这个是什么

标准Transformer FFN

class TransformerFFN(nn.Module):

    def __init__(self, embed_dim, hidden_dim):

        super().__init__()

        self.linear1 = nn.Linear(embed_dim, hidden_dim)

        self.relu = nn.ReLU()

        self.linear2 = nn.Linear(hidden_dim, embed_dim)

    def forward(self, x):

        return self.linear2(self.relu(self.linear1(x)))

http://www.xdnf.cn/news/325783.html

相关文章:

  • QT编程练习20250507
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.1 主流可视化工具对比(Tableau/Matplotlib/Python库)
  • FreeCAD傻瓜教程-涡轮蜗杆的快速绘制FCGear工作台的使用方法
  • 算法专题四:前缀和
  • 【北京迅为】iTOP-4412精英版使用手册-第八章 Android 4.4系统编译
  • neo4j多跳查询,未只获取到收尾两个节点,待继续
  • 智能运维实战|数据库卡慢处置的一次关键事件
  • 尚硅谷-硅谷甄选项目记录
  • Facebook隐私设置详解:如何保护你的个人信息
  • 【漫话机器学习系列】245.权重衰减(Weight Decay)
  • SR触发器为什么能够消抖
  • Vue 项目中长按保存图片功能实现指南
  • AI大模型基础设施:NVIDIA GPU和AMD MI300系列的区别
  • android 记录应用内存
  • Scaffold-DbContext详解
  • 如何减少锁竞争并细化锁粒度以提高 Rust 多线程程序的性能?
  • 2025FIC初赛(手机)
  • JAVA中ArrayList的解析
  • Scala语法
  • 【Axure视频教程】中继器表格——未选、半选和全选
  • 代码随想录算法训练营第五十八天| 图论4—卡码网110. 字符串接龙,105. 有向图的完全联通
  • C# WPF 颜色拾取器
  • MySQL OCP 认证限时免费活动​ 7 月 31 日 前截止!!!
  • 多规格直线运动转换至非线性直线的转换方法
  • 【C++进阶】第1课—继承
  • C#管道通讯及传输信息丢失的原因
  • android中背压问题面试题及高质量回答范例
  • 前端面试测试题目(一)
  • 《Python星球日记》 第49天:特征工程与全流程建模
  • 认识tomcat(了解)