分享
AI Infra 面经指北
输入“/”快速插入内容
AI Infra 面经指北
用户5476
用户5476
9月26日修改
•
算子优化工程师:“计算机基础,CUDA编程*,算子及算子优化”相关知识。(CUDA: GEMM矩阵乘,写的性能超过pytorch,)
•
通信优化工程师:“计算机基础,算子及算子优化”相关知识,另外还有网络,集群相关知识。(ray attention)
•
模型优化工程师:“计算机基础,常见模型,模型推理”相关知识。(Deekseepv3.2 v4, Kimi(KDA, attn res), Qwen)
•
框架开发工程师:“计算机基础,常见模型,模型推理,推理框架”相关知识。(vllm, sglang, nanovllm, suffix cache )
•
异构/芯片工程师:GPU、昆仑芯、寒武纪 | risc-V; prefill decode | tpu (risc-V, 会看硬件,能分析硬件,会写不同硬件的算子)
•
虚拟GPU
•
虚拟异构平台
计算机基础
主要知识点:
1.
C/C++:运行时多态,函数与类模板,函数重载,内存泄露的场景,内存的栈/堆/静态存储区,inline 函数与宏,常见关键字 (static/const/explicit),智能指针,STL相关(vector/map),Lambda表达式,常见模式设计(模板模式,单例模式)。
2.
数据结构:栈,队列,常见排序算法,二叉树,链表(环形,反转,合并,相交),图,哈希。
3.
操作系统与硬件相关:线程与进程相关(线程安全,线程共享,锁,信号量,条件变量,OpenMP使用),内存的页管理,调度算法,流水线原理,Cache机制,中断等。
比如常见面试题:
•
虚函数表和虚函数指针的作用?
•
为什么会在多态中将析构函数设置为虚函数?
•
C/C++ 中常见的内存泄漏场景有哪些?
•
循环引用为什么会导致内存泄漏?
•
函数中局部变量是堆内存还是栈内存上?
•
inline 函数与宏的区别。
•
static关键字结合单例模型提问,比如单例模式中static关键字起到什么作用,如何使用?
•
stl中像vector如何扩容,map 与unordered_map*各自用什么数据结构表达。
•
栈与队列的考察常常来源于leetcode,比如如何用栈实现队列功能。
•
排序算法中,快排的实现思路,为什么他的时间复杂度是O (nlogn)。
•
二又树的前序/中序/后序遍历,如何使用递归或者非递归实现。
•
比如进程与线程中资源问题,哪些是线程独有,哪些线程共享,以及两者区别。
•
互斥锁 mutex 的作用,死锁的4个必要条件?
•
自旋锁 spinlock*与互斥锁区别,有哪些使用场景。
•
Cache机制的作用是什么,为什么会快,有哪些映射方式,Cache 一致性问题是什么?
太多了,很多与AI部署的原理相关,也有很多与HPC*相关。
现代Al Infer系统级优化,软硬协同优化思想都离不开这些基础知识作为依托。
比如VLLM*中 Paged Attention优化方法来源于操作系统页管理思想。
比如SGLang中的HiCache*的KVCache缓存策略的思想来源CPU上L1,L2,L3的Cache机制。
无论是机器学习时代,CNN时代,还LLM时代,AI落地的工程化核心思想都来源于计算机基础。
CUDA优化
比如常见面试题:
1.
shared memory*的优化原理,与使用场景。
2.
线程洗牌(shuffle)的使用场景。
3.
thread/block/grid的关系。
4.
几个内存关系:global/constant/texture memory。
5.
同步,流,以及事件的使用。
6.
bank冲突,以及如何优化。
算子及算子优化
比如常见面试题:
1.
flash attention*的实现原理,flash-attention-v1/v2以及flash-decoding 的区别
2.
ffn 模块的主要流程,比如silu 激活函数,为什么 ffn 中要升维再降维等。
3.
moe模块的主要流程,比如,router模块为什么以token为单位选择路由专家。
4.
rope的计算逻辑,以及各类长文本扩展方案,比如sliding window, Yarn,DynamicNTK等。
5.
Sample的主要算法:topK,topP,beam search, argmax,温度的作用。
通信相关
比如常见面试题: