0%

Attention Engine 可以被理解成“Attetion 算子库 + Attention 运行时”。有以下设计:

  • 可拆分的 Attention 算子:提高了 GPU 内存带宽利用率
  • 新的 KV Cache 管理抽象 CBSR:兼具 PagedAttention 和 RadixAttention 的优点,更 general
  • 宏观上动态、微观上静态的调度运行时:动态的同时不损害静态抽象和收益
  • 可定制的 Attention 算子框架、JIT:一些工程特性

FlashInfer 这篇工作在 2023 年就提出了,据作者所言,那个时候只有 FlashAttention1,还没有 FA2&3,FlashDecode 等工作,但是这些工作论文发得更早。

一、Background

FlashAttention

传统的 Attention 运算需要扫描 3 遍 GPU Memory 中的 Attention Logits 矩阵(len, len),计算密度低。

FlashAttention 提出了 1-pass 的 attention 算法,提高了计算密度,缓解了 GPU Memory 到 GPU Cache 的 IO 瓶颈:

Read more »

一、Kuromi & Melody

Kuromi 是 AJ 送我的第一个礼物,好像是在五道口地下一层买的,当时我们好像还没有正式确立关系,在回去之前,她走进商店买了 Kuromi,然后挂在了我书包的后面。后面很多的日子里我背上书包,都感觉似乎有一只手在牵着我。

Melody 是后来我送给 AJ 的,琢磨着可以凑一对。

嗷对了,AJ 还不相信我能把挂着玩偶的链子解开后再挂到书包上去。

2024-03-16_22-14-46_Kuromi&Melody

Read more »

一、总论

这是一篇记录我配置新电脑,在新电脑上配置系统的过程。

之所以取名叫作“没有银弹”,是因为我被挑选硬件、软件的过程折磨的精疲力竭。“没有银弹”虽然是一个老生常谈的话题,但是发现它出现在非软件工程领域,还是非常让人意外的。

没有一个笔记本、可以兼具 PC 的量大管饱和 Macbook 的高续航和漂亮屏幕;没有一个操作系统,可以兼具 Linux 的开发环境相似性、Windows 的普世和 MacOS 的闭合生态;没有一个发行版,可以兼具 ArchLinux 的高可控性和及时性,NixOS 的可复现性,Ubuntu 的稳定性;没有一个图形服务器兼具 Xorg 的适配性和 Wayland 的高性能;甚至没有一个编辑器,可以兼具 Emacs 的键盘操作和 VSCode 的 Remote 功能!

在我各种权衡利弊下,我得到了一个低续航、很沉、没有独显、甚至还不便宜的笔记本;上面装着的操作系统,无法驱动触摸板、声卡和蓝牙;软件包管理形式依然是 pacman,只要我开始更新,我就要一直更新;依然是老旧的 Xorg,每使用一天就是在向死亡奔赴一天;都 2025 了,我甚至还要被 Emacs 的沉没成本绑架以至于无法使用 VSCode。

Read more »

这篇工作比较缝合,它引用了 3 个 idea:

TeAAL 提出用 Einsum 的形式去描述算子,并指导加速器的设计。但是 Einsum 只能描述仅包含加法和乘法的算子,对于 Flash-Attension 这种包含指数运算(softmax)和迭代运算的算子无法描述,于是作者借用了 Extended Einsum 的形式描述了 Flash Attension 算子并实现了 FuseMax 加速器,同时论证了 pass 抽象的合理性。

而实际上,TeAAL 提出的用 Einsum 指导加速器设计的思路并没有因为使用了 Extended Einsum 而被拓展;FuseMax 所展现的性能优势,大部分来自于 Flash-Attension 算法本身,而不是其硬件实现。

一、Background

1.1 Flash Attention, Pass

Flash-Attention 是一种 Attention 算子的实现,相比于传统的实现,它可以降低内存带宽的需求,并且使用更少的片上内存,更适合当前加速器存在的 memory bound。为了达到这个目的,我们需要:

  • 尽可能少的从内存中读取数据 -> 算法设计的 pass 数要少
  • 尽可能少使用片上内存 -> tile 后 reduce
Read more »

一、总论

当我们提到大模型 LLM 的时候,总是和 Transformer 这种架构联系在一起,似乎只有使用了 Transformer 架构的深度学习模型才配叫作大模型。

不过以我目前浅薄的认知,我倒觉得 Transformer 并不是 LLM 的核心特征,因为 LLM 的算法变化很快,Transformer 从 2017 年到现在有了多种变体,也有完全不采用 Transformer 架构的 AI。我个人感觉 LLM 的核心有两点:

  • 模型参数极大:我们认为模型参数越多,模型就越智能。这是“涌现”的一种具体体现。
  • 采用“预训练-微调-推理”范式:这种范式使得模型的通用性得到了增强,划分了不同的生态位。

我希望在下文中记录一下关于 LLM 或者 Foundation Model 的基础知识,以避免被这个时代抛下太久。

Read more »

一、分布式系统

1.1 总论

分布式系统指的是利用多个单体计算机系统构建的多体计算机系统。

与并行计算不同,分布式系统更侧重于用多个计算实体完成非常多个细碎的任务。而并行计算侧重于利用多个计算实体来更快更高效地完成一个计算任务。

分布式系统包括了执行流的分布式和数据的分布式。在北航 OO 课电梯问题中,涉及了多线程,属于是执行流的分布式,这就导致我以为分布式只是执行流的分布式,涉及的问题只是互斥和同步,这是非常片面的。数据的分布式指的是,存在多个数据副本,cache 就是一种数据分布式的实体。

Read more »