今年对我而言十分特殊,因为某种意义上来说,这是我经历的第一个,在异国他乡的完整的一年。此刻我正坐在悉尼的家中,整理着今年发生的事情。如果说2024年10月带来的一个新的开始,那今年最主要的事情,就是在完成研究的同时,过好每一天的生活

日常的改变

这应该是最大的变化了😂相比较于本科时期,一年两学期,以7月和8月为明显分界的日程安排,在UNSW读Master of Philosophy的日程则没有这么明显的分界,这主要是由两个因素构成:首先是UNSW的三学期制,1个学期差不多10周就结束了,本身的节奏速度就很快(但听说2027年要改回两学期?那应该还有机会可以见到),其次是Master of Philosophy本身的特性,核心工作还是围绕Research展开,但UNSW要求还需要选择上两门课,我的方案是25T1上COMP9311(数据库理论),25T2上COMP9313(大数据),上完课后还可以做Tutor工作赚点生活费,因此总体来说还不错。

而对于作息时间而言就没那么好了😂虽然在尽力维持,但没有早八,且不是封闭校园的情况下,人很难在7点钟起床,并在8点前完成工作准备——但凡洗漱,做早餐,吃早餐磨蹭下,可能就得8点半才能完成整备。而这还不算完,经常是早上工作一整子,人就犯困躺到床上了,再醒来可能是10点,11点了,没忙活多久就又要准备午饭了。如果午休再睡长一点,那么上午和晚上基本就废了——这进一步导致晚上熬夜,从而变成一根筋两头堵😅当然,这并不是正常情况,如果当天要开会或去做Tutor,还是会提前一天做好准备,准时到场履行职责的。

如果说还有什么改变值得说道的话,就是采购和做饭。今年前半年住在悉尼西北边的Sydney Olmpic Park,住的很舒服,但采购得踩单车骑行2km到Rhodes的Coles,而后半年住到南边后,出门就是ALDI和WWS,采购就顺利很多。三餐没什么特殊情况的话,基本都是自己做——这一点我还是挺怀念本科时期的食堂😥至少进去就有的吃,不需要在备菜上消耗大量时间,稍不留神一天的工作就变成了吃饭和睡觉🥲则种状态持续几天,人就会变得很颓废,因此需要尽量避免

当然锻炼还是不可少的,今年大多还是以骑自行车为主,一天出去1-1.5小时送外卖,或者是到海边吹吹海风,到公园绕圈子。但这种方式的卡路里消耗并不是很高,所以年末又改回了长跑。

IMG_20251231_181302

研究&Coding

研究算是进入了正轨,但论文确实没啥产出——虽然这点在意料之中🧐确实也不应该期待有啥特别大的惊喜

CMU15799

Andy今年这门线上课棒极了👏推荐所有做数据库引擎的人都过来看看

OPTIMIZE!A Journey Through Database Query Optimization

其主要内容是介绍数据库优化器的构成,当时我一月份得知这个消息的时候,我就决定一定要全部看完,但可惜录像只到3月份,后续的录制应该是没机会看到了🧐

VLDB25

今年印象最为深刻的事情,应该是9月份去伦敦参加VLDB25,线下面基了Andy,Neumann等一众大佬,以及DuckDB的工程师,还有国内的各路研究团队

IMG_20250905_130257

DuckDB还在会场外开了一个活动,讲DuckDB这段时间的发展

IMG_20250904_194504

会议结束后去了布莱切利庄园(Bletchley Park),熟悉二战历史,阿兰·图灵(Alan Turing)以及KARDS牌佬应该对这个地方不陌生🧐

IMG_20250906_114325

如果非要说什么遗憾的话,就是当时竟然没有写一篇Blog记下会议见闻🤔现在就算想写,一些细节也有些不太清楚了

博客回顾

文章评价

今年博客产出挺高的🤓笼统算了下将近20-30篇,由于年初平均每周读一篇论文,所以一大半论文内容都是较为枯燥的数据库论文分析,这种输出持续到5-6月份,因为各种事情被迫中断

其实事后进行回看和反思,会觉得当时写的too young too naive,而这些论文普遍注重工程实践,时间和精力都不允许我从头进行分析,输出的内容价值其实并不高。因此在2026年的一段时间内,应该不会再写论文分析类的Blog了

在论文分析之外,其他更新主要与DuckDB,MLIR,以及年末新换的Mac Mini相关。DuckDB确实很有意思,不论是工程还是学术上都有可取之处😁而MLIR这块就比较一言难尽,因为其框架庞大,而且更新迅速,外加并不是用MLIR做AI编译器相关的事情,所以时常会出现一些难以理解的问题——时间证明,这些问题是可以通过多加训练使用得到解决的

不知道是不是错觉,感觉今年博客的评论反馈要比前几年多且有价值😘这里要谢谢各位愿意评论的朋友,让我知道我写的内容确实有人在看

页面改进

现在这套Blog框架是去年12月从Hexo转到Astro(自己做的Astrofly),本来是想着有时间自己进行调整,但由于忙于工作,基本没做什么变动,更多的还是在刷Astro的版本号(从5.1.1更新到6.16.6),以及对于Blog生成脚本的一些调整。

我想如果没什么意外的话,2026年应该也不会有什么特别的调整,如果没有外部贡献者的话,估计这个框架不会迎来正式发版了

思考议题

IR,语言,巴别塔和Transformer

这是我在看大语言模型(LLM)和MLIR时,不由自主想到的东西。如果硬要说有什么联系的话,应该是LLVM IR和Transformer中Embedding向量都承担着一个中间表示的工作。这冥冥之中是否存在某些形式上的统一?

我倾向于认为是存在这种统一,区别只在于人们不会用向量表示LLVM IR——而不这么做的原因,更多还是因为LLVM IR存在可读懂可解释的可能,而直接读懂并解释Embedding向量的可能性几乎不可能——除了做机器学习可解释性研究的人,应该没人会去尝试去这么做

Metadat元信息:描述信息的信息

Metadata是数据库不可或缺的一部分,这是一类描述信息的信息,比如索引Index,物理计划Physical Plan的代价Cost,表Table的数据大小以及数据格式,冷热数据情况等等。我时常在想这里面是否存在某些套娃情况:为了存储这些Metadata,需要更多的Metadata去记录这些Metadata。

这个问题,在我回顾完编译器的工作后有了解释:多级索引这种事情并不罕见,最典型的就是内存当中的页表,而事实上,不少数据库索引Index也确实是多级机制。

基于上面这个问题,那么接下来就会有个看起来很傻的问题:数据库的Metadata是否存在/发展出多级Metadata的形式?

对此我不太确定,可能是我见得少,我好像没看到好像有什么产品这么做🤔(DataLake好像是这样子?)

工程的局限性

本部分内容偏复读机😜你也可以视作博主是在发某些牢骚罢了

在看了诸多论文并付诸实践后,我愈发感到工程在时间和空间上的局限性

这里举两个可能不太恰当的比方:没人会记得300年前哪个师傅能打造出最好的马蹄铁与其相对应的打铁流程,正如高级文明不会记录钻木取火的技巧一样

发生这两种事情的原因很简单:现代人几乎不用马车,而即使是现在,除了学习野外求生的人,应该也没多少人会钻木取火

从长远视角来看,我们都是死人。因此,我认为任何工程实践的优先目的,是服务当下和可见时间的预期

对于这点,如果没有性能要求,绝大多数程序员肯定优先用脚本类(Python/JavaScript)完成工作,不会有人愿意去用Rust和C++

有性能要求也不一定😂只要把运行库改用Rust和C++写就OK

而基于这个前提,哪怕是一个事倍功半的工作,只要能证明对现实有益,那么也不是不能接受😜

而这样的工作,在计算机科学领域甚至不算新鲜事

比如下面这个华为CANN的巨大算子

image-20251231222143579

我不清楚华为的工作人员为了搓这个算子花了多少时间😅这工作量肯定不是根据图的遍历,融合一两个算子那么简单的事情,但这玩意但凡能搓出来的话,大家肯定乐意用——反正就在库里头,不用那不就白费了AI编译器工程师掉的头发么😂

2026展望

目前已知的事情有:

  • 我会在2月份的LLVM-CGO Workshop做报告,届时会去HPCA/CGO/PPoPP/CC看看有什么好玩的东西🤓

希望能顺利发生的事情:

  • 在1月中旬顺利写出毕业论文——这很重要!关系到未来几年的工作是否能顺利进行
  • 再投一篇Workshop——思路还不太明确,但相信DDL前一定能改出来

结语

一不留神又写到了2025年的最后一个23:00(去年也是写到这个时间,但当时人在+8时区)😂今年发生的事情感觉写上两天都不是问题,看来明年的总结要多留些时间进行整理

关于标题

今年的标题其实有些难产,最初我想到的是“疯狂世界与自由意志”,今年确实干了不少往年只存在于想法的事情,虽然有些曲折,但总体的气氛并没有往年那么压抑,从描述上也没那么疯狂。但要说日子平静普通,满足于生活日常,那也谈不上,相反工作非常紧凑,以至于一些本该前些月发的Blog积压到12月底才发出。

最后想到一个词:向内生长。相比较于达成工程的完美,及时审视自己的情绪、价值观和真实需求,会有助于未来的研究与工程以一个积极的态度进行开展。在此期待明年工作顺利🫡