AI infra 人才库面经总结

ai infra八股:
1- 给定训练所需的Tokens,怎么估计模型训练所需的完整时间?
2- Prefill和Decode阶段各有什么优化技术?
3- 什么是Two-batch overlap,什么场景Two-batch overlap是负优化?
4- megatron-lm中通信优化怎么做?
5- 多机PD分离会有KV cache transfer开销,为什么还要做PD分离?
6- muon和AdamW的pretrain和posttrain为什么不能混用?
7- 如何看待跨SM的PD分离和AF分离?
8- cuda的global memory和shared memory访存分别需要注意什么?
9- deepseek-V3的优化点
10- deepseek-DSA和NSA,MoBA的区别
11- nccl中的通信源语有哪些?all-reduce参数更新一次参数需要几次通信?
12- 在小数据量场景使用NVSHMEM,每个GPU直接读取其他GPU的数据,在本地reduce,相比ring all-reduce的好处
13- 训练时如何设计超长序列下的并行
14- 将Ampere架构的算子适配到Hopper架构的卡上,你会对哪些地方进行升级改造?
全部评论
1. 训练时间估算 时间 ∝ 总FLOPs / (算力FP8/FP16 × 利用率) 总FLOPs ≈ 6 × 参数 × Token数 再除以单卡算力、并行数、利用率,就是时长。 ​ 2. Prefill / Decode 优化 ​ - Prefill:长序列并行、FlashAttention、分块、算子融合、向量化 ​ - Decode:KV cache、连续Batch、PagedAttention、Speculative Decoding ​ 3. Two-batch overlap ​ - 同时跑两个微批次,计算/通信重叠 ​ - 负优化:计算太快、通信太小、显存不够、调度 overhead 盖过收益 ​ 4. Megatron-LM 通信优化 TP+PP+DP三维并行; 重叠通信计算; 分桶AllReduce; 激活重计算; 减少跨节点通信量。 ​ 5. PD分离(PP+DP)为什么要KV transfer 为了流水线+数据并行一起用,提高吞吐; 虽然有KV拷贝成本,但整体能堆更大Batch、更高利用率。 ​ 6. MuON / AdamW 不能混用 优化器状态、动量、更新逻辑完全不兼容; 预训练用一个,微调换另一个,状态不匹配,直接训崩/不收敛。 ​ 7. 跨SM PD / AF 分离 核心:拆任务、提高 occupancy、隐藏延迟; PD:并行度拆分更干净; AF:聚焦注意力/前馈访存与计算重叠; 看模型结构、Kernel瓶颈选。 ​ 8. CUDA Global / Shared 注意 ​ - Global:对齐、连续访问、合并访存、少随机读、用L2缓存 ​ - Shared:防bank conflict、分块复用、同步_sync、容量控制 ​ 9. DeepSeek-V3 优化点 高效架构+长序列支持; 优化Attention/FFN计算; 更好的并行策略; 推理侧低延迟高吞吐。 ​ 10. DeepSeek-DSA/NSA/MoBA ​ - DSA:领域稀疏注意力 ​ - NSA:神经稀疏注意力 ​ - MoBA:混合专家注意力 核心都是稀疏化、省计算、扩容量。 ​ 11. NCCL 原语 & AllReduce 次数 原语:Send/Recv、Broadcast、Reduce、AllGather、ReduceScatter、AllReduce Ring AllReduce:2次(ReduceScatter + AllGather)。 ​ 12. 小数据量 NVSHMEM vs Ring AllReduce 少了Ring多跳延迟; 直接GPU-GPU读+本地Reduce; 小数据下延迟更低、更简单。 ​ 13. 超长序列训练并行 TP+PP+CP(上下文并行)+ ZeRO; 分块Attention、分块FFN; 激活重算+KV复用; 控制通信量。 ​ 14. Ampere → Hopper 算子升级 - 用TF32、FP8、新指令 ​ - 适配TMA、异步拷贝 ​ - 优化Warp调度、 occupancy ​ - 重写Attention/MatMul,用Hopper专属优化
1 回复 分享
发布于 03-03 11:29 浙江
不是,你这是校招还是暑期兄弟,这么难?
点赞 回复 分享
发布于 03-12 00:03 北京

相关推荐

1.请详细描述你在简历中提到的AI相关项目中,负责的主要模块和核心技术贡献。2.在设计一个高吞吐、低延迟的模型推理服务时,你会重点考虑哪些架构层面和工程层面的问题?3.请解释C++程序内存中栈(stack)、堆(heap)和静态/全局存储区的特点与主要区别。4.在C++中,new/delete`与'malloc/free`的主要区别是什么?为什么在C++中通常推荐使用前者?5.请解释深拷贝和浅拷贝的概念,并说明在什么情况下必须使用深拷贝。6.请阐述C++中'std:unique_ptr、'std..shared_ptr和'std:weak_ptr的设计意图、使用场景及相互区别。7.虚函数表(vtable)是如何实现运行时多态的?虚函数与纯虚函数(抽象类)在语义和用法上有何不同?8.什么是内存对齐?编译器对结构体进行内存对齐的主要规则是什么?请计算一个给定结构体(包含不同类型成员)在特定平台下的sizeof大小。9.请解释C++11中右值引用(&&)和移动语义(move semantics)的概念,并说明它们如何用于实现高效的数据转移(如std.:.vector的push_back)。110.简述CUDA的SlIMT(单指令多线程)编程模型,描述thread、block、grid的层次关系。11.在CUDA内核中,一个线程的局部变量通常存储在何处?这与寄存器的分配有何关系?12.在CUDA优化中,如何使用共享内存(Shared Memory)来减少对全局内存的重复访问?请举一个简单的例子(如矩阵乘法中的分块)。13.什么是warp shuffle指令?它在warp内部的数据交换和规约操作中有什么优势?14.解释在CUDA中使用float4或int4等向量化加载/存储指令进行合并访存的原理和性能收益。15.什么是共享内存的bankconflict?它是如何产生的?请举例说明。16.如何通过数据填充(padding)或其他内存布局调整技术来避免或减轻共享内存访问中的bankconflict?17.解释CPU缓存的工作原理,包括时间局部性、空间局部性的概念,以及常见的缓存替换策略18.编程题:实现一个算法,在一个包含大量整数的数据流中,实时找出出现频率最高的前K个元素。请描述你的思路(哈希表+最小堆)并分析时间复杂度。
查看18道真题和解析
点赞 评论 收藏
分享
评论
8
28
分享

创作者周榜

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