<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://drewjin.github.io/feed.xml" rel="self" type="application/atom+xml"/><link href="https://drewjin.github.io/" rel="alternate" type="text/html" hreflang="en"/><updated>2026-11-07T05:51:51+00:00</updated><id>https://drewjin.github.io/feed.xml</id><title type="html">blank</title><subtitle>A simple, whitespace theme for academics. Based on [*folio](https://github.com/bogoli/-folio) design. </subtitle><entry><title type="html">Linear Attention 0：从 Attention 到线性注意力</title><link href="https://drewjin.github.io/blog/2026/linear-attn-0/" rel="alternate" type="text/html" title="Linear Attention 0：从 Attention 到线性注意力"/><published>2026-11-01T00:00:00+00:00</published><updated>2026-11-01T00:00:00+00:00</updated><id>https://drewjin.github.io/blog/2026/linear-attn-0</id><content type="html" xml:base="https://drewjin.github.io/blog/2026/linear-attn-0/"><![CDATA[]]></content><author><name></name></author><category term="ml-systems"/><category term="linear-attention"/><category term="transformer"/><category term="kernels"/><summary type="html"><![CDATA[线性注意力系列第一篇：从标准 attention 的二次复杂度出发，梳理 kernel trick、causal form 与 recurrent form 的基本推导。]]></summary></entry><entry><title type="html">项目都在跑，我却没有在学习</title><link href="https://drewjin.github.io/blog/2026/about-learning/" rel="alternate" type="text/html" title="项目都在跑，我却没有在学习"/><published>2026-10-04T00:00:00+00:00</published><updated>2026-10-04T00:00:00+00:00</updated><id>https://drewjin.github.io/blog/2026/about-learning</id><content type="html" xml:base="https://drewjin.github.io/blog/2026/about-learning/"><![CDATA[<p>最近到 Qwen 实习之后，我竟然发现，自己压根没有时间学习了。</p> <p>我有超多 token 可以用。公司的项目，前期探索我几乎全部放手给 agent。项目的技术栈和我过去关注的东西耦合度不高，本身又没有深到 agent 做不了，结果就是，纯技术上的工作我几乎没怎么碰，自己反而比较抓瞎。</p> <p>好在效果做出来了。后面就是优化代码，以及，虽然很难相信，读懂我做的项目的代码。</p> <p>实验室的项目也在同步推进，做流式视频加速。系统实现用到的技术栈都是我早就懂的东西，所以也全部放手给 agent，只看最后的精度和速度是否达标。训练这部分，我甚至直接全权交给 co-author，自己主要负责开会同步，以及想一些优化训练的 idea。也提了一些不错的建设性意见，但不多。</p> <p>这两个月，我 PhD 入学，正式成为曾经梦校的博士生；收获了自己的第一篇 oral；去了 Qwen 实习；完成了一个流式视频生成模型的算法和系统协同优化，把加速推到了极限；Qwen 这边的项目也做到了可观的加速；还接了实验室一个做 Robot Use Agent 的项目。</p> <p>嗯，我已经打满了三级流水线，而且确实有流水线级的产出。</p> <p>但是，除了把三级流水打满，把自己的带宽占满，搞得脑子频繁 cache miss，我到底学到了什么？</p> <p>我已经很久没有真正系统地学到东西了。上一次，可能还是一年前搭建 Diffulex 核心状态机的时候。</p> <p>我是不是有点偏离自己原来想做的事情了？</p> <p>至少有那么一段时间，我突然开始讨厌静下心读 paper。我沉醉于碎片知识，喜欢看 blog。现在更进一步，我连 blog 都不怎么看了，我就喜欢和 GPT 聊天。</p> <p>我曾经想做一个 AI native 的 system。这是我还完全不懂这些东西时就有的想法。我曾以为 vLLM 就是，后来一路被各种细节占用了学习带宽。直到最近开始做给 agent 用的中间件，我才发现，自己对 OS 的理解简直低微。</p> <p>从应用往下看，那些系统 API，每一个背后都有复杂的状态机和生命周期。我连这些都没有理清楚，何德何能说自己是做 MLSys 的。我对复杂系统的理解，远远不到位。</p> <p>DeepSeek 的机考也让我看到，自己算法题不会做，对状态机和调度的理解明显不足，复杂问题建模能力没有达到自己曾经的目标。即便现在做了一点 LLM 调度，也大多是在别人已有设计上的复刻和略微魔改。</p> <p>模型架构也一样。GDN、KDA 的核心数据流，我没有完全搞清楚。让我写 kernel，我对 GPU arch 的理解又不够充分。我能在面试的时候写 FA，也很难说不是过拟合了 FA2 的流程。</p> <p>貌似这一年下来，除了发了一篇 oral，我没有获得多少自己真正想要的提升。</p> <p>去年我对自己的预期是，到今年，应该可以独立做真正高效的全栈 serving 优化。我会理解复杂状态机、调度方法、CUDA arch 的细节、model arch 的设计，以及 kernel design。</p> <p>现在呢，每一层，最多理解了 60%。</p> <p>生成式这边，可能只有 50%。我大概知道训练流程怎么推进，知道矩阵怎么流，但问到为什么这样设计，一些核心设计究竟有什么价值，我就说不清楚了。</p> <p>博士刚入学，我开始感受到，自己和交大 John 班、SAI 那些优秀本科生之间，基础知识上的鸿沟。我只是现阶段实操更多、经验更多，所以在一些事情上有能力优势。但基础知识，我差得很远。</p> <p>我没有写过自己的 shell，没有做过 CSAPP 的各大 lab。ML 和 Gen AI 的基础、概率论、矩阵论、GPU 架构，再到 model arch、多模态生成、表征学习，我都欠着账。</p> <p>想成为一个真正全面的研究者，我总觉得，必要的领域至少得有 80% 的理解，专攻的领域得有 95%。当然，这些百分比也只是感觉，我甚至未必知道剩下的 40% 在哪里。但我现在还早，或许应该先把必要的基础补到一个比较扎实的程度。</p> <p>我曾经很长一段时间都坚信，做项目，边做边学。</p> <p>但目前的状态，好像已经不支持这套方法了。</p> <p>Agent 全都能做出来，而项目的进度要求，又不允许我每一部分都手操。不然进度就会大幅落后。过去我不太看得上系统学经典课程这件事，因为我坚信实用主义：需要什么就学什么，在项目里碰到问题，自然就会了。</p> <p>现在，问题根本不需要经过我，就已经被解决了。</p> <p>我一个人可以做远大于过去 scale 的工作。我能完成它们，哪怕我不懂。</p> <p>但是，我真正控制这些项目了吗？我觉得没有。</p> <p>好多地方，我根本不知道它在干什么。状态机没有理清楚，没有用 pdb、gdb 进去看过，没有亲手修过 corner case bug。最后指标是好的，项目是能跑的，但这些系统，我其实不了解。</p> <p>我忙得要死，却找不到以前那个 zone。</p> <p>不写代码，不 debug，同时盯着好几个项目，脑子一直在切。我以为自己 wired in 了，但好像只是一直在线。注意力越来越碎，还是不愿意腾时间运动，还是容易被群聊、短视频这些垃圾吸走。</p> <p>因为就算不进入状态，我也能完成任务，甚至能完成大量任务。</p> <p>我的“预训练”已经足够支持我处理很多范畴的事情。我基本什么都懂一点，什么都懂到 50%。这很好，但也很不好。</p> <p>这不是我想要的 PhD 状态。</p> <p>我不愿意 dive in。外界不准我，项目不准我，世界好像也不准我。可说到底，我自己也中了毒。社交网络和 vibe coding 的双重毒，天天吸，戒不掉。</p> <p>我反而觉得，过去那个认知更低的自己，学习状态更好。虽然那时候，我能做成的事情远没有现在多。</p> <p>或许我应该压一压自己，回到当时的状态。</p> <p>腾出时间学经典课程，手操完成 classic lab，做一点算法题，练自己的逻辑和建模能力。不然，我凭什么觉得自己以后能进 DeepSeek 这样真正改变世界的团队？</p> <p>我还是想改变世界。我也不觉得自己已经到了上限。</p> <p>保研的过程至少让我知道，我并不笨，学习能力也不差。我可以和高考分数比我高几十分的人正常 align 脑电波。我也确实发现过，脑力是可以锻炼的。只要真正 wired in，我就会变聪明，复杂系统也不是理解不了。</p> <p>但我注意力容易不集中的老毛病一直都在。尤其是最近，大量工作交给 agent 之后，我连进入状态的入口都找不到了。</p> <p>以前，写代码、debug，一个问题卡住了，就必须顺着它往下挖。挖进去，几个小时就过去了。现在，一个问题卡住，发给 agent，然后我去看另一个项目，或者看一眼群聊。等它回来，问题解决了，我的注意力也散完了。</p> <p>我需要那个 zone。我知道自己进去之后是什么样。</p> <p>或许应该先摘掉耳机。自律，对，我还是需要一点自律。运动，手操，留一段不被切碎的时间，把一个问题真的想明白。</p> <p>我能看到自己和那些人的差距，就得去补。我本来就不差，也证明过。世俗意义上，刚入学就有一篇 oral；能力上，我的知识面不窄，脑子转得也不慢。但这些不能代替扎实的理解，更不能让我一直吃老本。</p> <p>如果连系统在干什么都不清楚，我又怎么更好地控制 agent？</p> <p>我不提升自己，也许就会一直停在现在这个水平，继续做项目，继续产出，继续有一点不错的结果。但我想做的事情还远没有做到。</p> <p>我想做的 AI native system，不只有云端 serving。还有 AI 的 OS，还有不同层面的 co-design，还有 RUA。这些想法我可以聊很多，但真要做出来，需要的能力，我还没有。</p> <p>lsy 说得对，我们都在埋葬自己的才华。</p> <p>他是天才，一直是。我是不是，我不知道，至少现在没有表现出来。我甚至很难说自己创造过什么真正有用的东西，但他有 DistServe。</p> <p>我不是要和他比。我只是也有一个目标：到底什么时候，我才能有能力做出一点真正改变世界的东西？</p> <p>我想做到顶尖，因为有些事情，确实需要顶尖的能力才做得出来。但按现在这个状态，哪怕产出再多项目，我可能一辈子也走不到那里。</p> <p>而且，机会好像也不会一直等着我。也许过不了多久，我就得重新寻找未来还能做什么。</p> <p>但无论如何，我的大框架还是 CS 和 AI。我已经做到了不少事情，应该还可以做到更多。</p> <p>我需要找回那个 zone。在 zone 里，我是有神速力的，这件事我发现过。</p> <p>我曾经用一张 3060，在无人指导的情况下独立发了 ACL。所有代码都是手搓，哪怕是那个该死的稀疏注意力算子。当时的 AI 根本做不了这些。从写代码到投稿、rebuttal，没人教我，我也做完了。</p> <p>我也可以自己一个人平地起大厦，搭出 DLM 的 runtime。那些状态机，我是真的懂。从底层的 store kernel、unified DLM attn kernel，到上面的状态机，page size 和 block size 的耦合设计、软件抽象、插件设计、多策略执行，我全都亲手做过。</p> <p>出了问题，我可以直接进 pdb，一层层找到它。</p> <p>现在我认识的人里，能完整做下这些事情的，也没有那么多。</p> <p>所以，我也不能一边焦虑，一边把过去做过的东西全抹掉。那些能力不是假的。只是我知道，自己最近没有继续往下长。</p> <p>我还是会因为 oral 高兴，还是会在某些时候觉得自己很牛。但高兴完也得承认，结果里有运气的成分，而且，这还不是我真正想做到的事情。</p> <p>我需要找回那种状态。</p> <p>项目当然可以继续用 agent 推。能做更大 scale 的事情，本身没有什么不好，我也不想退回什么都只能自己写的时代。</p> <p>但我的学习不能全靠项目顺便发生了。现在这个“顺便”，已经被 agent 接走了。</p> <p>底层的知识，我自己的大厦，还是得亲手重新夯实。得有一些问题，是我自己想明白的；一些代码，是我自己写过、跑过、卡住过，最后 debug 出来的。</p> <p>不然，我可以一直很忙，一直有产出，却始终做不到自己真正想做的事情。</p>]]></content><author><name></name></author><category term="notes"/><category term="research"/><category term="collaboration"/><category term="productivity"/><summary type="html"><![CDATA[最近到 Qwen 实习之后，我竟然发现，自己压根没有时间学习了。]]></summary></entry><entry><title type="html">Qwen Infra Research 面经</title><link href="https://drewjin.github.io/blog/2026/qwen-interview/" rel="alternate" type="text/html" title="Qwen Infra Research 面经"/><published>2026-10-02T00:00:00+00:00</published><updated>2026-10-02T00:00:00+00:00</updated><id>https://drewjin.github.io/blog/2026/qwen-interview</id><content type="html" xml:base="https://drewjin.github.io/blog/2026/qwen-interview/"><![CDATA[<p>这里记录一下我面试 Qwen 研究实习生的经历，项目方向是前沿的 Infra Research。同期，我也尝试过 Dots Infra 与 DeepSeek 两个机会：或是 Mentor 直接联系，或是 HR 主动找上门，对我而言都很幸运。以当时尚未本科毕业的背景，若是自己投递，大概率也是石沉大海。</p> <ul> <li> <p><strong>Dots</strong>：推进到 HR 面后，我与负责跟进的 HR 沟通，主动终止了流程。</p> </li> <li> <p><strong>DeepSeek</strong>：最终因种种原因未能成行。机考当天，恰逢我为博士零年级唯一一篇独立一作论文赶投稿，精力几乎耗尽；而 DeepSeek 的机考又极其漫长，对我这种没怎么刷过算法题的实战派来说，确实有些吃力。于是，我在考试界面里待了大约 30 分钟便退出了，几乎没怎么作答。后来，一位好心的猎头把我推荐给了某位 DeepSeek 内部人士。这位大佬做过一个在推理优化领域极具影响力的 Tutorial 类项目，我也从中受益颇多。按他的说法，我的简历很有竞争力，问题就出在机考太差。</p> </li> <li> <p><strong>Qwen</strong>：在当时能够推进的机会里，它一开始就是我为自己圈定的最优解。一方面，面试流程没有难度过分的机考；另一方面，团队的知名度、影响力和实力都足够强。联系我的 Mentor（Huiqiang）在 MSRA 时期的论文，我早已拜读；Qwen 这边的团队又延续了 MSRA 的原班人马，因此选择他们，对我而言没什么可犹豫的。</p> </li> </ul> <table> <tbody> <tr> <td>对我而言，DeepSeek 大概仍是最向往的选择。但有些事由不得你：错过了就是错过了，未来是否还有机会，也不得而知。哪怕现在进入 Qwen 的团队已经是很顶尖的去处，<del>但心中或许还是会有点遗憾吧</del>，不过哪怕是在 Qwen，我周围的大家也都比我强很多，各个方面都有很值得蒸馏的人，好生蒸馏大家，才是我应该做的。</td> </tr> </tbody> </table> <h2 id="一面--mentor-面">一面 — Mentor 面</h2> <p>这一面由我的直属 Mentor 面试，主要围绕我过去一年在 DLM 与 DLM Infra 上的一系列工作展开。</p> <p>工作脉络大致是：D2F → LoPA → LightningRL → MBD-LMs。</p> <p>其中重点聊了两块。其一是以 D2F 为基础提出的多块流水线化推理；其二是 MBD-LMs 在这一推理之上做的训推对齐训练方案——它能在稳定不掉点、甚至小幅提点的前提下，大幅提升各类 BD-LM 的 TPF。</p> <p>此外，我还完整实现过一个 DLM 推理引擎，这也是我这一面最想展开的部分。它的核心后端正是基于 MBD 的思路搭建的：MBD 后端的 Block Buffer 机制让多块流水线得以跑通 CUDA Graph，并真正鲁棒地耦合进以 Paged Attention 为核心的状态机调度中；同时这套 Block Buffer 还能把 BD-LMs、MBD-LMs、Dual Cache 的块级推理等机制轻松糅合到同一个后端状态机下，再在 Sampler 等模块做特殊处理，从而顺带支持 T2T 推理；甚至只需稍作修改，也能很方便地支持 Diffusion Gemma 的推理——整体设计相当全面。</p> <p>这个引擎从核心设计到搭建，都是在没有 CC 辅助的情况下独立完成的，算得上我能力上的“核心预训练”：它第一次把我此前散碎的知识与能力串成了一个整体。再加上从头做 MBD-LMs 时经历的洗数据、筛数据、多机多卡分布式训练、训练算子优化和训练算法设计，可以说，完整的训推流程我都亲手跑过一遍了，哈哈。</p> <p>聊完这些，我们又大致探讨了 DFlash 一类工作与上述成果结合的可能方向。</p> <p>最后，因为简历里提到我写过不少 Triton kernel，mentor 让我当场搓了一个 softmax kernel 出来（事后回想，当时有点紧张，没有用 online softmax）。</p> <h2 id="二面--infra-research-leader-面">二面 — Infra Research Leader 面</h2> <p>这一面由我们小组的 Leader 面试，个人项目部分聊了和上一面差不多长的时间。可能因为我这一年的研究与工程脉络比较清晰、完整，能展开的话题也比较多。</p> <p>在研究与项目之外，主要问了我几个问题。其中一个关于投机解码：同样生成 n 个 token，AR 逐 token 解码与 spec 的 draft–verify 流程，开销如何对比，后者在时间上又能省下多少？这个问题要说清楚其实并不容易——在单请求或小 batch 下，AR 的线性层计算通常接近 GEMV，生成 n 个 token 需要串行执行 n 次 forward；而 spec 可以把多个 draft token 放进一次 target forward 中并行验证，通过复用权重加载、提高计算利用率，摊薄每个 token 的推理成本。但最终能加速多少，还取决于每轮实际接受并推进的 token 数、verification 本身的耗时，以及 drafting 和其他额外开销，不能简单按 draft length 推算。我当时分析得不算好，毕竟我并非做 spec 出身，只能说大致知道它的执行路径。</p> <p>另一个问题是：FA 为什么能做到 one pass？关键是 online softmax，以及它与两次 tiled GEMM 的融合。普通 attention 中，softmax 依赖整行分数的最大值和指数和，当前 tile 的最终归一化权重无法独立确定。FA 则在扫描 KV tiles 的过程中，持续维护逐行最大值、指数和与未归一化的输出累积量；最大值变化时，通过重缩放修正此前的贡献，再累加当前 tile 的结果，最后统一归一化。这样，对一个固定的 query tile，只需遍历其所需的 KV tiles 一遍，就能完成 QK、softmax 和 PV 的计算，无需将完整的 attention 矩阵写回显存后再读取。</p> <h2 id="三面--rl-infra-leader-面">三面 — RL Infra Leader 面</h2> <p>这一面由团队更上一级的 Leader 面试，依旧是经典起手：把前面几个项目和 paper 讲清楚。这部分已经聊过不少遍，我也比较熟悉了。</p> <p>项目聊完，已经过去约一个小时，没再问多少其他问题，就直接进入了写代码环节。先来了一道 hard，因为不刷题，我依旧没能做出来（</p> <p>于是，改让我写 FA2 的 Triton kernel。这个我还算熟练，搓了 40 分钟做出来，但已经没时间写测试了。Leader 大致检查后，认为没什么问题，便直接提交了。</p> <h2 id="四面--hr-面">四面 — HR 面</h2> <p>这一面是 HR 面，没聊太多，但结束后又给我安排了一轮面试，让我有些意外。</p> <table> <tbody> <tr> <td>说实话，我当时以为要寄了。整个流程的面试轮数和实际强度，已经超出我对项目实习的预期；至少当时，我很少见到要求现场写 FA2 的面试。我一度怀疑是本科学校的原因，需要接受更高标准的考核。后来了解到，阿里云对 23 所高校有硬性要求；不在范围内，就需要凭足够强的实力取得信任，再由推荐人强推才能通过。</td> </tr> </tbody> </table> <h2 id="五面--rl-leader-面">五面 — RL Leader 面</h2> <p>五面又是一位大 Leader，要求我极其简短地介绍自己的 paper：不展示 paper 或 blog，只靠口头表达，把自己在做什么讲清楚，并说服他。这一面倒是比较轻松地结束了。</p> <p>面完后又等了两周，才收到 offer。整个流程走了差不多两个月——等到入职时，我投的 paper 都已经出分，开始 rebuttal 了（</p>]]></content><author><name></name></author><category term="interviews"/><category term="interview"/><category term="ml-systems"/><category term="co-degisn"/><summary type="html"><![CDATA[Qwen Infra Research 五轮面试复盘，从 Mentor 面到主管面，逐轮记录考点与心得。]]></summary></entry></feed>