Chenfan Blog

Do cool things that matter.

0%

自工作以来荒废了好久了,我又开始写博客啦~(不知道这一次能坚持多久…)

最近在比较多的帮团队面试,因为我们这边主要是 focuse 在 AI 编译栈以及更偏底层一些的算子实现方面的工作,在面一些编译方向的候选人时,我这边最后一关通常是让他们写一个高效的矩阵乘的实现。

然后结果一直都没有遇到能写出来让我觉得还可以的人…唉,是我要求的太高了吗?

Read more »

最近 NV 刚发布了新架构的 GPU,自之前理过 Intel CPU 的架构变化 后再来理一下 GPU 的。

硬/软件接口那篇有介绍过 GPU 的结构,当时也是以 Fermi 架构为例的,NV 很有意思的是会用一些历史上杰出的科学家的名字来命名自己的硬件架构。

总体上,NV GPU 用到的 SIMT 基本编程模型都是一致的,每一代相对前代基本都会在 SM 数量、SM 内部各个处理单元的流水线结构等等方面有一些升级和改动。这篇暂时不涉及到渲染管线相关的部分,其他诸如多少 nm 工艺、内存频率提升等等也都先略过,只关注计算相关的硬件架构演进。

Read more »

这一篇来记一下 TVM 跟语法树 IR 相关的一些内容。

TVM 是在 Halide 的基础上发展而来的一套编译架构。早一点版本的 TVM 其实还能看到 Halide 是作为一个 git 的 submodule 放在 TVM 目录里的,当时 TVM 自身的代码中还有一个 HalideIR 的 namespace,也有不少的结构是直接继承了 Halide IR 里的内容:

1
2
3
4
5
6
7
8
...
using HalideIR::Type;
using HalideIR::Float;
using HalideIR::Bool;
using HalideIR::Int;
using HalideIR::UInt;
using HalideIR::Handle;
...
Read more »

还是应该多写东西,感觉离开学校以后写的越来越少了,真是惭愧。

之后的工作有很多是要跟神经网络的编译执行相关,准备继 TF 拆包之后再来记一下我对 TVM 的探索过程。这个系列的坑会开多久也不一定,毕竟之前 TF 的其实也只做了一点点微小的工作,还有很多方面的内容没有看,另外 TF 要更到 2.0 之后可能有不少地方已经有一些变动了。

(也许有空也会看一下 XLA 吧,不过那个应该是要合到 TF 的拆包系列里面去了)

一些基础的背景可以见前面一篇对 TVM 作者一门课的课程记录:【CSE 599W: Systems for ML】

Read more »

生活总是不知道会在什么时候给你点“惊喜”。

过去的一年间发生了挺多事情的,对我自己来说有好事也有坏事,上上下下大起大落,最开始的计划被一次次地打乱,每一次都算是艰难的抉择吧。

看了下博客也有半年没更了,更让我觉得惊讶的是上一次挂了“随笔” tag 的居然已经是2年前了(可见这两年读研生涯中我是多么正经…),准备来理一理过去这大半年的流水账。

Read more »

2019 第一篇!

也是去年年底的时候心血来潮写的这个小东西:

中间断断续续往里面补了一些功能,修修 bug 什么的,然后就很久没有再管过了。

虽说一开始想要的本来不是个能写 GraphViz 的文本编辑器,结果写到最后还是写成了个文本编辑器。

话说 vscode 里面的 GraphViz 插件其实也挺不错的,

结果我自己平时还是觉得用这个更顺手哈哈

Read more »

前篇:

不知不觉居然写了十篇了……写这个的初衷是觉得自己是个容易忘事的人,不找个地方做点笔记可能回过头就忘了自己看过什么了。

这篇要分析的是 TensorFlow 自带的 Allreduce 实现。

Read more »

这个月十几号的时候索尼发了篇论文,224 秒跑完了 ImageNet……想想大概去年的这个时候还是 Facebook 和 UCBerkeley 在 ImageNet 的大规模方面你争我赶,不得不感叹时间过得真快。

去年毕业开题大概开的也是这个方向,然后前段时间面试的时候:

面试官:你最近做了什么?

我:我 follow 了 FB 和 UCB 他们在 ImageNet 上做训练的工作,大概试了下他们论文里面的想法。

面试官:哦,那你最多用到多少卡?

我:e……最多跑到 16 块 V100。

说完这句自己突然感到一阵尴尬,人家工作多少块卡我多少块卡?真好意思说复现……(捂脸)

然而我也没办法啊,实验室资源已经算不少了,我还想拿一块卡假装模拟两块卡用呢。0.0

Anyway,趁着正好要读大法的论文,把之前其他人的东西都理一理。

Read more »

前篇:

这篇来研究一下 TF 中的一些高级 API。

TensorFlow 由于一直是在开源的社区环境中发展起来的,早期的一些 API 都比较简单粗暴(更直白地说就是不那么好用),以至于在它之上封装的更友好的 Keras 可能在大部分的使用者群体中会有更高的出现率。后来的 TensorFlow 中也有吸收 Keras 里面一些比较好的结构,有出现像 tf.layers 这样的更高层封装,可以期待一下 2.0 以后会不会大幅优化上层的编码 API 吧。

那这里说的高级 API 是什么呢?

Read more »

国庆在家闲不住想干活系列……

本篇的内容是陈天奇大佬今年春季在华盛顿大学开的一门课

大佬是上交 ACM 班的本硕,虽然目前还在 UW 读博中,但是在机器学习圈子里面已经有了很高的名望了,他的 MXNet 和 XGBoost 相信很多人就算没用过也肯定听说过(比如我就没用过…)。前段时间他发布的 TVM 也算是开启了深度学习和系统方面探索的一条新道路。

课程介绍上讲的是这门课的目标是填上深度学习算法和系统的实现以及优化之间的 gap,粗略地翻了一下 PPT,后面也有比较多的篇幅是介绍 TVM 的,正是我想了解的!

没找到课程的视频,但是 PPT 可以在上面的课程链接或者这里找到。

Read more »