【暑期实习】蚂蚁 AI Infra 三面复盘

这一轮更偏大模型、量化和推理基础理解

这场蚂蚁 AI Infra 三面,整体感觉和前两轮又不太一样。前两轮更多是在深挖我已经做过的项目,这一轮虽然也会问项目,但明显更关注我对大模型推理、量化、KV Cache、attention 这些基础问题到底理解到什么程度。开头还是先做自我介绍,我主要讲了自己现在在做的几个方向:一段偏工程化的软件开发经历,一段偏算子和图优化的实习经历,以及自己在做的一个基于 Python extension 的量化推理 runtime 小项目。

这一轮项目部分问得相对直接。面试官先让我展开讲了自己做的那个量化推理 runtime。我这边讲的是,基于一个开源 runtime 做了一些修改,把一个 8B 量级的模型做了 W4A16 量化,也就是权重量化成 Int4,激活保持 FP16,然后让它能够在一张显存比较小的消费级显卡上跑通前向。这里他继续追问的重点不是“有没有跑起来”,而是你到底做了哪些改动、量化到底落在了哪一部分、精度掉了多少、用什么数据集测的。这个地方能感觉出来,对方其实是在确认你是不是只会复现,还是对整个量化链路真的有理解。

后面又回到了我在实习里做的事情,问得还是比较聚焦。我讲了三个比较核心的点,一个是完善了一条融合链路和相关高性能库接入,一个是定位并修复了整网长跑中的稳定性问题,一个是设计并合入了一个轻量级的 timing 工具,用来快速分析 kernel 时间开销、判断瓶颈方向。这里我自己的感觉是,三面不会像前两面那样特别展开去抠某一个 bug 的链路细节,而是更想知道你做这些事情背后的方法论是什么。比如你这个 timing 工具为什么有用,它解决的不是“能不能测时间”这么简单,而是让你在 profiling 工具没那么成熟的时候,先快速判断一个算子更偏 latency bound、memory bound 还是 compute bound,再决定后面往哪里优化。

然后问题开始明显往大模型基础理解上走。比如他会接着问,除了自己做过的 W4A16,你对 INT8、FP8 这些业界更常见的量化方案了解多少。这里我回答得相对中规中矩,主要是讲了 FP8 的两种常见格式、它在训练和推理里的不同适用性,以及为什么很多量化方案最后还是会在速度和精度之间做折中。接着又追问到了更细一点的点,比如 KV Cache 怎么算、为什么大模型推理里需要 KV Cache、attention 本身怎么理解、为什么 attention 往往比权重更难量化。这里能感觉出,对方其实是在看你是不是真的把 Transformer 推理过程想明白了,而不只是停留在几个术语上。

KV Cache 这一段我自己的感觉是,问得其实挺基础,但也挺容易暴露理解深度。比如怎么算 KV Cache 大小,背后其实就是 batch size、序列长度、head 数、head dim、层数、数据类型这些量一起决定的;再比如为什么需要 KV Cache,本质上是为了避免每次生成新 token 时都重复计算历史 token 的 key/value,把前面已经算过的部分缓存下来,减少重复开销。这种问题不一定难,但如果平时只是“知道有这个东西”,没真正往推理路径里去想,就会答得比较虚。

另外他还单独问到了 attention 怎么理解,以及为什么 attention 相关的量化更难做。我当时的回答还是比较偏直觉:attention 对数值分布更敏感,里面又有 softmax 这种对精度很敏感的步骤,所以很多时候大家更愿意先从权重或者 KV Cache 下手,而不是直接把 attention 这部分压得太激进。现在回头看,这个方向本身没错,但如果能把数值稳定性、动态范围、误差放大这些点说得更清楚,应该会更好。

整体下来,我觉得这场三面不像前两轮那样特别强调“你做了哪些优化”,而更像是在确认:你做过这些事情之后,对大模型推理这条链路本身到底理解到了什么程度。项目经历还是重要,但更重要的是你能不能从项目里抽出来,去回答更泛化的问题。对我自己来说,这一轮答得比较顺的是自己做过的量化项目、工具开发、以及一些工程实践上的东西;相对一般的是大模型推理这部分基础虽然知道一些,但还不够扎实,尤其是 KV Cache、attention、量化策略这些地方,如果后面继续面更深一点的 infra 岗,还是得系统补。整体氛围上,我感觉这一轮结束之后大概率已经接近流程尾声了,面试官也提到如果通过,可能就不再需要 HR 面。

#面试复盘##蚂蚁##三面##实习##ai infra#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务