主流模型家族_体系
目录GPT LLama Qwenllm中的transformer细节变化RMSNormLayerNormSwiGLU ReLURoPE旋转位置编码MHA / GQA / MQAGPT LLama QwenGPTLlamaQwen调用 GPT 时通常不需要自己考虑GPUCUDA模型权重Tensor ParallelKV Cache推理框架模型量化服务部署适合私有化部署对于公司内部数据不希望全部上传到外部APIFine-tuning,让模型更加适合自己的业务适合中文业务业务系统↓API↓GPT↓返回结果Llama↓下载模型↓自己的 GPU↓自己的推理服务↓自己的业务系统Qwen↓下载模型↓自己的 GPU↓自己的推理服务↓自己的业务系统从使用方式理解我要怎么使用大模型我只想调用 API不想自己部署GPU优先考虑GPT,或其他商业API模型需要本地部署考虑llama/qwen;考虑中文应用考虑qwen;大语言模型│┌─────────┐↓ ↓ ↓GPT Llama QwenOpenAI Meta 阿里│ │ │API为主 开放生态 开放生态↓ ↓自部署 自部署llm中的transformer细节变化RMSNormLayerNormLayerNorm (LN) 计算公式:RMSNorm 计算公式:LayerNorm转变为RmsNorm的原因LayerNorm需要计算均值和方差性能较满RMSNorm只需要计算均方根RMSNorm 对 Attention 更“温和”LayerNorm减去均值可能会改变向量方向RMSNorm只需要乘以一个证数不改变方向而attention中QK计算和向量方向相关Scale可能比center中心化更重要保留Scale去除center;SwiGLU ReLUReLU的FFN:x——Linear1——ReLU——Linear2——输出SwiGLU:门控特征通过可以控制另一条信息保留多少┌── Linear1 ──→ SiLU ──┐x ─────┤ × ──→ Linear3 → 输出└── Linear2 ─────────┘linear1使用门控制信息输出linear2负责产生被控制信息linear3负责输出目标维度即为ReLU(x)max(0,x)SiLU(x) x · sigmoid(x)llm中使用SwiGLU的原因ReLU 是“一刀切”负数全部砍掉)SwiGLU 是“软控制”(不是简单判断特征正负判断特征通过多少ReLU 只有一个分支SwiGLU 有“信息 门”RoPE旋转位置编码直接加位置编码和使用旋转位置编码的区别Attention 本来就通过 Q 和 K 的点积判断两个 token 的关系而点积非常依赖向量方向。RoPE 利用这一点把 token 的位置转换成 Q/K 的旋转角度。于是两个 token 做点积时它们之间的相对旋转角度就包含了相对位置信息直接加位置编码attention点积后内容和位置混在一起只旋转Q、K因为attention关注token是否相似的是Q和K,V关注返回信息内容加入RoPE后在 Attention 计算 QK 相似度之前先把 Q、K 按照各自 token 的位置旋转一下。这样 QK 的内积就不仅包含“内容相似度”还自然包含了“两个 token 相隔多远”的信息MHA / GQA / MQAMHAMulti-Head AttentionX├── Q1 ── K1,V1 → Attention1├── Q2 ── K2,V2 → Attention2├── Q3 ── K3,V3 → Attention3└── Q4 ── K4,V4 → Attention4GQAGrouped-Query AttentionX├── Q1 ─┐├── Q2 ─┘── K1,V1 → Attention│├── Q3 ─┐├── Q4 ─┘── K2,V2 → AttentionMQAMulti-Query AttentionX├── Q1 ─┐├── Q2 ─┤├── Q3 ─┤└── Q4 ─┘── K,V → 各自计算Attention它们不是三种完全不同的 Attention 算法本质上都是softmax(QKᵀ)V最大的区别就是为了减少 KV Cache究竟让多少个 Q 头共享一组 K/V。