<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fuleigang的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/fuleigang</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; fuleigang]]></copyright><item><title><![CDATA[别再让 AI 只会「聊天」了腾讯 WorkBuddy 注册指南（附邀请]]></title><link>https://blog.csdn.net/fuleigang/article/details/165310482</link><guid>https://blog.csdn.net/fuleigang/article/details/165310482</guid><author>fuleigang</author><pubDate>Mon, 14 Sep 2026 14:01:22 +0800</pubDate><description><![CDATA[如果你只想记住一句话，那就是：WorkBuddy 不是又一个聊天框，而是一个会自己干活的同事。AI 工具的差距，早就不是「谁的模型更强」，而是「谁真的能把活干完」。注册完如果跑出了什么有意思的成果，欢迎回来留言告诉我，我很好奇你会用它干的第一件事是什么。如果这篇对你有帮助，，就是对我最大的支持。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段14：Transformer 架构总览与自注意力直觉，KV Cache：Decoder 自回归生成如何复用历史计算]]></title><link>https://blog.csdn.net/fuleigang/article/details/165279385</link><guid>https://blog.csdn.net/fuleigang/article/details/165279385</guid><author>fuleigang</author><pubDate>Mon, 14 Sep 2026 08:43:42 +0800</pubDate><description><![CDATA[如果不缓存，每生成一个新 token，都要把前面所有位置重新算一遍 K/V，第 t 步的计算量是 O(t)，总生成 n 个 token 就是 O(n²)。工程上，一个高效推理引擎 = Flash Attention（Prefill）+ PagedAttention/KV Cache（Decode）+ 量化，三者缺一不可。这样每步计算量从 O(t) 降到 O(1)（相对历史），总复杂度从 O(n²) 降到 O(n)。调流式 API（SSE/流式返回）时，模型服务端已经帮你做了 KV Cache，你无感。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段13：Transformer 架构总览与自注意力直觉，用 Java 手写一个极简 Transformer 前向推理（玩具实现）]]></title><link>https://blog.csdn.net/fuleigang/article/details/165185322</link><guid>https://blog.csdn.net/fuleigang/article/details/165185322</guid><author>fuleigang</author><pubDate>Sun, 13 Sep 2026 08:47:37 +0800</pubDate><description><![CDATA[为演示清晰，把 d_model 设到极小（比如 8），heads=2，dk=4。跑完打印几个关键量：输出张量形状、每层最大分数、softmax 熵、输出均值方差。如果形状对、数值不 NaN、均值在合理范围，说明前向链路通了。这步最大的收获是「信心」——以后看任何模型的 config，你脑子里的张量会自己流动起来。注意：这是「玩具前向推理」，只为理解机制，不含训练、不含反向传播。，能逼你搞清楚每个张量的形状和依赖关系，比看十篇博客都管用。玩具版的价值不在性能，在于「每一步张量形状你都清清楚楚」。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段12：Transformer 架构总览与自注意力直觉，从 Attention 到 Transformer Block：完整前向传播串讲]]></title><link>https://blog.csdn.net/fuleigang/article/details/165078859</link><guid>https://blog.csdn.net/fuleigang/article/details/165078859</guid><author>fuleigang</author><pubDate>Sat, 12 Sep 2026 08:39:22 +0800</pubDate><description><![CDATA[原始 Transformer（Base）用 N=6，BERT-Base 用 12，BERT-Large 用 24，GPT-3 用到 96 层。层数越多，模型能捕捉的抽象层级越丰富——底层学词法、中层学句法、高层学语义和常识。注意力输出加回原始 x（残差），再过 LN，得到「稳定且含上下文」的中间表示。对 x 做 Q/K/V 投影（三个线性层），缩放点积 softmax 算注意力，加权求和得到上下文向量，再过。这类「逐层体检」能快速定位是模型导出错了，还是你的输入预处理错了。（见图 figure_12_4）]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段11：Transformer 架构总览与自注意力直觉，Pre-LN vs Post-LN：归一化位置如何影响训练]]></title><link>https://blog.csdn.net/fuleigang/article/details/164959678</link><guid>https://blog.csdn.net/fuleigang/article/details/164959678</guid><author>fuleigang</author><pubDate>Fri, 11 Sep 2026 09:43:33 +0800</pubDate><description><![CDATA[后果：深层梯度容易被 LN 的缩放「压扁」或「放大」，训练初期极不稳定。好处很实在：可以用更大的学习率、更短的 warmup，训练更稳更快收敛。这也是为什么 GPT-3、Llama 等现代模型纷纷转向 Pre-LN（或其变体 RMSNorm）。对落地来说，Pre-LN 的「稳」远大于那点理论劣势。理论上 Post-LN 有更好的梯度均衡，所以研究界对两者优劣一直有讨论。Pre-LN 先把 x 归一化再进子层，子层输出再和「原始 x」相加。，意味着 LN 的输入是「上一层输出 + 子层输出」，其方差会。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段10：Transformer 架构总览与自注意力直觉，Layer Normalization 与残差连接：训练稳定性的双保险]]></title><link>https://blog.csdn.net/fuleigang/article/details/164807192</link><guid>https://blog.csdn.net/fuleigang/article/details/164807192</guid><author>fuleigang</author><pubDate>Thu, 10 Sep 2026 09:43:56 +0800</pubDate><description><![CDATA[今天的大模型（GPT-3、Llama、BERT 后续变体）基本都用 Pre-LN 或其改进（如 RMSNorm）。它和 BatchNorm 不同——BN 跨 batch 维度，LN 跨特征维度，因此。这让深层网络的梯度至少「有一条近路」，有效缓解梯度消失。残差负责「梯度高速公路」，LN 负责「信号幅度稳定」。LN 的作用是「把每一层的输出尺度拉回可控范围」，防止激活值越叠越大或越叠越小，给后续层一个稳定的输入分布。（具体放 LN 前后有 Pre/Post 之分，下节讲）。（见图 figure_10_3）]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段9：Transformer 架构总览与自注意力直觉，FFN 与激活函数：Transformer 的非线性来自哪里]]></title><link>https://blog.csdn.net/fuleigang/article/details/164716896</link><guid>https://blog.csdn.net/fuleigang/article/details/164716896</guid><author>fuleigang</author><pubDate>Wed, 09 Sep 2026 09:42:23 +0800</pubDate><description><![CDATA[（GPT-2 起广泛使用）用平滑的 sigmoid 近似门控，曲线比 ReLU 更柔，训练更稳，在 BERT/GPT 系列上表现更好。升维把 token 特征投影到更丰富的基上，在高维里做非线性变换（不同特征组合出新模式），再降维聚合回原空间。理解「FFN 占 2/3 参数且是非线性来源」，你就知道模型「智能」一大半藏在这两个升维降维的小网络里。如果 Transformer 只有注意力，那它再深也只是一个线性变换的堆叠，叠加起来还是线性，根本拟合不了语言里那些复杂的非线性决策边界。激活函数负责引入非线性。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段8：Transformer 架构总览与自注意力直觉，注意力复杂度 O(n²) 与 Flash Attention 优化思路]]></title><link>https://blog.csdn.net/fuleigang/article/details/164571649</link><guid>https://blog.csdn.net/fuleigang/article/details/164571649</guid><author>fuleigang</author><pubDate>Tue, 08 Sep 2026 09:36:52 +0800</pubDate><description><![CDATA[关键是用了**在线 softmax（online softmax）**技巧：边算边维护「运行最大值和求和」，不需要先算完整 n×n 矩阵再 softmax，而是分块流式累积。这也是为什么早期大模型上下文窗口卡在 2K/4K，不是不想长，是 O(n²) 扛不住。它把 Q/K/V 切成小块（tile），每块只放进 GPU 片上极快的 SRAM，在片上完成「局部 softmax + 加权求和」，再累加出最终结果。（只存输出，不存中间大矩阵），同时提速数倍。，一个 n×n 的注意力分数矩阵（n = 序列长度）。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段7：Transformer 架构总览与自注意力直觉，Causal Mask：Decoder 如何做到看不见未来]]></title><link>https://blog.csdn.net/fuleigang/article/details/164450819</link><guid>https://blog.csdn.net/fuleigang/article/details/164450819</guid><author>fuleigang</author><pubDate>Mon, 07 Sep 2026 09:36:02 +0800</pubDate><description><![CDATA[如果 Decoder 在算第 t 个位置时「偷看」了第 t+1、t+2 个词，训练和推理就出现了不一致——训练时它见过答案，推理时却没有，模型会学到错误的条件概率。如果去掉 Mask，Decoder 在训练时就直接看到了未来答案（标签泄漏），损失函数会「作弊」地降到很低，但你一推理就原形毕露——生成出来的文本语无伦次或复读。比如做填空题，你若把「标准答案」写进上下文，等于人为破坏了 Mask 该有的因果约束，模型会直接抄你给的答案，输出失去泛化意义。，这些位置权重变成 0，相当于「完全看不到」。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段6：Transformer 架构总览与自注意力直觉，Self-Attention vs Cross-Attention：信息怎么流动]]></title><link>https://blog.csdn.net/fuleigang/article/details/164422990</link><guid>https://blog.csdn.net/fuleigang/article/details/164422990</guid><author>fuleigang</author><pubDate>Sun, 06 Sep 2026 09:40:23 +0800</pubDate><description><![CDATA[Self-Attention 与 Cross-Attention 共用同一套 Q/K/V 计算，区别只在「Q/K/V 来自哪里」。记住这张对照表，看任何 seq2seq 模型都不慌：内部依赖用 Self，内外对齐用 Cross。下一节我们接着看 Decoder 用来「防作弊」的另一个关键机制——因果掩码。// 概念：Cross-Attention = 用 Decoder 的 Q 查 Encoder 的 K/V类型Q 来源K/V 来源作用出现位置输入自身输入自身建立内部依赖Decoder。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段5：Transformer 架构总览与自注意力直觉，Multi-Head Attention 并行计算：用 Java 模拟多头拆分与拼接]]></title><link>https://blog.csdn.net/fuleigang/article/details/164395427</link><guid>https://blog.csdn.net/fuleigang/article/details/164395427</guid><author>fuleigang</author><pubDate>Sat, 05 Sep 2026 09:36:08 +0800</pubDate><description><![CDATA[—每个头只读同一份输入 X，各自算各自的，天然可并行。这个骨架虽不含训练，但把「拆分→各自算→拼接→融合」的数据流讲透了，看懂它你就看懂了多头 80% 的本质。同一 batch、同一序列里，h 个头共享输入 X，但权重完全不同，所以每个头自发学到不同的关注偏好。工程上这就是「免费的多视角」。有的头盯着相邻词（抓局部语法，像「的」前面是修饰语），有的头跨越远距离抓指代（「它」指向段落开头的实体），有的头对齐主谓宾结构。存各头的权重，循环 h 次调用缩放点积注意力，再把各头输出按最后一维 concat，过。]]></description><category></category></item><item><title><![CDATA[技术实践复盘从告警驱动到预案驱动：一个跨境电商平台的稳定性治理实践]]></title><link>https://blog.csdn.net/fuleigang/article/details/164373212</link><guid>https://blog.csdn.net/fuleigang/article/details/164373212</guid><author>fuleigang</author><pubDate>Fri, 04 Sep 2026 17:36:53 +0800</pubDate><description><![CDATA[目录写在前面...5一、扩容这件事：先学会不添乱...61.1第一次大促，我们输给了自己...61.2全线告急：当六个节点同时告警...81.3三十六台机器撑住了流量，但转化率只有百分之一点几...9二、缓存这一层，我们改了四轮...112.1连接池太小：高并发下的数学必然...112.2一个"看起来无害"的后台遍历...122.3会话缓存混用：最意想不到的那个...142.4负载不高却超时：批量操作与连接池的叠加效应...16三、热 key。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段4：Transformer 架构总览与自注意力直觉，缩放点积注意力公式拆解：√dk 缩放因子的数学直觉]]></title><link>https://blog.csdn.net/fuleigang/article/details/164362041</link><guid>https://blog.csdn.net/fuleigang/article/details/164362041</guid><author>fuleigang</author><pubDate>Fri, 04 Sep 2026 10:23:03 +0800</pubDate><description><![CDATA[一个常见误解是「反正后面有 LayerNorm 兜底」，其实 LayerNorm 管不了 Softmax 的饱和——分数已经 one-hot 了，LayerNorm 再怎么归一也救不回丢失的梯度。举个直观例子：d_k=64 时 √dk=8，原始分数 ±8 除以 8 变成 ±1，Softmax 还能给出有区分度的平滑分布；，d_k=512 时分数能到 ±22，Softmax 直接饱和成 one-hot，模型只会死盯一个 token，其余信息全丢。的方差就是 d_k（每个乘积方差 1，加 d_k 个）。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段3：Transformer 架构总览与自注意力直觉，位置编码 Position Encoding：为什么 Transformer 必须知道词序]]></title><link>https://blog.csdn.net/fuleigang/article/details/164295245</link><guid>https://blog.csdn.net/fuleigang/article/details/164295245</guid><author>fuleigang</author><pubDate>Fri, 04 Sep 2026 10:10:21 +0800</pubDate><description><![CDATA[结果就是：两个词之间的注意力分数，只和它们的「相对位置」有关，和「绝对位置」无关——这正好契合语言里「相对距离比绝对位置更重要」的直觉。如果你把「我爱你」和「你爱我」两个句子的词顺序打乱喂进去，自注意力的输出（在没加位置信息前）是一模一样的。但语言是有顺序的，顺序一变意思天差地别。同一个位置在不同维度上用波长不同的 sin/cos（从很长到很短），这样低维捕捉「邻近相对位置」、高维捕捉「远距离相对位置」。序列越长，位置信息越容易被「稀释」：靠后的位置编码和靠前的可能差异越来越小，模型分不清远处的顺序。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段2：Transformer 架构总览与自注意力直觉，Encoder 与 Decoder 结构对比：BERT 用 Encoder、GPT 用 Decoder 的工程启示]]></title><link>https://blog.csdn.net/fuleigang/article/details/164360476</link><guid>https://blog.csdn.net/fuleigang/article/details/164360476</guid><author>fuleigang</author><pubDate>Fri, 04 Sep 2026 09:49:17 +0800</pubDate><description><![CDATA[当任务的输入序列和输出序列都长、且不一样时（比如中译英、长文摘要），混合结构最顺手：输入侧用双向 Encoder 把源语言编码成上下文向量，输出侧用因果 Decoder 一个词一个词地自回归生成目标语言。关键在 Decoder 里那层——它的 Query 来自 Decoder 自己，Key/Value 来自 Encoder 的输出，相当于 Decoder 每生成一个词都去「查」一遍源端信息做对齐。T5、BART 都是这类代表，翻译和摘要质量比纯 Decoder 更稳定。（见图 figure_02_4）]]></description><category></category></item><item><title><![CDATA[Java 程序员第 48 阶段1：Transformer 架构总览与自注意力直觉，从 RNN 痛点理解注意力机制]]></title><link>https://blog.csdn.net/fuleigang/article/details/164331723</link><guid>https://blog.csdn.net/fuleigang/article/details/164331723</guid><author>fuleigang</author><pubDate>Thu, 03 Sep 2026 13:58:27 +0800</pubDate><description><![CDATA[做 Java 的同学第一次接触大模型，往往会被「为什么会突然冒出 Transformer 这个东西」搞懵。其实它是对 RNN/LSTM 两大致命缺陷的正面回答。RNN 的核心写法是「按时间步串行」：第 t 个隐藏状态依赖第 t-1 个，必须一句一句往前算。这带来三个问题：Transformer 的做法完全不同：它用**自注意力（Self-Attention）**让序列里每个位置「一次性直接看到所有位置」，任意两词之间的路径长度变成 O(1)，且整条序列可以并行计算。这正是大模型能堆到千亿参数、吃下超长上下文]]></description><category></category></item><item><title><![CDATA[Java 程序员第 47 阶段20：多租户知识库隔离设计，适配 SaaS 系统大模型架构，可观测性与租户级 SLA 监控体系]]></title><link>https://blog.csdn.net/fuleigang/article/details/164326559</link><guid>https://blog.csdn.net/fuleigang/article/details/164326559</guid><author>fuleigang</author><pubDate>Thu, 03 Sep 2026 10:27:00 +0800</pubDate><description><![CDATA[多租户知识库的 SLA（服务等级协议）如果只看"全局平均值"，会掩盖大量问题：全局 P99 是 800ms 看似健康，但某 Enterprise 独享租户因为向量集合热点，实际 P99 已经 3000ms——这正是付了高价的客户最不能忍的。隔离设计的初衷是"每个租户体验可预期"，那么监控也必须"以租户为最小观测单元"，否则隔离就只是资源层面的隔离，体验层面仍是一笔糊涂账。会让指标基数随租户数增长。它在第17篇计量、第18篇压测的基础上，进一步把"成本/性能"数据转成"健康度/SLA"信号，形成闭环。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 47 阶段19：多租户知识库隔离设计，适配 SaaS 系统大模型架构，混合隔离策略（共享加独享）与 SaaS 分层定价]]></title><link>https://blog.csdn.net/fuleigang/article/details/164326049</link><guid>https://blog.csdn.net/fuleigang/article/details/164326049</guid><author>fuleigang</author><pubDate>Thu, 03 Sep 2026 10:16:00 +0800</pubDate><description><![CDATA[混合隔离是"技术隔离"与"商业分层"的统一接口：技术侧用 shared/isolated 控制安全与密度，商业侧用 Free/Pro/Enterprise 把隔离强度卖成差价。混合隔离（shared + isolated）正是为分层而生：把"长尾租户"放进共享池摊薄成本，把"高价值/强合规租户"放进独享实例保证确定性。混合隔离不是简单的"二选一"，而是通过"隔离级别"这一个变量，把隔离强度、成本、价格三者联动起来。隔离边界要定义清楚，否则会出现"共享池里能读到别家文档"的数据泄漏事故。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 47 阶段18：多租户知识库隔离设计，适配 SaaS 系统大模型架构，隔离方案压测：租户密度与性能拐点]]></title><link>https://blog.csdn.net/fuleigang/article/details/164324946</link><guid>https://blog.csdn.net/fuleigang/article/details/164324946</guid><author>fuleigang</author><pubDate>Thu, 03 Sep 2026 09:57:20 +0800</pubDate><description><![CDATA[压测的目标，是找到"在保障 P99 延迟 SLA 前提下，每种隔离方案能支撑的租户密度上限"，以及越过上限后延迟陡增的"性能拐点"。多租户知识库的压测，和单租户系统的压测有本质区别：单租户看"总 QPS 能扛多少"，多租户更关心"在 N 个租户共存、且彼此隔离策略不同的情况下，单租户体验是否达标"。整个过程应"只读压测数据、不污染生产租户"，使用独立的压测租户前缀。观测侧建议把"每租户 P99"和"全局 P99"同时展示：全局均值可能被长尾拉平而掩盖单租户劣化，这正是隔离设计最该防范的"噪声租户"问题。]]></description><category></category></item><item><title><![CDATA[Java 程序员第 47 阶段15：多租户知识库隔离设计，适配 SaaS 系统大模型架构，租户级限流、熔断与资源配额 Resource Quota]]></title><link>https://blog.csdn.net/fuleigang/article/details/164292587</link><guid>https://blog.csdn.net/fuleigang/article/details/164292587</guid><author>fuleigang</author><pubDate>Wed, 02 Sep 2026 10:48:26 +0800</pubDate><description><![CDATA[用量、速度、并发都被框在配额内，任何一户都无法拖垮平台。（无配额 vs 有配额的平台稳定性对比见图 figure_15_1）配额的本质是“公平与保护”：既保护平台，也保护小租户不被大租户挤占，同时为不同付费套餐提供差异化的资源上限。]]></description><category></category></item></channel></rss>