前面我们对DeepSeek-R1-Distill-Qwen-1.5B模型的字段进行了解析。那么它的框架结构、运行流程又是什么?以下是对 DeepSeek-R1-Distill-Qwen-1.5B 模型的框架结构、运行流程及参数的详细解析总结。以对模型的二次开发、微调或部署提供参考。

        有关DeepSeek-R1-Distill-Qwen-1.5B模型的字段解析可以查看我的文章:GGUF格式的DeepSeek-R1-Distill-Qwen-1.5B模型的字段解析-CSDN博客

一、模型框架结构

1. 核心架构

        DeepSeek-R1-Distill-Qwen-1.5B 是一个基于Transformer架构的生成式语言模型,具有以下特点:

(1)架构类型:模型基于Qwen-2(类似LLaMA/Mistral)的改进架构,属于Transformer类型,采用Transformer Decoder-Only结构。

(2)蒸馏优化:该模型通过知识蒸馏技术从更大的基础模型中提取关键信息,从而在保持较高性能的同时显著减少了参数量。

(3)多任务支持:模型支持多种任务,包括文本生成、分类、打分和嵌入等。

(4)支持分组查询注意力(Grouped Query Attention, GQA),优化推理效率。

关于Transformer架构,可以查看我的文章:大模型的底层逻辑及Transformer架构-CSDN博客

2. 模块组成

        DeepSeek-R1-Distill-Qwen-1.5B是一个基于Qwen-2 架构的蒸馏优化模型,专为高效推理和多任务支持设计,包含了嵌入层(Input Embedding)、Transformer层(多头自注意力机制Multi-Head Attention和前馈网络Feed-Forward Network)和输出层(Output)。下表表示的是其主要模块以及组成结构:

模块

子模块

描述

嵌入层

model.embed_tokens

输入Token映射到隐藏空间,维度为 (vocab_size, hidden_size)

Transformer层

model.layers.{n}

共28层 (num_hidden_layers=28),每层包含:

self_attn

分组查询注意力(Q/K/V投影矩阵+多头注意力计算)

mlp

前馈网络FFN(含门控机制:gate_proj/up_proj/down_proj)

input_layernorm

注意力层前的RMSNorm(原ffn_norm映射)

post_attention_layernorm

FFN层前的RMSNorm(原attn_norm映射)

输出层

lm_head

线性投影,将隐藏向量映射回词表空间 (output.weight)

        各模块的详细说明如下:

(1)Transformer 编码器模块:基于Transformer的架构,分为编码器(Encoder)解码器(Decoder)两部分包含多层编码器,每层包含自注意力机制和前馈网络(Feed-Forward Network, FFN)。模型支持的最大序列长度为90,000个token。

(2)注意力机制模块:使用多头自注意力(Multi-Head Self-Attention, MHA)机制,支持高效的并行计算。支持Flash Attention等多种后端优化技术,进一步提升推理效率。

(3)前馈网络模块:每个编码器层包含一个前馈网络,用于非线性变换和特征提取。

(4)分词器模块:配备专用的分词器,支持多种任务(如文本生成、分类、打分等)。支持的最大模型长度为 90,000 tokens。

(5)量化模块:模型支持多种量化方式(如 Q8_0),以优化内存使用和推理速度。

(6)推理引擎模块:使用 vLLM 引擎进行高效推理,支持 GPU 加速。支持最大并发量为 1.02x,适用于大规模部署。

(7)任务支持模块:模型支持多种任务,包括文本生成、分类、打分、嵌入和奖励计算。默认任务为文本生成(generate),但可以通过配置切换到其他任务。

3. 关键设计特性

(1)RoPE旋转位置编码:基础频率rope_theta=10000.0。

(2)动态缩放注意力:通过 scaling = 1 / sqrt(head_dim) 归一化注意力分数。

(3)最大序列长度:模型支持的最大输入长度max_position_embeddings为 90,000个token,如果是DeepSeek-R1-Distill-Qwen-1.5B-Q8_0则是32768。

(4)量化与优化:模型支持多种量化方式,例如 Q8_0,以优化内存使用和平衡精度与推理速度。

(5)内存使用:在部署时,模型占用约3.35 GB的GPU内存,非PyTorch内存占用约0.18 GB,激活峰值内存约1.39 GB。GGUF格式的文件都是量化后的。

二、模型运行流程

1. 输入处理

        其实输入层包含了多个处理步骤:输入文本 → Token化 → [bos_token_id, ..., eos_token_id] → 嵌入层 → 隐藏向量 (shape=[batch, seq_len, hidden_size])

2. Transformer层处理

        python代码如下:

for layer in model.layers:

    # 1. 自注意力

    residual = hidden_states

    hidden_states = input_layernorm(hidden_states)

    attn_output = self_attn(hidden_states)  # 分组查询注意力

    hidden_states = residual + attn_output

    

    # 2. FFN

    residual = hidden_states

    hidden_states = post_attention_layernorm(hidden_states)

    ffn_output = mlp(hidden_states)        # 门控激活: SwiGLU

    hidden_states = residual + ffn_output

3. 输出生成

        python代码如下:

hidden_states = model.norm(hidden_states)  # 最终层归一化

logits = lm_head(hidden_states)           # 输出概率分布 (shape=[batch, seq_len, vocab_size])

三、参数详细解析

        在我的前文中,已经对DeepSeek-R1-Distill-Qwen-1.5B模型的字段进行了部分解读,以下是不同的角度的解读,可以先看一下我的文章:GGUF格式的DeepSeek-R1-Distill-Qwen-1.5B模型的字段解析-CSDN博客

1. 核心参数表

参数

来源/计算方式

作用

vocab_size

151,936

token_embd.weight.shape[0]

词表大小

hidden_size

1,632

token_embd.weight.shape[1]

隐藏层维度

num_hidden_layers

28

最大blk.{n}索引 +1

Transformer层数

num_attention_heads

16

hidden_size // head_dim(head_dim=102)

查询注意力头数

num_key_value_heads

12

k_proj.weight.shape[0] // head_dim_kv=21.3

键值注意力头数(分组查询)

intermediate_size

9,520

ffn_down.weight.shape[1]

FFN中间层维度

rms_norm_eps

1e-6

预设值

LayerNorm的数值稳定性参数

rope_theta

10,000

预设值

RoPE位置编码基频

2. 注意力头维度计算

        查询头:num_attention_heads=16,head_dim=102

        python代码:

q_proj.weight.shape = (1632, 1536) → 1536 = 16 heads * 96 dim (需适配对齐)

        键值头:num_key_value_heads=12,head_dim_kv=21.3(实际需取整适配)

        python代码:

k_proj.weight.shape = (256, 1632) → 256 ≈ 12 heads * 21.3 dim

3. FFN层结构

        门控机制:gate_proj + up_proj → 激活 → down_proj

        python代码:

gate_proj.shape = (1632, 8960) → SwiGLU门控

down_proj.shape = (9520, 1536) → 输出投影

4. 特殊Token ID

Token类型

ID

作用

bos_token_id

151,646

序列开始标志

eos_token_id

151,643

序列结束标志

pad_token_id

151,643

填充标志(与EOS相同)

四、关键调试经验

1.权重形状适配规则:

(1)Q/K/V投影:GGUF中形状为 [out_dim, hidden_size],需转置为 [hidden_size, out_dim]。

(2)FFN层:gate_proj/up_proj 权重需转置,down_proj 需反向转置。

2.层映射修正:

(1)attn_norm → post_attention_layernorm

(2)ffn_norm → input_layernorm

3.量化兼容性:

GGUF的Q8_0量化需在加载时对齐FP16精度,避免数值溢出。

五、典型应用场景

(1)文本生成:通过 max_length=512, temperature=0.7 控制生成多样性。

(2)对话系统:结合 system_prompt 和 user_input 构建多轮对话。

(3)知识问答:利用 repetition_penalty=1.1 抑制重复回答。

        此总结覆盖了模型的核心结构、参数逻辑及调试要点,可为模型二次开发、微调或部署提供完整参考。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐