<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Transformer on 青秋博客</title>
        <link>/zh-cn/tags/transformer/</link>
        <description>Recent content in Transformer on 青秋博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>青秋博客</copyright>
        <lastBuildDate>Sun, 13 Sep 2026 12:00:00 +0000</lastBuildDate><atom:link href="/zh-cn/tags/transformer/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>AI_Infra_03</title>
        <link>/zh-cn/post/2026/09/ai_infra_03/</link>
        <pubDate>Sun, 13 Sep 2026 12:00:00 +0000</pubDate>
        
        <guid>/zh-cn/post/2026/09/ai_infra_03/</guid>
        <description>&lt;p&gt;一、基础架构三大Transformer&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Encoder-only（双向注意力）&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;作用：理解、提取特征、全局双向信息&lt;/li&gt;
&lt;li&gt;代表：BERT、ViT（图像编码器）&lt;/li&gt;
&lt;li&gt;特点：不能自回归生成，只做编码理解&lt;/li&gt;
&lt;li&gt;理解图片但不能生成图片，核心是全程无掩码双向注意力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么双向注意力可以理解图片，因为&lt;strong&gt;图片是完整静态空间信息&lt;/strong&gt;，需要每一个图像Patch能实时看见整张图所有其他Patch，双向互通建模全局空间关系（物体位置、关联、轮廓、语义）；&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Decoder-only（单向掩码注意力）&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;作用：自回归生成文本（核心大模型主干）&lt;/li&gt;
&lt;li&gt;代表：GPT、Claude、Llama、Qwen文本模型&lt;/li&gt;
&lt;li&gt;Decoder-only 不是只能输入文本，它只是「生成方式是单向自回归」，输入可以是文本 + 图像伪token。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Encoder-Decoder&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;编码理解 + 解码生成&lt;/li&gt;
&lt;li&gt;代表：T5、Whisper（语音）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;二、图像Patch、ViT与文本Transformer关系&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;图像Patch是什么？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把一张图片切成无数个固定大小的小方块（patch），每个小方块拉直成向量 → 图像Token。&lt;/p&gt;
&lt;p&gt;等价关系：文本拆单词 = 图像切Patch&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;ViT 和 文本Transformer 一样吗？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;底层数学结构完全一样（多头注意力+MLP）。&lt;/p&gt;
&lt;p&gt;唯一区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ViT：Encoder双向，用于图像理解&lt;/li&gt;
&lt;li&gt;LLM文本：Decoder单向，用于文本生成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三、多模态两大架构&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拼接式多模态（工业主流：LLaVA、Qwen-VL、GPT4V）
结构：独立视觉分支 + 独立文本分支 + 共享Decoder主干&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;视觉分支：ViT Encoder 提取图像特征&lt;/li&gt;
&lt;li&gt;适配器/Projector（关键）：把图像向量 映射对齐到文本Embedding空间，变成「图像伪Token」&lt;/li&gt;
&lt;li&gt;文本分支：文本Embedding生成文本Token&lt;/li&gt;
&lt;li&gt;主干：图文Token拼接，送入同一个 Decoder-only LLM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重点答疑：是否路由选择？
❌ 不是路由！不是二选一！
✅ 有图就走视觉分支，无图只走文本分支，最后合并序列进同一个主干。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;原生统一多模态（Gemini、GPT4o）&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;无任何独立分支、无ViT、无单独文本Encoder&lt;/li&gt;
&lt;li&gt;图片Patch、文本Token、音频Token → 统一格式Token → 送入同一套共享Transformer&lt;/li&gt;
&lt;li&gt;靠动态注意力掩码切换双向理解 / 单向生成。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;四、图像生成、扩散模型与主干模型关系&lt;/p&gt;
&lt;p&gt;多模态LLM（无论拼接/统一）能干啥？
✅ 看图、理解图、OCR、图文推理、输出文字
❌ 不能直接生成图片&lt;/p&gt;
&lt;p&gt;要生成图片，有两个方案：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;扩散模型（DALL·E/SD/Flux）定位&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;100%独立外挂模型，和LLM主干完全分离、无权重共享
完整链路：
用户指令 → 多模态主干（思考、优化绘图Prompt） → 扩散模型（独立） → 输出图片&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;自回归图像Token生成（Parti/MagViT）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;图片编码成离散图像Token，Transformer直接预测图像Token。
缺点：画质差、分辨率低、工业不用。&lt;/p&gt;
&lt;p&gt;五、文本/图像/视频/语音 模态核心区别&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本：一维语义Token序列，纯Decoder建模&lt;/li&gt;
&lt;li&gt;图像：2D空间，切Patch空间Token，建模空间关系&lt;/li&gt;
&lt;li&gt;语音：1D时序波形 → 转频谱 → 时间方向Audio Token&lt;/li&gt;
&lt;li&gt;视频：多帧图像 + 新增时间维度注意力，同时建模空间+运动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;六、框架/概念极简汇总&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NLP：AI分支，处理人类自然语言&lt;/li&gt;
&lt;li&gt;RL：强化学习，试错最大化奖励；LLM用于RLHF/DPO对齐&lt;/li&gt;
&lt;li&gt;SOTA：当前任务最优结果，只看指标，不看工程落地&lt;/li&gt;
&lt;li&gt;Mamba/RWKV：Transformer替代线性架构，长序列更快，推理省显存&lt;/li&gt;
&lt;li&gt;Megatron：英伟达超大模型预训练并行框架（底座训练）&lt;/li&gt;
&lt;li&gt;DeepSpeed：微软ZeRO显存优化，微调标配&lt;/li&gt;
&lt;li&gt;Swift：阿里一站式微调/对齐/部署上层框架，封装DeepSpeed/Megatron&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI_Infra_02</title>
        <link>/zh-cn/post/2026/09/ai_infra_02/</link>
        <pubDate>Sat, 12 Sep 2026 12:00:00 +0000</pubDate>
        
        <guid>/zh-cn/post/2026/09/ai_infra_02/</guid>
        <description>&lt;h2 id=&#34;原始-transformerencoder-decoder-架构&#34;&gt;&lt;a href=&#34;#%e5%8e%9f%e5%a7%8b-transformerencoder-decoder-%e6%9e%b6%e6%9e%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;原始 Transformer：Encoder-Decoder 架构
&lt;/h2&gt;&lt;p&gt;2017 年 “Attention Is All You Need” 论文提出的原始 Transformer 由两大部分组成。&lt;/p&gt;
&lt;p&gt;Encoder：读取输入序列，生成上下文表示。每层包含一个 Self-Attention 和一个 FFN（前馈神经网络），所有 token 可以互相关注（双向注意力）&lt;/p&gt;
&lt;p&gt;Decoder：基于 Encoder 的输出，自回归地生成目标序列。每层包含一个带因果掩码的 Self-Attention（只能看到已生成的 token）、一个 Cross-Attention（关注 Encoder 输出）和一个 FFN&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://caomaolufei.github.io/AIInfraGuide/images/Transformer.png&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 Self-Attention 中，序列里的每个 token 都同时扮演这QKV：它既是提问者（生成 Q），也是被查询的索引（生成 K），还是信息的提供者（生成 V）。通过 Q 和 K 的匹配来计算”注意力权重”，再用这些权重对 V 做加权求和，就完成了信息的聚合。复杂度是O(n^2)&lt;/p&gt;
&lt;p&gt;的显存瓶颈直接催生了 FlashAttention，复杂度变为O(n)。这正是”Memory-aware”优化的核心思想。&lt;/p&gt;
&lt;h2 id=&#34;三种注意力&#34;&gt;&lt;a href=&#34;#%e4%b8%89%e7%a7%8d%e6%b3%a8%e6%84%8f%e5%8a%9b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;三种注意力
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Encoder Self-Attention：Encoder 层里，QKV 都来自 encoder 输入，token 和 token 互相看。&lt;/li&gt;
&lt;li&gt;Decoder Masked Self-Attention（掩码自注意力）：Decoder 第一层，QKV 都来自 decoder 当前已经生成的序列，&lt;strong&gt;加 mask，预测第 i 个 token 的时候，看不到未来还没生成的 token&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;Cross-Attention（交叉注意力）：Decoder 第二层，Decoder 生成每个词的时候，去 “看一眼 Encoder 里的源句子信息”。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Q：来自 Decoder 上一层输出（当前生成的 token）&lt;/li&gt;
&lt;li&gt;K、V：来自 Encoder 的最终输出（上下文 / 源序列）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;KV Cache 就是为了加速自回归：前面已经算过的 token 的 K、V 缓存起来，不用每次从头重新计算，不然生成会非常慢。&lt;/p&gt;
&lt;p&gt;标准 Transformer Decoder 一层顺序：&lt;/p&gt;
&lt;p&gt;输入 → Masked Self-Attention → Add+Norm → Cross-Attention → Add+Norm → FFN → Add+Norm → 输出&lt;/p&gt;
&lt;h2 id=&#34;当前大模型的主流decoder-only-架构&#34;&gt;&lt;a href=&#34;#%e5%bd%93%e5%89%8d%e5%a4%a7%e6%a8%a1%e5%9e%8b%e7%9a%84%e4%b8%bb%e6%b5%81decoder-only-%e6%9e%b6%e6%9e%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;当前大模型的主流：Decoder-only 架构
&lt;/h2&gt;&lt;p&gt;当前几乎所有主流大语言模型——GPT、LLaMA、Mistral、Qwen、DeepSeek——都采用 Decoder-only 架构，砍掉了 Encoder 和 Cross-Attention，只保留带因果掩码的 Masked Self-Attention。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/zh-cn/post/2026/09/ai_infra_02/image.png&#34;
	width=&#34;832&#34;
	height=&#34;414&#34;
	srcset=&#34;/zh-cn/post/2026/09/ai_infra_02/image_hu_30e43b45a5e48d50.png 480w, /zh-cn/post/2026/09/ai_infra_02/image_hu_55027847ad2698f6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;alt text&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;200&#34;
		data-flex-basis=&#34;482px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;整个模型的核心就是中间那 N 层 Decoder Block 的反复堆叠。每个 Block 的结构完全相同，包含两个子模块：&lt;/p&gt;
&lt;p&gt;Masked Self-Attention：让每个 token 从前面的 token 中聚合信息
FFN：对每个 token 的信息做独立的非线性变换&lt;/p&gt;
&lt;h2 id=&#34;pre-norm-vs-post-norm&#34;&gt;&lt;a href=&#34;#pre-norm-vs-post-norm&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Pre-Norm vs Post-Norm
&lt;/h2&gt;&lt;p&gt;Norm = LayerNorm；Add = 残差连接 residual add
两者的&lt;strong&gt;本质区别：LayerNorm 放在残差分支的里面还是外面&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Post-Norm 顺序：子层计算 → Add 残差 → LayerNorm&lt;/p&gt;
&lt;p&gt;残差输出经过 Norm 才传给下一层，深层网络容易梯度爆炸，对学习率、初始化很敏感；残差通路没有归一化，随着层数堆叠，数值会累积放大&lt;/p&gt;
&lt;p&gt;Pre-Norm 顺序：LayerNorm → SubLayer (MHA/FFN) → Add 残差&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Norm 在&lt;strong&gt;子层输入前面&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;残差直连支路不经过任何 Norm&lt;/strong&gt;，直接加到子层输出&lt;/li&gt;
&lt;li&gt;梯度更稳定，可以堆很深（大模型都用这个）&lt;/li&gt;
&lt;li&gt;训练更稳，调参门槛更低&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;/zh-cn/post/2026/09/ai_infra_02/image-1.png&#34;
	width=&#34;1812&#34;
	height=&#34;711&#34;
	srcset=&#34;/zh-cn/post/2026/09/ai_infra_02/image-1_hu_9bccc805f1e31261.png 480w, /zh-cn/post/2026/09/ai_infra_02/image-1_hu_d1eaf7ca3cbeeefb.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;alt text&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;254&#34;
		data-flex-basis=&#34;611px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;计算过程从输入到输出的完整流程&#34;&gt;&lt;a href=&#34;#%e8%ae%a1%e7%ae%97%e8%bf%87%e7%a8%8b%e4%bb%8e%e8%be%93%e5%85%a5%e5%88%b0%e8%be%93%e5%87%ba%e7%9a%84%e5%ae%8c%e6%95%b4%e6%b5%81%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;计算过程：从输入到输出的完整流程
&lt;/h2&gt;&lt;p&gt;第一步：线性投影生成 Q、K、V
第二步：计算注意力分数
第三步：缩放（Scale）
第四步：Softmax 归一化
第五步：加权求和
第六步：输出投影&lt;/p&gt;
&lt;h2 id=&#34;ffn&#34;&gt;&lt;a href=&#34;#ffn&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;FFN
&lt;/h2&gt;&lt;p&gt;Attention 负责”信息交互”——让 token 之间互相传递信息。但仅靠信息交互还不够，模型还需要对每个 token 的信息做”深度加工”。这就是前馈网络（Feed-Forward Network，FFN）的工作。&lt;/p&gt;
&lt;p&gt;打个比方：Attention 像一场圆桌会议，大家互相交换意见；FFN 则是会后每个人回到自己工位上，独立消化吸收这些信息并形成自己的判断。FFN 对每个 token 独立地做非线性变换，不涉及 token 之间的交互。&lt;/p&gt;
&lt;h2 id=&#34;位置编码&#34;&gt;&lt;a href=&#34;#%e4%bd%8d%e7%bd%ae%e7%bc%96%e7%a0%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;位置编码
&lt;/h2&gt;&lt;p&gt;语言显然是有顺序的！“猫追狗”和”狗追猫”意思完全不同。所以我们必须想办法把位置信息注入到 Transformer 中。&lt;/p&gt;
&lt;h3 id=&#34;sinusoidal-位置编码原始论文方案&#34;&gt;&lt;a href=&#34;#sinusoidal-%e4%bd%8d%e7%bd%ae%e7%bc%96%e7%a0%81%e5%8e%9f%e5%a7%8b%e8%ae%ba%e6%96%87%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Sinusoidal 位置编码：原始论文方案
&lt;/h3&gt;&lt;p&gt;“Attention Is All You Need” 论文提出了一种优雅的方案：用不同频率的正弦/余弦函数为每个位置生成一个独特的编码向量，直接加到 token 的 embedding 上。&lt;/p&gt;
&lt;p&gt;这就像用”年-月-日-时-分-秒”来编码时间——“年”变化最慢但能区分大时间跨度，“秒”变化最快但只能区分小时间跨度。所有维度组合起来，每个位置就有了唯一的”时间戳”。&lt;/p&gt;
&lt;p&gt;局限：位置信息是”加”在 embedding 上的，在深层网络中可能被逐渐稀释，难以有效外推到训练时未见过的长度&lt;/p&gt;
&lt;h3 id=&#34;rope旋转位置编码当前大模型的主流选择&#34;&gt;&lt;a href=&#34;#rope%e6%97%8b%e8%bd%ac%e4%bd%8d%e7%bd%ae%e7%bc%96%e7%a0%81%e5%bd%93%e5%89%8d%e5%a4%a7%e6%a8%a1%e5%9e%8b%e7%9a%84%e4%b8%bb%e6%b5%81%e9%80%89%e6%8b%a9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;RoPE（旋转位置编码）：当前大模型的主流选择
&lt;/h3&gt;&lt;p&gt;目前几乎所有主流大模型（LLaMA、Mistral、Qwen、DeepSeek 等）采用的位置编码方案。核心思想：不在 embedding 层注入位置信息，而是在计算 Attention 时，通过旋转 Q 和 K 向量来编码位置。&lt;/p&gt;
&lt;h2 id=&#34;layernorm-与残差连接&#34;&gt;&lt;a href=&#34;#layernorm-%e4%b8%8e%e6%ae%8b%e5%b7%ae%e8%bf%9e%e6%8e%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;LayerNorm 与残差连接
&lt;/h2&gt;&lt;p&gt;output=x+SubLayer(x)，其中 SubLayer 可以是 Attention 层或 FFN 层。
在原始信息基础上，只学习增量&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
