记上周面试一小伙的全过程~ AI推理优化方向

上周,领导给了我一份简历。

领导:熊猫,这里是一个来自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人保证质量,帮助短时间掌握秋招面试重点、方向、题目,以及批注简历,将在后面几天正式推出!这都解决不了小小面试的话,我是不太信的

全部评论
大佬,请问1 < query len < keyvalue len是什么场景呢?
点赞 回复 分享
发布于 08-14 20:55 上海
大佬,开课社招可以听吗?想转AI推理优化方向
点赞 回复 分享
发布于 08-21 12:06 上海
太强了,这老哥这水平能到sp吗
点赞 回复 分享
发布于 09-01 13:10 安徽

相关推荐

#大模型训练##WLB#组内直招,坐标联想研究院ICI&nbsp;lab,薪资满意和WLB都能满足,欢迎大佬投递。简历可发邮箱liaodc5@lenovo.com岗位职责: 1.&nbsp;负责设计高可用大模型训练容错系统,支持千亿大模型预训练 2.&nbsp;负责大模型训练容错checkpoint优化,提升大模型checkpoint读写与恢复性能 3.&nbsp;负责大模型弹性训练框架的研发 岗位要求: 1.&nbsp;全日制硕士以上学历,计算机科学与技术、人工智能等相关专业; 2.&nbsp;熟练C++/Python语言、数据结构以及计算机系统结构,有AI模型性能调优经验,以及良好的工程实现能力; 3.&nbsp;熟悉&nbsp;AI&nbsp;领域常见的分布式训练技术,包括但不限于:数据并行、流水线并行和张量并行等,具有相应的项目经验; 4.&nbsp;至少熟悉一种AI框架(PyTorch/TensorFlow/Paddle/DeepSpeed等),能够熟练使用和调试; 5.&nbsp;熟悉&nbsp;GPU&nbsp;硬件结构和&nbsp;CUDA&nbsp;计算原理,有&nbsp;CUDA&nbsp;相关算子开发、调试经验,对&nbsp;NCCL/cuDNN&nbsp;等有一定了解; 6.&nbsp;对大规模预训练模型有较好的了解,熟悉常见的预训练模型(如GPT、BERT等)结构、训练方法和优化技巧。 7.&nbsp;具备出色的问题解决能力和创新思维,能够分析和解决复杂的训练问题,并提出改进和优化的方案; 8.&nbsp;具有良好的团队合作精神,能够与跨部门的团队紧密合作,共同推动项目的成功。 加分项: 1.&nbsp;有大模型研发和分布式训练经验 2.&nbsp;熟悉Kubernetes架构以及大模型训练容错系统 3.&nbsp;在AI或者HPC领域发表过高水平论文
投递联想研究院等公司10个岗位
点赞 评论 收藏
分享
评论
9
30
分享
牛客网
牛客企业服务