你好,欢迎来到这里。
这封信讲三件事:这里写什么、读的时候有哪些顺手的小功能、怎么告诉我哪里写得不对。这封信本身就是演示场地,下面提到的功能都可以直接在这里试,随便划、随便点,不会弄坏什么。
一、这里写什么
主要是技术,近两年集中在 AI 工程。内容按三张学习地图组织——AI 算法工程师、AI-Infra 工程师、AI 应用工程师——地图下面是三十多个系列,比如《大模型推理系统揭秘》《GPU Kernel 工程》《通信与互联》。每个系列有总纲、正文和一篇总结自测;文章开头告诉你它是第几篇,文末有整个系列的目录。导航栏的 Series 是全部系列的树,系列列表也标出「入门 / 进阶 / 深入」,方便按难度挑选。
更早的文章(2009 年起)是 Java、数据库、搜索、大数据。技术之外,Life 是生活类的文章,Moments 是随笔,Slides 是幻灯片。归档可以按类型、年份、系列、标签筛选,切换成时间线、表格或卡片;年份、系列和标签都能多选。按主题翻去标签。
二、读的时候
1. 就地解释,不用跳走
- 脚注:Ring AllReduce1 是数据并行训练里最常见的梯度同步算法,vLLM2 是目前最流行的推理引擎之一。鼠标放到小数字上(手机上轻触)就弹出卡片,里面可以有代码、表格、公式;点编号才会跳到文末。
- 带
?的虚线词:训练大模型时人们总在谈 MFU 和 KV Cache。一两句话能说清的名词,不用你去搜。 - 站内链接:鼠标停在《个人博客终于迎来了久违的更新》这样的站内文章链接上,会弹出它的标题、日期和摘要。站外链接带个小 ↗,比如 PyTorch 官网,在新窗口打开。
重要的话会放进彩色提示框,像这样:
快捷键
任何页面按 ⌘K(Windows 上是 Ctrl+K)或 / 打开全文搜索,Esc 关闭。
2. 代码、图、公式
- 代码块顶上有一条栏:「代码块 N:标题」、语言、复制和评论;左侧的行号复制时不会带上。讲解代码时,正文里带蓝色虚线的词和代码行是绑在一起的:悬停它,对应的行亮起来,点一下滚过去;反过来,悬停代码左侧蓝色的行号,就地弹出正文那段解释。试试——基例在
n == 0时返回 1,其它情况递归乘下去:
def fact(n):
if n == 0:
return 1
return n * fact(n - 1)
- 图右上角的按钮里有 放大:全屏、滚轮缩放、拖动,长图不用眯着眼看。表格右上角能复制成 TSV、Markdown 或 HTML。表格里也能像电子表格那样拖动框选,竖着拖就是选一列,⌘C 复制出来还是按列排好的;框选后工具条照常弹出,评论会用黄框标出选中的那几格,评论框里也会自动带上这几格的内容。
%% 图:划线评论的流程:选中一句话、点评论、登录发表,那句话变黄并出现计数标记
flowchart LR
A["你选中一句话"] --> B["点「评论」"] --> C["写几句,GitHub 登录,发表"]
C --> D["那句话变黄,段尾出现计数标记"]
D --> E["别人点开就能看到、回复、投票"]
classDef c fill:#f6f8fa,stroke:#d0d7de,color:#24292f;
class A,B,C,D,E c;
- 公式用 KaTeX 渲染,比如 Ring AllReduce 每张卡的通信量是 \(2\frac{N-1}{N}S\),与卡数 \(N\) 基本无关。
3. 长文章怎么读
- 目录:宽屏时右侧有浮动目录,随滚动高亮当前章节;窗口窄时右边缘有一个 ‹‹ OUTLINE 小标签,点开是抽屉。
- 折叠:章节标题左侧的小三角收起这一节(电脑上悬停标题才出现);按住 ⌥ / Alt 再点,同级章节一起收起。
⌘F查找、目录跳转会自动展开被收起的内容。 - 继续阅读:页面顶部有一条细进度条;长文读到一半离开,下次打开时底部会提示「上次读到「某节」 · 继续阅读」。位置只记在你自己的浏览器里。
- 离线阅读:读过的文章会存在你的浏览器里,断网后还能重新打开,顶部会标「离线版本」和缓存时间;没读过的页面断网打开,会列出能读的文章。联网时照常先取最新版,不会看到旧内容。底部的「离线保存」能把一篇连同图片存下来,不会被自动清掉,存过的文章在我的收藏里能看到和删除。
- 学习进度打卡:文章读到 90% 且停留时间够长,就会自动标记为已读;底部按钮还在,可以手动标记或取消,手动取消后不会再自动标回。没读完时,进度会显示在文章系列目录、Series 和三张学习地图上,文末系列框还会显示剩余篇数和大约阅读时间。数据只保存在你自己的浏览器里。
- 继续阅读:首页和 Series 页也会根据本机阅读记录提示继续读最近的系列文章。
- 读完整个系列:系列全部读完时,文末会提示读完篇数、用时和下一个系列。
- 大纲 ↔ 思维导图:文章目录里的「导图」可以在大纲与思维导图间切换;Series 也能切到地图视图,展开系列看文章。
- 搜索:导航栏的放大镜、上面的快捷键,或者 /search/,搜的是全文。图片的说明文字和图里的文字也能搜到。读到不认识的词,选中它,点工具条上的「搜一搜」:站内、Google,或 Google AI 模式(会带上文章标题和所在章节,请它解释)。
- 文末:系列目录、「LINKED FROM」(哪些文章引用了这篇)、「YOU MIGHT ALSO LIKE」(相关推荐),顺着链接就能把一个主题读下去。
- 按你的习惯读:导航栏的「Aa」调字号、宽度和字体,底色可以选白色或护眼米黄;暗色默认跟随系统,也可以点月亮 / 太阳切换。想专心读一篇,点旁边的专注按钮,周边控件会收起(支持的浏览器会进全屏),按 Esc 退出。设置记在你的浏览器里、所有文章通用。专注模式里我也加了 Vim 风格快捷键:
j/k滚动、d/u翻半屏、gg/G跳到开头 / 结尾、h/l切换章节,按?看帮助。手机上有触控适配,代码和表格左右滑动。
三、告诉我哪里不对
这是我最想让你试的部分。选中正文里的任意文字(标题、脚注、公式都行),上方会浮出一个工具条:
| 按钮 | 做什么 | 要登录吗 |
|---|---|---|
| 点赞 | 这句有用 | 不用,一个浏览器一票,再点取消 |
| 评论 | 段落下面就地展开输入框,顶部引用你选的原文 | GitHub 登录 |
| 分享 | 分享这一句,别人打开会自动定位到它;还能「生成图片」:这句话突出、前后文淡出,带一个扫码直达原文的二维码 | 不用 |
| 复制 / 搜一搜 | 复制文字;拿去站内或 Google 查 | 不用 |
有些句子我已经提前划好了线——相当于替你划了重点,看到觉得对就直接点开点赞或评论,不用自己再划。这两段是专门给你练手的:
在 GPU 集群里做数据并行训练时,每一步反向传播结束都要对全部梯度做一次 AllReduce。Ring AllReduce 把 N 个节点连成环,每个节点只和左右邻居通信,每步传输 1/N 的数据,做 2(N−1) 步,总通信量与节点数无关——这是它在带宽受限场景下成为默认选择的原因。
这一段故意留了一个错误:PagedAttention 是 TensorRT-LLM 首创的显存管理技术,把 KV Cache 切成固定大小的 block 按需分配,显存浪费从 60%–80% 降到 4% 以下。
划过的地方会留下一条线,颜色就是状态:
- 虚线:有人评论或点赞过,段尾的小标记带着数字,点开是这段的全部讨论;我提前划的重点只有一条普通下划线、没有数字标记,点文字同样能打开。同一段文字只有一个讨论串:别人划过的地方按钮变成「加入讨论」,你自己评论过的变成「编辑评论」。
- 红色实线 + ⚑:有人评论时勾了 「同时提交 Issue」,会在博客仓库开一个署你名字的 Issue。这是我处理勘误的工作队列,比留言更不容易漏——上面第二段就是给它准备的。
- 绿色实线 + :我改好了(Issue 关闭,或回复了「已修正」)。
图和代码块也能评:图右上角、代码块顶栏各有一个评论小方块,点它就等于选中了图题或代码标题,工具条照常弹出。代码跑不通,就把系统、版本和完整报错贴进评论,勾上 Issue。流程图(比如上面那张)里的字也能直接划:框选节点里的文字,手机上轻触节点就选中整段,工具条照常弹出;一次只能划一个节点里的字。
拉到文末是评论区,和划线评论是同一个讨论串(存在这篇文章的 GitHub Discussions 里),支持 Markdown;自己的评论可以编辑、删除,每条评论可以 投票。评论区上方的「 点赞」和「分享」不用登录。一篇文章被划得多了,评论区顶部会出现「最受关注的段落」——相当于读者版的摘要。
写评论时可以直接把截图粘贴进输入框(⌘V / Ctrl+V),或者把图片拖进来;手机上点输入框工具栏的图片按钮从相册选。不用另外找图床,登录 GitHub 后就能用。电脑上还可以点图片按钮旁的剪刀截图:浏览器会先问你要共享哪个画面,可以选当前页面,也可以选别的窗口;截完拖动框出要的区域,还能画红框、箭头或加文字,双击完成。
更省事的是截图评论:电脑上在文章任意位置按 ⌥S / Alt+S,或点图片、表格、代码块右上角的剪刀。浏览器会先询问是否共享画面,建议选择当前标签页。绿色框提示页面在截图里的位置:双击可直接使用,单击选中后可调整范围或添加标注,也可以拖动框出其他区域。截图完成后,图会先复制到剪贴板,评论框在对应的位置打开,按 ⌘V / Ctrl+V 粘贴进去才会上传,没截好就直接关掉,不留痕迹;点「分享」可以把截图做成分享图片。给图片、表格或代码块标题选择「生成图片」时,会先把整块放大再截图,不只截标题。手机暂不支持。
四、幻灯片与随笔
1. 幻灯片
Slides 是我用 Markdown 写的在线幻灯片,打开是网页版 PowerPoint 的样子:左边缩略图,右边播放器,地址栏的 #/N 是页码,下面和文章一样有点赞和评论。每个系列也配一份「系列精华」deck,系列框里有「幻灯片」链接。这种 deck 的主线横向一篇一页,细节藏在纵向子页里:右下角出现 ↓ 时按它展开,按 → 跳过整组。
| 想做什么 | 怎么做 |
|---|---|
| 翻页 | ← → 或空格;有 ↓ 的页按 ↓ 看展开 |
| 全屏 | 工具栏的全屏按钮或 F,Esc 退出 |
| 总览所有页 | Esc 或 O,点一页跳过去 |
| 演讲者视图 | S,弹出一个新窗口(当前页、下一页、备注、计时);关掉那个窗口就退出。浏览器拦截弹窗时要允许一次 |
| 导出 PDF | 点工具栏的 PDF,在新窗口打开打印模式,再用浏览器打印 |
| 看全部快捷键 | 播放时按 ? |
2. 随笔
Moments 是碎碎念:写不成文章的一句话、几张图、一段小视频、一首诗或一首歌,排成一条卡片流。
- 侧栏有热力图、「随机漫步」(随手翻一条旧的)、「每日回顾」(往年、往月的今天)、标签和月份;顶部的筛选框可以跨月份按文字、标签、地点或有没有图来找。
- 每条有自己的页面,分享时可以生成一张带二维码的图片卡;可以点 ♡、可以划线评论(评论区在每个月页面的底部)。
- 单独的 RSS:/moments.xml。
五、FAQ
评论一定要登录 GitHub 吗? 发评论要,点赞、分享不用。评论存在 GitHub Discussions 里:没有垃圾评论,评论属于你自己的账号,随时可以去 GitHub 上改或删。登录只授权 giscus 这个应用读写 Discussions,本站不保存你的凭据。
我的评论会被审核吗? 不会,发表即可见。只有明显的广告或人身攻击我才会隐藏。有人回复你时,GitHub 会按你的通知设置发邮件。
我划线的那句话被改了怎么办? 小改不影响定位。改动太大对不上时,评论区顶部会列出「原文已修改」的划线评论,评论本身一直在。多半就是因为你那条评论才改的。
反馈真的有人看吗? 有。每周一会自动把反馈够多的文章汇成「待修订」清单,我(多数时候是我和 AI 一起)照单修,修完那句话下面的线就变绿。
为什么有的链接点进去显示还没发布? 系列文章按日期排期,到那天凌晨自动上线。
文章里的版本号和我用的不一样? 系列开头会声明基于哪个版本(比如 vLLM v0.27.1),文中的路径和函数名以它为准。版本差得远的地方,欢迎划线告诉我。
阅读数怎么算的? 一个浏览器一篇文章一天算一次,只是个量级参考。阅读进度只存在你本机,不上传。
文章也可以收藏:在文章底部收藏整篇,或选中文字后点「收藏」保存摘录;到 /favorites/ 集中查看和搜索。收藏只存在你的浏览器里,换设备或清浏览器数据前,记得在那里点「备份」,到新地方再「恢复」;也能点「导出收藏(Markdown)」存一份。
可以转载吗? 可以,注明出处和链接就好。
怎么订阅、找到我? RSS 是 /feed.xml,阅读器里填域名就能自动发现;GitHub 是 arganzheng;页脚有知乎、微信公众号和 LinkedIn。
这个博客是用什么做的? Jekyll + GitHub Pages,评论借 GitHub Discussions,一个很小的 Cloudflare Worker 做中转和计数。
看完了?选中这一段任意几个字,点「评论」,告诉我这封信哪里没讲清楚。
-
Ring AllReduce:把 N 张卡连成一个环,数据切成 N 块,先做 N−1 步 reduce-scatter 再做 N−1 步 all-gather。每张卡的总通信量约为 \(2\frac{N-1}{N}S\),与卡数基本无关,所以在带宽受限的集群里成了默认算法。
Ring AllReduce 两个阶段的步数与每步发送量 ↩ 阶段 步数 每步每卡发送 reduce-scatter N−1 S/N all-gather N−1 S/N -
vLLM:伯克利出品的开源推理引擎,核心创新是借鉴操作系统虚拟内存分页思想的 PagedAttention,把 KV Cache 切成固定大小的 block 按需分配,显存浪费从 60%–80% 降到 4% 以下。本站有一个十五篇的系列专门讲它。 ↩
本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/a-letter-to-readers.html)的前提下,欢迎各种形式的转载、翻译或商业引用。
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。