随便写点东西,准备把 FlashAttention 系列的算法原理推一遍。
本着 Talk is cheap,show me the code 的思想,简单用 python 快速实现了一遍。
这里主要是对算法设计比较好奇,因此跟 cuda 相关的代码优化部分先忽略。搞懂算法实现后,系统同学可以自己想想 gpu 优化怎么做。
随便写点东西,准备把 FlashAttention 系列的算法原理推一遍。
本着 Talk is cheap,show me the code 的思想,简单用 python 快速实现了一遍。
这里主要是对算法设计比较好奇,因此跟 cuda 相关的代码优化部分先忽略。搞懂算法实现后,系统同学可以自己想想 gpu 优化怎么做。
又是一年的 TVM conference,由于举办地在美国的时差关系,我们这边没有线上直接参加,由我们引擎团队负责人 蓝色 大佬给了个 talk。
Talk 的视频链接在:这里
在过去的快两年时间里,我们依靠 TVM 打造了 NIO 全栈自研的 AI 引擎,支持各种感知、规控等等自动驾驶算法在 NT2.0 平台上的高效运行。我们几乎是看着 ET7 交付启动时只有 AEB,到后来逐步版本迭代可以支持 NOP+,再到今年 NAD 也即将要在我们的引擎支撑下开放测试了。
由于 talk 的时间限制,PPT 上对很多部分都是简单带过了,这里想稍微细节展开讲一下,也算是对来 NIO 以后工作的一个总结。
一晃又就快 1 年过去了。
1 年间感觉世界发生了很多变化,技术方面,感觉我们这边是每个月都在 rush 新东西。
前段时间 TESLA 说他们要比之前说的纯视觉方案要走的更加极致了,连近距离的毫米波雷达都要取消了。惊叹于他们对自己技术实力的自信(和他们的胆子是真的大啊)的时候,也确实挺让人好奇这两年间 TESLA 的 FSD 有了什么样的改进。
自工作以来荒废了好久了,我又开始写博客啦~(不知道这一次能坚持多久…)
最近在比较多的帮团队面试,因为我们这边主要是 focus 在 AI 编译栈以及更偏底层一些的算子实现方面的工作,在面一些编译方向的候选人时,我这边最后一关通常是让他们写一个高效的矩阵乘的实现。
然后结果一直都没有遇到能写出来让我觉得还可以的人…唉,是我要求的太高了吗?
最近 NV 刚发布了新架构的 GPU,自之前理过 Intel CPU 的架构变化 后再来理一下 GPU 的。
硬/软件接口那篇有介绍过 GPU 的结构,当时也是以 Fermi 架构为例的,NV 很有意思的是会用一些历史上杰出的科学家的名字来命名自己的硬件架构。
总体上,NV GPU 用到的 SIMT 基本编程模型都是一致的,每一代相对前代基本都会在 SM 数量、SM 内部各个处理单元的流水线结构等等方面有一些升级和改动。这篇暂时不涉及到渲染管线相关的部分,其他诸如多少 nm 工艺、内存频率提升等等也都先略过,只关注计算相关的硬件架构演进。
这一篇来记一下 TVM 跟语法树 IR 相关的一些内容。
TVM 是在 Halide 的基础上发展而来的一套编译架构。早一点版本的 TVM 其实还能看到 Halide 是作为一个 git 的 submodule 放在 TVM 目录里的,当时 TVM 自身的代码中还有一个 HalideIR
的 namespace,也有不少的结构是直接继承了 Halide IR 里的内容:
1 | ... |
还是应该多写东西,感觉离开学校以后写的越来越少了,真是惭愧。
之后的工作有很多是要跟神经网络的编译执行相关,准备继 TF 拆包之后再来记一下我对 TVM 的探索过程。这个系列的坑会开多久也不一定,毕竟之前 TF 的其实也只做了一点点微小的工作,还有很多方面的内容没有看,另外 TF 要更到 2.0 之后可能有不少地方已经有一些变动了。
(也许有空也会看一下 XLA 吧,不过那个应该是要合到 TF 的拆包系列里面去了)
一些基础的背景可以见前面一篇对 TVM 作者一门课的课程记录:【CSE 599W: Systems for ML】
生活总是不知道会在什么时候给你点“惊喜”。
过去的一年间发生了挺多事情的,对我自己来说有好事也有坏事,上上下下大起大落,最开始的计划被一次次地打乱,每一次都算是艰难的抉择吧。
看了下博客也有半年没更了,更让我觉得惊讶的是上一次挂了“随笔” tag 的居然已经是2年前了(可见这两年读研生涯中我是多么正经…),准备来理一理过去这大半年的流水账。