Yikai Zhu Blog

不积跬步,无以至千里。不积小流,无以成大海。

Diffusion TimeStep Distillation(1) - 从 SDS 到 VSD 到 DMD

This is a subtitle

让我在最前面做一个非常粗糙的总结就是,最开始的论文SDS为了数学上的优雅推导,加了一个很强的假设,所以效果不好;朱军老师的新论文修改了假设;但是修改了假设之后发现有一个Function推导不出来了,所以选择引入一个辅助模型来估计这个Function。而DMD基本就是这个朱军老师论文的衍生版本。但我觉得DMD对辅助模型的理解不对,所以错误的把这个模型称为了”Fake”模型,这个命名很容易让读者...

Diffusion MIT 6.S184课程笔记(2) Diffusion Training

This is a subtitle

序言 在看 diffusion 的过程中,我觉得最大的难点就在于理解它是怎么 training 的。这里面有一点我觉得非常优雅:背后的数学理论和工程实现是很完美地解耦开的——scientist 给出 idea 和公式推导,engineer 负责高效实现。这种解耦也导致了一种错觉:training 的理论部分对工程师”似乎”不那么重要。但当我开始尝试实现一些 distillation 相关的...

Diffusion - MIT 6.S184课程笔记(1): ODE and SDE

This is a subtitle

序言 之前看过翁家翌大佬的一个访谈,里面提到”教会做工程的人算法,比教会做算法的人工程要容易得多”。但我觉得这多少有些幸存者偏差——他自己天资聪慧,所以觉得有些东西”似乎”没那么难。作为一个工程师,我还是觉得算法比工程难得多。但无奈的是,我现在发现如果不去了解一些算法背后的 idea,做起工程来会很被动——知其然而不知其所以然,遇到问题就容易束手无策。 最近在公司正好在做 image/v...

Triton 写的 Kernel,性能其实很能打

This is a subtitle

前阵子在 GTC 上跟不少人聊,发现大家普遍有一个共识:想写出性能最优的 kernel,要么学 cute DSL,要么上 CUTLASS。Triton 更多被看作是一个”方便但性能一般”的选项。 但在实际开发中,我发现事情没那么绝对。至少在一些相对简单的 kernel 场景下,Triton 已经能提供非常出色的算子——甚至略优于手搓的 CUDA 或 cute DSL 的实现。本文我会通过几...

MIT Missing Semester 课程笔记

MIT Missing Semester 课程导引与实战笔记 这篇文章是 MIT Missing Semester 的课程导引与笔记。作为一个工作两年的程序员,我会在课程内容的基础上,融入自己在实际工作中高频使用的技巧和经验。 MIT Missing Semester 是一门专门教”程序员日常工具”的课程。传统的 CS 课程教你写算法、造系统,却很少教你如何高效地使用终端、配置开发环境、...

sglang dp attention Walk Through

parallelism in sglang

Background 在目前训练/推理的各个场景里,Attention层的并行策略和MoE层的并行策略是不一样的。这个已经逐渐成为了一种趋势,因为MoE层里有EP这个额外的并行策略考虑。目前Sglang的代码演进的很快,如果只看代码会发现可能过几天就变了;理解一些high level的概念之后再去看代码,会发现都是一脉相承,会更好的理解代码。 本文重点看Sglang里dp attenti...

Amazon OA Sample 分享

Hardest Amazon OA of 2024

背景 先来看看原题: (懒得看英文的小伙伴没关系,后面会有中文概括,但建议还是看看原题) 注: 图片来自这个人的YouTube视频: https://www.youtube.com/watch?v=aPP8wkSBiLg, 评论区的链接不知道为啥打不开了,因此我放了截图,这个是我看到的对这道题目最完善的描述,很遗憾他提供的代码不是最优雅的。其他题目链接可以参考这个链接和这个链接。可以...

Rope Embedding Optimization

Understand RoPE From Engineer's View

旋转编码 RoPE 旋转编码是苏剑林老师在论文 Roformer: Enhanced Transformer With Rotray Position Embedding 中提出的,苏神是怎么想到这个idea的详细可以参考他的博采众长的旋转式位置编码, 其他位置编码的调研则参考了苏神的 让研究人员绞尽脑汁的Transformer位置编码。下面是笔者从博客中简单做的总结,对于懒得看数学推导的...

CUDA Mode 学习笔记1: Reduction

notes of how to optimize Reduction from scratch

这几天在学习Cuda Mode, 只之前听人说这是最合适入门Cuda的网课。但是听完了之后,我的结论是,这门课里的很多内容并不适合初学者,适合有一定并行学习基础的人。如果是还没接触过Cuda的学生的话,建议还是从斯坦福的CS149开始学习。我之前听过斯坦福的CS149,把里面的大作业都跟下来了,也算是有一点并行计算的基础;只是当时很多内容没有深究,看看网课就过去了,所以了解的不深。这门Cud...

Advanced Machine Learning Systems: GEMM

notes of how to optimize SGEMM from scratch

前言 首先,必须要认识到,把矩阵乘法优化到极致这件事情是一个非常非常难的事情,很多做芯片的搞体系结构的人都盯着这个方向。因此,作为一个初学者,我比如要想清楚自己到底为什么要做这个项目。我给自己定的小目标是以下三个: 通过矩阵乘法的优化,大概了解GPU的基本架构,并能大概估计硬件层面的架构对于软件的性能到底会产生的影响。 实现一个足够具有扩展性的实验架构,如果以后对于其他kern...