​​​​​大模型 如GPT-4、Llama 3、Qwen等并非一个“黑箱”而是一个由多个功能模块和层次结构构成的复杂系统。理解其内部组成与各层之间的调用关系是掌握大模型工作原理、优化应用性能、进行模型定制与调试的关键。我们将从两个维度展开1、内部组成大模型的“解剖学”——它由哪些核心组件构成2、层次调用关系大模型的“运行流程”——这些组件如何协同工作一、大模型的内部组成四大核心组件尽管不同架构如GPT 、PaLM、Mixtral存在差异但现代大语言模型LLM普遍由以下四个核心组件构成┌─────────────────────────────────────────────────────┐ │ 大模型LLM │ ├──────────────────────┬──────────────────────────────┤ │ 1. 输入嵌入层 (Input Embedding) │ │ 2. Transformer 层堆栈 (Transformer Blocks) │ │ └─ 自注意力机制 (Self-Attention) │ │ └─ 前馈神经网络 (Feed-Forward Network, FFN) │ │ 3. 输出层 (Output Layer) │ │ └─ 解码器头 (Decoder Head) │ │ 4. 上下文管理与缓存 (Context Management KV Cache) │ └─────────────────────────────────────────────────────┘1、输入嵌入层Input Embedding Layer功能将输入的文本串行的Token序列转换为并行的高维向量Embedding作为模型的“数学表示”。技术细节1分词Tokenization使用BPEByte Pair Encoding或SentencePiece算法将文本切分为Token。例如Hello, world! → [Hello, ,, world, !]2嵌入查找Embedding Lookup每个Token对应一个预训练的向量如768维、4096维。3位置编码Positional Encoding加入位置信息让模型知道Token的顺序。方法绝对位置编码如BERT、旋转位置编码RoPE用于Llama 3、Qwen。输出一个形状为[batch_size, seq_len, hidden_size]的张量。✅关键作用将离散的符号文字转化为连续的数学空间供神经网络处理。2、Transformer 层堆栈Transformer Blocks Stack这是大模型的核心计算引擎通常由数十层如Llama 3-70B有80层相同的Transformer块堆叠而成。每个Transformer块包含两个核心子模块(1) 自注意力机制Self-Attention Mechanism功能让模型在处理每个Token时能够“关注”序列中的其他相关Token建立长距离依赖。计算流程1生成Q、K、V矩阵Query (Q)当前Token的“查询”向量。Key (K)所有Token的“键”向量。Value (V)所有Token的“值”向量。2计算注意力分数Attention(Q, K, V) softmax(QK^T / √d_k) * V其中d_k是Key向量的维度。3多头注意力Multi-Head Attention将Q、K、V拆分为多个“头”如32头并行计算注意力最后拼接。目的让模型从不同子空间学习不同的语义关系。输出加权后的Value向量表示每个Token的上下文感知表示。(2) 前馈神经网络Feed-Forward NetworkFFN功能对自注意力输出的向量进行非线性变换增强模型的表达能力。结构1两层全连接网络 激活函数如SwiGLU、ReLU。2公式FFN(x) W2 * σ(W1 * x b1) b2特点1在Transformer块中位于自注意力之后。2参数独立于位置对每个Token单独处理。关键作用Transformer块通过“自注意力 FFN”的交替堆叠逐层提取和抽象语义信息。3、输出层Output Layer功能将最后一层Transformer的隐藏状态转换为最终的文本输出。组成1归一化层Layer Normalization对最后一层的输出进行归一化稳定训练过程。2语言模型头Language Model Head一个线性层Linear Layer将隐藏状态映射回词汇表大小vocab_size。输出形状[batch_size, seq_len, vocab_size]3Softmax 归一化将 logits 转换为概率分布。4采样策略Sampling Strategy从概率分布中选择下一个Token。方法贪心采样Greedy、Top-k采样、Top-pNucleus采样、Temperature调整。✅关键作用将模型的“思考结果”转化为人类可读的文本。4、上下文管理与缓存Context Management KV Cache功能管理对话历史避免重复计算提升推理效率。关键技术1KV CacheKey-Value Cache在自回归生成过程中缓存每一层的K和V矩阵。下一个Token生成时只需计算新Token的Q并与缓存的K、V计算注意力无需重新计算整个序列。效果将推理复杂度从 O(n²) 降低到 O(n)支持长上下文如128K tokens。2滑动窗口Sliding Window当上下文超过最大长度时自动丢弃最老的部分。3注意力重计算Recomputation在训练时节省显存推理时不常用。✅关键作用实现高效、低延迟的流式输出和长对话支持。二、大模型的层次调用关系一次推理的完整流程我们以用户输入你好你是谁并生成回复为例展示大模型内部各组件的调用时序与数据流动。阶段1输入处理用户输入: 你好你是谁 ↓ [分词器 Tokenizer] ↓ Token IDs: [151644, 109630, 28757, 109630, 28804, 109630, 28862, 109630, 28804, 13] ↓ [输入嵌入层 Input Embedding] ↓ 嵌入向量: [batch1, seq_len10, hidden_size4096] ← Llama 3-8B的hidden_size阶段2Transformer 层堆栈前向传播该嵌入向量依次通过N 层 Transformer 块如Llama 3-8B有32层For each layer in range(N): ┌──────────────────────────────┐ │ Layer i │ │ │ │ ┌──────────────────────┐ │ │ │ 自注意力 (Self-Attn) │ ←─┼─ 使用上一层输出作为Q,K,V │ └──────────────────────┘ │ │ ↓ │ │ ┌──────────────────────┐ │ │ │ 前馈网络 (FFN) │ │ │ └──────────────────────┘ │ └──────────────────────────────┘每一层都会更新Token的表示使其包含更丰富的语义和上下文信息。KV Cache 更新每层计算出的K、V矩阵被缓存供后续Token生成使用。阶段3输出生成自回归循环模型开始逐个生成输出TokenStep 1: 输入完整Prompt (你好你是谁) ↓ 经过所有Transformer层 ↓ [输出层] → 得到最后一个Token的logits ↓ Softmax 采样 → 生成第一个输出Token如我 ↓ 将我追加到输入序列 Step 2: 新输入: 你好你是谁我 ↓ 只需计算新Token我的Q ↓ 与缓存的K、V计算注意力KV Cache ↓ 经过所有Transformer层仅新Token ↓ [输出层] → 生成下一个Token如是 ↓ 重复此过程直到遇到EOS结束符 这是一个**自回归Autoregressive**过程每次只生成一个Token。阶段4输出返回当生成EOS或达到最大长度时停止生成。最终输出: 我是通义千问阿里巴巴集团旗下的超大规模语言模型。 ↓ [Tokenizer] 解码为文本 ↓ 返回给用户三、可视化大模型内部调用关系图┌────────────────────────────────────────────────────────────────────────────┐ │ 大模型推理流程 │ ├────────────────────────────────────────────────────────────────────────────┤ │ 用户输入: 你好你是谁 │ │ │ │ ┌─────────────┐ ┌─────────────────┐ ┌──────────────────────────┐ │ │ │ Tokenizer │ ──→ │ Input Embedding │ ──→ │ │ │ │ └─────────────┘ └─────────────────┘ │ │ │ │ │ │ │ │ │ Transformer Block 1 │ │ │ │ ┌─────────┐ ┌──────┐ │ │ │ │ │ Self-Attn│→│ FFN │ │ │ │ │ └─────────┘ └──────┘ │ │ │ │ │ │ │ │ ... │ │ │ │ │ │ │ │ Transformer Block N │ │ │ │ ┌─────────┐ ┌──────┐ │ │ │ │ │ Self-Attn│→│ FFN │ │ │ │ │ └─────────┘ └──────┘ │ │ │ │ │ │ │ └──────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────┐ │ │ │ Output Layer │ │ │ │ LayerNorm → LM Head │ │ │ │ Softmax → Sampling │ │ │ └──────────────────────────┘ │ │ ↓ │ │ 生成第一个Token: 我 │ │ ↓ │ │ 将我追加到输入循环生成... │ │ │ │ 最终输出: 我是通义千问... │ └────────────────────────────────────────────────────────────────────────────┘总结大模型的内部是一个精密协作的系统输入嵌入层将文字转化为数学向量。Transformer 堆栈通过自注意力和前馈网络逐层提取语义。输出层将向量转化为文本。KV Cache实现高效自回归生成。调用关系本质是一个循环的自回归过程输入 → 嵌入 → 多层Transformer → 输出 → 采样 → 追加输入 → 循环。理解这一内部结构与调用流程不仅能帮助我们更好地使用大模型也为后续的提示工程优化、RAG设计、微调策略制定提供了坚实的理论基础。转自https://blog.csdn.net/hiwangwenbing/article/details/153705154