不要错过系列!!LLM【deepseek、Qwen结构】深度解析

工具介绍

LLM基础结构介绍:https://bbycroft.net/llm
模型内置了nano-gpt、gpt-2、gpt-3,展示gpt这种大模型的基础结构
在这里插入图片描述

工具使用

在这里插入图片描述

结构解读

LLM有embedding、layer Norm、transformer(self Attention、projection、MLP)、softmax、output组成。下面关注以维度来追踪结构变化。

embedding 做这样一件事

将文本转换的token及位置编码组成embedding,此时,input与token一维维度相同。
在这里插入图片描述

layer Norm 层归一化

将input数值标准化,且通过layer Norm后维度不变,与input相同
在这里插入图片描述

self-attention

经典注意力机制公式,此时qkv矩阵二维维度等于lay-norm层
在这里插入图片描述

projection

projection将多头信息合并到一个统一的维度中。将多头中的V合并可计算出等于layer Norm的维度。
在这里插入图片描述

MLP

MLP通过逐层重新组合信息,每层重组的信息经过激活函数放大或抑制后进入下一层数据重组,实现特征提取和知识获取。layer Norm经过mlp激活后维度不变。
在这里插入图片描述

softmax

layer Norm (nm)通过softmax层计算得到一个下一个词的概率分布矩阵,该过程会通过Head weights(kn)将layer Norm降维到表示一个词表维度(k*m)
在这里插入图片描述

语义信息获取实例

  • Qwen2.5-1.5B模型结构:
    • Qwen2ForCausalLM:是模型核心部分,包含Qwen2Model和lm_head。
    • Qwen2Model:是模型主体,包含以下组件:
      • 嵌入层(embed_tokens):将输入的token IDs转换为嵌入向量,向量维度是1536。
      • 自注意力机制层(layers):由28个Qwen2DecoderLayer组成,每个Qwen2DecoderLayer包含:
        • 自注意力(self_attn):Qwen2SdpaAttention包含q_proj、k_proj、v_proj、o_proj、rotary_emb等组件,用于捕捉序列中的关键信息。
        • 前馈网络(mlp):包含三个线性层(gate_proj、up_proj、down_proj)和一个SiLU激活函数,用于非线性变换。
        • 归一化层(input_layernorm、post_attention_layernorm):用于归一化输入和注意力输出,保持梯度稳定。
    • lm_head:是一个线性层,将经过Qwen2Model处理后的隐藏状态转换为词汇表大小的logits,用于下一个token的生成。

语义信息的存储位置

  1. 隐藏状态(Hidden States)
    核心位置:各Transformer层的输出隐藏状态
    底层(Lower Layers):第1-9层,主要编码词性、句法等基础语义
    中层(Middle Layers):第10-19层,处理短语级语义和局部上下文
    高层(Upper Layers):第20-28层,存储篇章级语义和抽象概念

  2. 注意力头(Attention Heads)
    分布特征:共32层 × 24头 = 768个独立头
    局部聚焦头(如层3的头5):捕捉邻近token的依存关系
    全局关联头(如层25的头12):建模长距离语义关联

语义信息的提取方法

  1. 隐藏状态捕获(PyTorch示例)
import torch
from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("Qwen/Qwen2.5-1.5B", output_hidden_states=True)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B")

inputs = tokenizer("语义信息提取示例", return_tensors="pt")
outputs = model(**inputs)

# 获取各层隐藏状态(Tuple[Tensor])
all_hidden_states = outputs.hidden_states  # shape: (num_layers+1, batch, seq_len, hidden_dim)

# 提取第24层语义表示
layer_24_semantic = all_hidden_states[24][0]  # shape: (seq_len, 4096)
2. 注意力头分析
python
复制
# 启用注意力输出
model = AutoModel.from_pretrained("Qwen/Qwen2.5-1.5B", output_attentions=True)
outputs = model(**inputs)

# 获取注意力权重(Tuple[Tensor])
all_attentions = outputs.attentions  # shape: (num_layers, batch, num_heads, seq_len, seq_len)

# 分析第16层第8头
layer16_head8_attention = all_attentions[15][0,7]  # shape: (seq_len, seq_len)
三、语义信息的可视化工具
1. BERTViz
python
复制
from bertviz import head_view

# 生成注意力可视化
head_view(
    attentions=all_attentions,
    tokens=tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
)
  1. TensorBoard投影
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter()
writer.add_embedding(
    layer_24_semantic,
    metadata=tokenizer.tokenize(inputs["input_ids"][0]),
    tag="semantic_layer24"
)

典型应用场景

语义层级 技术指标 应用方向
底层(1-6) 局部语法特征 实体识别、词性标注
中层(7-18) 短语级语义 情感分析、关系抽取
高层(19-32) 全局语义 文本摘要、问答系统

### MindSpeed-LLMDeepSeek_R1_Distill_Qwen模型适配 为了实现MindSpeed-LLMdeepseek_r1_distill_qwen的支持,主要工作集中在权重转换以及特定架构调整上。考虑到MindSpeed-LLM已经具备良好的灵活性和支持多种大型语言模型的能力[^4],对于新引入的deepseek_r1_distill_qwen模型来说,关键在于确保其结构特性被正确识别并映射至目标环境中。 #### 权重转换过程 针对deepseek_r1_distill_qwen这类特殊设计的大规模预训练模型,在将其迁移到MindSpeed- 注册昇腾社区账号,并获取最新的mindspeed-llm镜像文件。 - 创建运行容器实例,配置好Ascend环境变量以便后续操作顺利进行。 2. **源码定制化修改** 由于不同模型可能存在内部机制上的差异,因此可能需要针对性地调整某些模块以更好地匹配目的端的要求。具体而言,可能会涉及到如下两个方面的改动: - 修改`rotary_pos_embedding.py`中的位置编码逻辑,使其更加贴合deepseek_r1_distill_qwen特有的嵌入方式。 - 调整`checkpointing.py`有关检查点保存策略的部分代码,保证整个过程中不会丢失任何重要的中间状态信息。 3. **权值加载与验证** 从modelscope或其他可信渠道下载官方发布的deepseek_r1_distill_qwen预训练权重文件后,按照既定流程实施转换作业。此环节结束后应当进行全面测试,确认所有组件均正常运作无误。 ```python from mindspeed_llm import load_model_weights, verify_conversion # 假设已准备好相应的路径和配置项 load_model_weights('path/to/deepseek_r1_distill_qwen', 'target_format') verify_conversion() ``` 通过上述步骤,理论上可以实现mindsped-llm环境下对deepseek_r1_distill_qwen的有效支持。不过值得注意的是,实际应用场景中还需考虑更多细节因素的影响,比如性能调优等方面的工作也必不可少。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河南-殷志强

希望我的文章能帮助到你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值