AI Infra一面面经
完整信息
本篇目录
问题复盘
- 多卡经验与训练耗时:单个算子在完整链路里占多少
开场先确认了多卡和多节点经验,以及实际使用的训练硬件。
随后问到,是否分析过模型训练的详细耗时,例如 Attention 前向、反向分别占多少。
我主要介绍了自己参与的算子优化,也说明任务通常由主管对接需求后分配。对于完整模型的性能拆分,当时掌握的信息比较有限。
这部分提醒我,项目准备需要同时保留两层证据:单个算子怎样测量,以及它在完整训练或推理链路里占多少。自己没有参与的多机策略和系统设计,也需要明确边界。
- FlashAttention 与硬件架构:优化机制和引入代际要准确
随后问了不同版本 FlashAttention 的区别。
我主要从算子融合、分块、生产者与消费者分工,以及计算和数据搬运重叠来展开。面试官继续追问:
Tiling 具体做了什么;
为什么分块能够减少搬运;
分块之后是否就不需要反复搬数据;
Blackwell 与 H200 有哪些架构差异;
Tensor Core 是否是 Blackwell 独有的。
现场能说出一些优化关键词,但对具体代际归属和硬件能力的解释不够准确。
后续需要把算法、并行组织和硬件机制分别梳理,再说明它们怎样配合。尤其是“减少了哪些中间结果的读写”“哪些数据仍然需要加载”,应该能对应到具体数据流。
- RL 链路卡死:先说明故障现象,再讲排查证据
项目部分聊到了 RL 链路中的卡死问题。
面试官先问具体表现:程序是否退出、运行状态有什么变化,以及它和训推一致性是什么关系。
我介绍的排查过程是,先根据原运行配置缩小复现规模,再对照:
CUDA Graph 开启与关闭;
不同 TP 配置;
确定性设置;
不同 Graph 执行模式。
根据现象变化,逐步缩小到与融合通信相关的路径,再检查对应实现。
这部分需要把故障发生的场景与故障类型说清楚。运行在 RL 链路里,并不等于已经解释了它与数值一致性的关系;每一步判断都需要对应复现结果。
- 性能分析与 warp:指标含义和执行机制都会被追问
面试官问了算子优化使用哪些工具。
我介绍了 Nsight Systems、Nsight Compute,以及用 Perfetto 查看 trace 的经历。随后继续问:
NCU 中重点关注哪些指标,各代表什么;
怎样判断计算或访存瓶颈;
SM 利用率偏低时,下一步检查什么;
warp 有什么特点;
warp divergence 是什么;
为什么不同线程不能简单地独立执行各自的分支。
我现场主要围绕缓存、SM 利用率、融合和同步等待来解释,但指标与瓶颈之间的推导不够完整。分支发散也主要描述了部分线程没有执行,底层原因没有讲透。
后续需要把指标定义、实际访问模式、同步依赖和执行机制连起来,避免看到某个百分比,就直接决定优化方向。
- 工作协作:版本、使用范围和验收怎样对齐
面试官问了实习中最大的挑战。
我主要讲了跨训练、推理等方向协作时的版本差异,以及需求、使用范围和验收条件怎样对齐。
对方继续追问:既然任务由 mentor 对接和分配,为什么沟通仍然是挑战?具体怎样解决?
我介绍了自己在讨论和汇报中遇到的问题,以及后来通过 mentor 协调、提供必要数据并明确任务边界的做法。
这部分需要准备具体例子:哪项信息没有对齐,影响了什么,自己补充了哪些证据,最后由谁确认。这样才能把“沟通困难”讲成一个可以判断的工程问题。
- 在线编程:岛屿数量与 DFS/BFS 的复杂度
最后是在线编程。面试官提供 CUDA 算子和算法题两类选择,我选择了算法题,内容是二维网格中的岛屿数量。
现场主要思路是 DFS:从陆地出发,沿四个方向搜索并标记访问,再统计连通块数量。
实现时还在处理输入和数据结构。录音末尾,面试官追问方案是否最优,我开始比较 DFS 与 BFS,但没有清楚说明复杂度。
事后复盘,这题的主线应该是:每遇到一块未访问的陆地,计数加一,并遍历标记整个连通块。DFS 和 BFS 都可以做到每个格子只处理有限次,时间复杂度为 O(mn)。两者还需要分别考虑递归深度或队列空间,不能直接把 BFS 当作更优方案。
这段录音没有确认完整代码和测试通过情况,因此不把它写成已经完成验证的题目。
总结与反思
这场暴露出的主要准备缺口,是硬件和算法机制的准确解释、性能指标的使用依据,以及代码实现的完整性。
后续会重点补三块:
FlashAttention 各代优化与 Hopper、Blackwell 硬件能力的对应关系;
warp 执行、分支发散,以及 NCU 指标到瓶颈判断的过程;
DFS/BFS 的完整实现、边界检查和复杂度分析。
项目方面,也会补齐完整链路的耗时背景,让单个算子的优化收益有清楚的位置和验证条件。
#27届秋招#禾赛科技 #AIInfra#FlashAttention #CUDA#GPU性能优化 #面试复盘#牛客AI配图神器#
本篇目录
当前问题0119
- 01
开场先确认了多卡和多节点经验,以及实际使用的训练硬件。
- 02
是否分析过模型训练的详细耗时,例如 Attention 前向、反向分别占多少。
- 03
随后问了不同版本 FlashAttention 的区别。
- 04
Tiling 具体做了什么;
- 05
为什么分块能够减少搬运;
- 06
分块之后是否就不需要反复搬数据;
- 07
Blackwell 与 H200 有哪些架构差异;
- 08
Tensor Core 是否是 Blackwell 独有的。
- 09
程序是否退出、运行状态有什么变化,以及它和训推一致性是什么关系。
- 10
面试官问了算子优化使用哪些工具。
- 11
NCU 中重点关注哪些指标,各代表什么;
- 12
怎样判断计算或访存瓶颈;
- 13
SM 利用率偏低时,下一步检查什么;
- 14
warp 有什么特点;
- 15
warp divergence 是什么;
- 16
为什么不同线程不能简单地独立执行各自的分支。
- 17
面试官问了实习中最大的挑战。
- 18
既然任务由 mentor 对接和分配,为什么沟通仍然是挑战?具体怎样解决?
- 19
二维网格中的岛屿数量。
