上周,领导给了我一份简历。
领导:熊猫,这里是一个来自xxxx大学的同学,你看看有没有空去面试一下
我:OK,我看一下
(我看了后发现,这同学的简历写的还不错,重点突出,层次分明,虽然一开始是做算法的,但是后面也有几段AI-HPC、AI推理优化的经历,工作内容对于校招生来说还可以,且写的东西都在我的知识范围内,我有信心可以“焦作人”,于是答应了去聊一聊)
--------------------------------------分界线-------------------------------------
时间飞逝到面试时刻。
我:你好,同学!我是XX公司的AI推理加速工程师,花名熊猫,首先感谢你今天参加我们的面试,那我们开始吧(本人对颜值比较有信心,所以摄像头一般都会主动打开),请你先简单介绍一下自己与AI相关的经历吧
候选人:(此处略去2分钟,候选人比较有条例的介绍了简历上自己负责的内容、成果以及对团队的贡献)
我:OK,表达的非常不错哈(介绍的时候,对经历的概括和表达能力其实也是我们团队的一个metric,因为之前有一哥们沟通起来很痛苦,半天都说不清楚他遇到的问题是什么),我注意到你提到你用CUDA写过并且优化过GEMM,取得了还不错的性能,这一点能讲讲具体的优化手段吗?(关于GEMM,本人不爱问,因为太复杂,且实际用不着,但是鉴于现在很多人都爱把它写上去,所以我会来拷打一下)
候选人:我具体用了xxx和xxx和xxx优化手段,(然后介绍了每种优化手段的具体做法)
我:好的好的,听起来很不错哈,那么你能说一下用这三种优化手段的动机吗?或者解决了什么问题?(一般这一块就会体现出候选人之间的区分度)
候选人:xxx主要是解决某某某,xxx应该是解决这个这个,xxx好像是解决那个那个
我:(到这里,我就不再问GEMM了,因为这个动机都不知道,那自然没用问下去的必要了)OK,那既然你写过GEMM了,那float4你知道是个什么类型吗?(逐渐开始简单化)
候选人:噢,这个是一个built-in的向量数据类型,表示4个float数据
我:(穷追不舍)那这个类型在你的GEMM里有用到吗?
候选人:用到了
我:那你用它的原因主要是什么
候选人:增大带宽利用率
我:嗯,增大哪级带宽的利用率
候选人:global memory和shared memory和register
我:嗯,那如果是其它算子,比如你写的xxx,用了float4是否一定会带来性能提升呢?
候选人:嗯,是的
我:你确定吗?
候选人:emmm..我想想,确..定
我:(我对这个答案不太满意,于是转向八股了)那global memory我们在访问的时候,一般需要注意些什么
候选人:这题我会,需要注意xxx和xxx
我:OK,那你看看这几个图,你分别算一下它们的global memory访问效率
[A FEW MOMENTS LATER]
候选人:做好了
我:嗯,还不错,那你知道register spill吗?
候选人:嗯
我:register spill是好事还是坏事,原因是什么
候选人:此处省略n个字
我:嗯,既然如此,一个线程使用的register是不是越少越好
候选人:不是,因为xxxxxx
我:好,那我们来聊一下大模型,我看你也写了一些大模型算子,我对fusedAttention比较感兴趣,你大概介绍一下这个算子的实现方式,不用太具体。(因为他稍微讲讲我大概就知道怎么个回事)
候选人:(此处略去n个字)
我:那你有没有了解过你的这种方法和当下流行方法的gap在哪里
候选人:(此处略去n个字)
我:(我对答案还挺满意,说出了与paged attention和flash decoding的区别,他对attention这一块理解还是比较可以的,对于校招来说已经足够了)(我尝试稍微加大一些难度,探一下对大模型的底)那你有没有了解过1 < query len < keyvalue len的这种场景?
候选人:这个没了解过
我:(没了解过属于正常,但是了解过会脱颖而出)OK,我们再来问问C++吧,你写过cuda应该C++也不算陌生,拷贝构造函数知道伐?
候选人:知道
我:什么时候需要我们自己写拷贝构造函数?
候选人:xxxxx
我:你确定吗?
候选人:确定!
我:(居然没被搞到心态)嗯,那你写一下拷贝构造函数的函数签名吧,假设这个类叫做A
候选人:xxx
我:C++11里面const和constexpr的区别是什么?(这题基本的八股都会背,但是想要答完整答深入挺考验C++功底,才学的人肯定答不深)
候选人:xxxx(勉强还行
[A FEW MOMENTS LATER](聊其它项目经历时间,顺带穿插一些问题,略)
我:嗯,不错,那我们来写一道leetcode,二叉树的最大深度
候选人:xxxx
我:好,感谢同学今天的面试,后续有消息HR会电话通知你哈。
点评
这个同学的基础其实是不错的,C++/CUDA/GPU的一些基础都能答上来,leetcode题也写的七七八八,对写在简历上的项目也能清楚的描述出来,对一些做法的理解也算是比较深刻了,当然也有理解不太深刻的地方,比如GEMM,float4,但是GEMM在我们这里是无所谓了,这个在绝大多数地方实际工作本来也用不到,我这里问一下主要是简历上写了,那我得拷打到你答不出来为止,从而看看你的理解程度,但是float4这儿没答好是一个小缺点,说明对GPU的理解还不太够。我这一面其实我是愿意给√的。
稍微评价一下简历:总的来说除了GEMM,简历上其它东西都能说清楚,关联的一些知识也能答个七七八八,对于校招足够,另外,GEMM是一个双刃剑,你要是真的懂,那面试会加分,你要是个半吊子,那么就完蛋;个人技能别写太细太多,你写的越多越细,问你会越深。
预告
最近,猫哥我正在策划一个面试冲刺强化班,全程直播,持续5-7天,计划先招10人保证质量,帮助短时间掌握秋招面试重点、方向、题目,以及批注简历,将在后面几天正式推出!这都解决不了小小面试的话,我是不太信的