导言
模型训练建模不是先问“MFU 有多高”,而是先把模型结构、硬件账本、并行切分、调度路径和实测校准放到同一个估算器里。MFU 是其中最干净的计算口径:它把模型理论必需 FLOPs、设备峰值和实测步时连在一起;但显存能不能放下、通信会不会卡住、padding 是否浪费、EP/TP/SP 是否合适,必须另算。
导言
模型训练建模不是先问“MFU 有多高”,而是先把模型结构、硬件账本、并行切分、调度路径和实测校准放到同一个估算器里。MFU 是其中最干净的计算口径:它把模型理论必需 FLOPs、设备峰值和实测步时连在一起;但显存能不能放下、通信会不会卡住、padding 是否浪费、EP/TP/SP 是否合适,必须另算。
导言
Scaling Law 不只是“模型越大越好”的经验总结,而是一套算力预算分配语言:在固定训练预算下,参数量、训练数据、序列长度和训练时长互相竞争;在固定推理预算下,模型大小、生成 token、采样策略、工具调用和 agent rollout 也互相竞争。本文只记录论文中可追溯的公开披露;没有披露的数据明确标为“未披露”,不从参数规模反推训练成本。
导言
多局点、多任务、多角色同时推进时,真正稀缺的不是勤奋,而是 判断力、取舍能力和可复用记录。均匀响应所有任务只能保证不出明显纰漏,却很难形成个人优势;优势通常来自少数高风险、高杠杆、高不确定、强依赖的局点。
本文把工作链路整理成一个可执行系统:先识别重点风险局点,再拒绝低优先级任务;先快穿刺关键假设,再并行派活和紧跟踪;先用原理、显存、性能 MFU 和投产约束做建模,再用实践验证、详细记录和持续修正形成历史;最后把优势进展、后续风险和必要求助稳定汇报出去。
导言
这篇文章记录我当前的 Work with AI 文档工作流:不是把一段 prompt 扔给模型、得到一篇孤立文章,而是把调研、来源管理、论文图表、正文插图、图片上传、Hugo 写作规范、可复用 skill 和 git 发布串成一个可验证的流水线。
这条流水线的关键变化来自 Karpathy 的 LLM Wiki 思路:把知识库视作一个由 LLM 维护的 Markdown 代码库。原始资料进入 raw 层,结构化理解进入 wiki 层,Hugo 文章只是最终发布层。这样每次写作都会沉淀可复用记忆,而不是从聊天记录里重新发明一次。
Building Large-Scale AI Systems on Ascend: Training, Inference, and Multimodal Optimization
导言
谭邵杰,中国科学技术大学本硕毕业,现任华为昇腾训练开发工程师,专注于 Ascend NPU 上的大模型训练推理框架优化、多模态模型迁移、分布式并行训练、RL 优化与量化推理加速。
AI 训练推理框架与异构加速优化工程师,长期聚焦 Ascend NPU 生态下的大模型训练、推理、多模态迁移、分布式并行、RL 训练与量化优化。
FuseLink Multi-NIC Communication
导言
一台服务器装有八张 400 Gbps NIC,不等于任意一张 GPU 都能拿到八张网卡的总带宽。现有 GPU 集群通常把 GPU 与“最近的”NIC 静态绑定;当 LLM 推理请求、MoE token 或推荐模型 embedding 产生不均衡流量时,热点 GPU 会堵在一张 NIC 上,旁边的 NIC 却可能空闲。
OSDI 2025 论文 FuseLink 的核心思想,是把 NVLink/NVSwitch 从“服务器内部的 GPU 互连”重新解释为“跨服务器网络的数据路径延伸”:流量先经 NVLink 到达更适合访问空闲 NIC 的中继 GPU,再通过 RDMA 发往远端。本文沿论文 Figure 1、2、3、4、5、8 还原这条设计链,并用其余实验结果说明收益、代价与边界。
导言
GPUDirect Storage 已经能让 NVMe 和 GPU Memory 直接 DMA,为什么 NVIDIA 还要再做一套 SCADA?答案藏在“谁在运行时才知道下一块数据在哪里”这个问题里。
cuFile 适合由 CPU 或上层运行时提交已经成形的文件 I/O;图遍历、GNN 采样和磁盘型向量索引却可能让数十万个 GPU 线程各自发现下一个 offset。SCADA(SCaled Accelerated Data Access)试图把这些细粒度、数据依赖型请求留在 GPU 内核中:先经过 HBM 软件缓存与请求合并,再交给可信服务器访问本地或远端 NVMe。
一句话判断:SCADA 改变的首先是存储控制路径,其次才是数据路径。 它不是 GDS 的新名字,也还不是一个可直接下载部署的通用产品。公开论文已经证明 GPU-initiated storage 的基本机制,2024—2026 年的演讲和硬件演示展示了 SCADA 的扩展方向;但 API、部署要求和端到端生产数据仍处于有限公开阶段。
导言
把 SSD 数据送进 GPU,最直观的优化似乎是“绕过 CPU”。但这句话混合了两个不同问题:数据是否经过 CPU 内存,以及 I/O 请求究竟由 CPU 还是 GPU 发起。NVIDIA GDS 解决前者,BaM 进一步改变后者;代价是原本由 CPU 承担的队列管理、并发和缓存压力转移到了 GPU。
本文整理 DaMoN 2025 论文 Path to GPU-Initiated I/O for Data-Intensive Systems:先沿 Figure 1 比较五条 GPU-centric Storage 路径,再还原 BaM、GDS 与 SPDK 的实验边界。核心结论不是“GPU 发起一定更快”,而是系统应根据 CPU、GPU、PCIe、SSD 与数据复用状态,选择由谁支付 I/O 控制成本。
导言
“GPU-aware” 很容易让人产生一个错觉:只要通信库能够接收 GPU buffer,数据就会完全绕开 CPU,通信也已经由 GPU 自主推进。现实并没有这么整齐。API 可能从 CPU 发起,数据却直接流向 NIC;GPU 也可能负责触发传输,但报文仍由 CPU 预先构造。
The Landscape of GPU-Centric Communication 给出的关键视角,是把通信拆成 API、报文构造、触发和数据路径,再观察每项责任究竟落在 CPU、GPU 还是 NIC。沿着这套坐标回看二十年演进,会发现主线不是“带宽越来越高”,而是先消除冗余拷贝,再缩短数据路径,最后把控制权逐步迁到 GPU。
Mooncake Classic vs TENT Engine
导言
看到“应用必须持有 Transport*”时,我真正卡住的是:持有到底是什么意思?为什么直接保存一个后端指针就能工作,统一的 TransferEngine 反而走不通?
把这个词拆开后,Classic 与 TENT 的差异就不再只是两套接口。Classic 的公共 Batch 先于后端选择而创建,后端私有状态缺少稳定的安放位置;TENT 则在选定后端后,为每个 transport 创建独立 SubBatch,再由统一运行时协调提交、状态与回收。
因此,判断一个 Engine 是否容易扩展多个后端,不能只数有多少个 Transport 子类。真正要问的是:后端的私有状态放在哪里,由谁创建,又由谁保证它完成整个异步生命周期。