Agent 面试通关 / 17
AI Infra:训练、推理与 GPU 平台工程
AI Infra 不是“给 Kubernetes 加几台 GPU”。模型训练关心吞吐、Checkpoint 和集合通信,在线推理关心首 Token 延迟、批处理和容量水位,Agent 又会带来长上下文、突发 Tool 回调和多模型路由。面试官要看的是你能否把模型特性翻译成资源、调度和 SLO。
本章把 AI Infra 分成训练平台、推理平台、数据与制品平台、资源控制面和可观测/AIOps,而不是把训练与在线服务混在一张架构图里。
Q:如何用 Roofline 和算术强度指导 CUDA 算子优化?从 GEMM 分块到寄存器压力如何逐层定位?
来源:美团北斗 AI Infra 面经、拼多多 AI Infra 面经、小鹏 AI Infra 面经、快手 AI Infra 面经、飞腾 AI Infra 面经、字节 AI Infra 二面、太初 AI Infra 面经、壁仞 AI Infra 面经、寒武纪 AI Infra 面经【华为 - 大模型算法岗(AI Infra / 训练优化)追问:如何用 Roofline 模型判断带宽瓶颈 vs 计算瓶颈?】【昆仑芯 0903 一面(ai 高性能开发)追问:介绍一下 Roofline 模型和算术强度。】【0907 百度一面 (AI Infra)追问:大矩阵 GEMM 在 DCU 上如何切分和实现?】;0921 新紫光一面(算子工程师);1009 苏州睿芯一面(算子开发)
新手答:“多用 Shared Memory、增加线程数,再做算子融合。”
高手答:
先以 算术强度 = FLOPs / 搬运字节数 判断 Kernel 更可能受计算峰值还是内存带宽约束,再用 Profiler 验证。Memory-bound 时优先检查合并访问、分块复用、向量化、减少中间写回和 Fusion;Compute-bound 时再看 Tensor Core 路径、数据布局和指令流水。GEMM 的 Tile 不能越大越好:更大的复用也会增加寄存器和 Shared Memory,占用过高可能降低驻留 Block,甚至发生 Register Spill。可靠流程是先建立正确 Baseline,再测不同 Shape,定位瓶颈、提出单一假设、微基准验证,并检查数值误差。前缀和、Reduce、Softmax、转置等手撕题都应沿这条方法回答。
差距在哪:新手堆优化技巧,高手先建立性能模型,再用证据决定优化顺序并守住正确性。
Q:FlashAttention 为什么更快?Online Softmax、Tiling、重计算和不同版本分别解决什么瓶颈?
来源:阿里国际 AI Infra 实习面经、快手 AI Infra 校招面经、美团北斗 AI Infra 面经、混元 AI Infra 面经、科大讯飞 AI Infra 面经、飞腾 AI Infra 面经、阿里校招 AI Infra 面经、爱奇艺 AI 平台研发面经【华为 - 大模型算法岗(AI Infra / 训练优化)追问:FlashAttention 如何减少 HBM 访问?】【阶跃星辰(Stepfun)- 大模型算法岗(Post-train)追问:FlashAttention 加速原理?】;pdd ai infra 提前批 一面面经
新手答:“FlashAttention 把复杂度从平方降到线性,所以显存更少、速度更快。”
高手答:
FlashAttention 的核心是 IO-aware,而不是把稠密 Attention 的数学计算复杂度改成线性。标准实现会把较大的 Score/Probability 中间矩阵写入显存;FlashAttention 对 Q、K、V 分块,在片上存储中完成局部计算,并用 Online Softmax 维护每行的运行最大值和归一化和,从而避免完整中间矩阵落到高带宽内存。反向阶段可通过保存少量统计量并重计算部分结果,交换存储与计算。不同版本主要继续改进工作划分、并行度、流水和新硬件能力利用,具体支持受 GPU 架构、数据类型、Head Dimension 和软件版本约束,必须以原论文和官方实现为准。
差距在哪:新手只背“省显存”,高手能推导 Online Softmax 的正确性,并区分 FLOPs 与 IO 复杂度。
Q:KV Cache 占用如何计算,为什么不能只按请求数做容量规划?
来源:抖音搜推 AI Infra 一面、百度 AI Infra 一面、字节 App Infra Agent 一面、字节社招一面【阿里 Agent Infra 一面题库追问:KV Cache 原理】【华为 - 大模型算法岗(AI Infra / 训练优化)追问:Transformer 推理中 KV Cache 显存估算及 batch 增大瓶颈?】;本轮追问:MHA、MQA、GQA 在 KV Cache 显存占用和模型效果上有什么区别?(本轮追问);本轮追问:每周多少 token/需求数?24h 跑吗?(本轮追问);本轮追问:了解 KV cache 吗?它在什么场景下使用、起什么作用?(本轮追问);本轮追问:KV Cache 的作用和显存开销是什么?(pdd ai infra 提前批 一面面经);本轮追问:KV Cache的原理是什么?(滴滴一些面经合集(算法));本轮追问:为什么 KV cache 重要? / 为什么缓存 KV 而不是 Q?(淘天集团 Agent算法 一面)
新手答:“KV Cache 和上下文长度成正比,显存不够就减少并发。”
高手答:
对常见 Decoder-only 模型,可以从下面的近似式开始估算:
KV bytes ≈ 2 × layers × tokens × kv_heads × head_dim × bytes_per_element
总容量再乘以并发序列数,并加 block 尾部浪费、元数据和运行时预留
前面的 2 代表 K 和 V。MHA 中 kv_heads 通常等于 query heads;MQA/GQA 会减少 KV heads;MLA 的缓存结构要按具体实现重新计算,不能套同一个维度。Prefill 后每生成一个 Token 都继续增长 KV,因此相同请求数下,长上下文与长输出可能相差几个数量级。
生产准入应按预计 Token Budget、可回收 block 和租户 SLO 做,而不是只限制并发请求数。Paged KV 能减少连续分配和外部碎片,但仍有尾块浪费、页表元数据和间接寻址开销;Prefix Cache 还必须把模型、Tokenizer、Adapter 和模板版本纳入正确性边界。
机制上,生成第一个 Token 时计算上下文各位置的 K、V;后续解码只需用新 Token 的 Q 与已缓存的 K、V 做注意力,避免重复计算历史 Token。代价是缓存随层数、序列长度、并发和 KV 头数线性增长,并持续占用显存。
KV 比 Q 更值得缓存:同一层历史 Token 的 K、V 会被后续每个新 Token 重复访问,而每步 Q 都由当前新 Token 重新计算,通常只使用一次;缓存 Q 既不能复用历史计算,还会增加额外显存。因此解码阶段保留历史 K、V 即可避免主要的重复注意力计算。
差距在哪:新手只知道 KV Cache 占显存,高手能从模型结构算容量,并把分页、准入和缓存正确性连起来。
Q:如何从模型结构估算参数量、FLOPs、训练显存、推理访存与 MFU?
来源:美团北斗 AI Infra 面经、混元 AI Infra 面经、讯飞飞星 AI Infra 面经、荣耀 AI Infra 面经、AI Infra 小厂面经、字节 AI Infra 二面;本轮追问:是否做了模型的 scaling up?模型的参数量和计算量在什么 level?(本轮追问);本轮追问:大模型推理为什么经常受访存限制?(pdd ai infra 提前批 一面面经)
新手答:“参数量乘数据类型字节数就是显存,FLOPs 越高训练越慢。”
高手答:
先写模型形状,再分对象核算。参数量由 Embedding、Attention 投影、FFN/Expert 和输出头组成;FLOPs 要区分训练、Prefill 与 Decode,并明确是否把乘加计作一次或两次操作。训练显存不只有权重,还包括梯度、优化器状态、Master Weight、激活、通信缓冲、临时 Workspace 和碎片;推理还要加入 KV Cache、Batch 与上下文长度。推理访存则关注每 Token 需要读取的权重、KV 和中间结果。MFU 应写成“实际有效模型计算吞吐 / 选定硬件峰值”,同时声明稀疏 MoE、重计算、Padding 和精度口径。最终用实测 Profile 校准估算,而不是拿理论峰值直接当容量结论。
Decode 阶段每生成一个 Token,矩阵计算规模小,却要读取大量模型权重和历史 KV Cache,计算强度低,容易受 GPU 显存带宽和访存延迟限制;Prefill 通常更偏计算受限。可通过增大有效批次、KV Cache 优化、量化和减少无效 Padding 改善,并用 Profile 对比计算利用率与带宽利用率验证瓶颈。
差距在哪:新手只算权重,高手能声明口径、覆盖隐藏内存,并按执行阶段建立可校准的成本模型。
Q:如何估算 All-Reduce/All-to-All 通信量并实现计算通信重叠?拓扑和 RDMA 如何影响结果?
来源:阶跃星辰 AI Infra 面经、快手 AI Infra 面经、字节 AI Infra 面经、AI Infra 小厂面经、数坤科技 AI Infra 面经、阿里控股 AI Infra 面经、爱奇艺 AI 平台研发面经【华为 - 大模型算法岗(AI Infra / 训练优化)追问:如何优化分布式推理中的 AllReduce 通信?】【阿里巴巴(阿里云)- Agent Infra追问:如何优化分布式 AllReduce 通信?;如何平衡多机多卡推理中的通信与计算?】;腾讯混元 AI Infra 一面
新手答:“All-Reduce 用 Ring,通信和反向计算异步执行就能隐藏开销。”
高手答:
先从并行切分推导每次 Collective 的参与组、Payload 和依赖,再用 通信时间 ≈ 启动时延 × 轮次 + 字节数 / 有效带宽 建模。All-Reduce 常用于聚合梯度或 TP 部分结果;MoE 的 All-to-All 还会受 Token 路由不均和 Straggler 影响。重叠不是简单开异步:只有某个 Bucket 已就绪且后续计算不依赖其结果时,才能用独立 Stream/通信引擎覆盖,并要防止计算和通信争抢同一带宽。实际性能还取决于 NVLink/NVSwitch、PCIe、NUMA、跨机网络和 RDMA 路径。最终用 Timeline 检查依赖与空洞,并按拓扑选择分组、Bucket 和 Collective 算法。
追问补充:通信 payload 先按实际张量元素数乘 dtype 字节数计算,注意当前张量是否已经分片。对 N 卡、每卡输入 M 字节的 Ring All-Reduce,单卡发送量约为 2 × (N−1) / N × M,全体发送量为单卡量乘 N,不能混用统计口径。结果只需每卡分片可用 Reduce-Scatter,需要完整结果再 All-Gather;以时间线验证是否真正与计算重叠。
差距在哪:新手只背通信算子,高手能从张量形状估量、识别依赖,并用真实拓扑验证重叠。
Q:GPU 内存层次如何使用?Pinned Memory、Shared Memory、Bank Conflict 与异步 H2D/D2H 分别解决什么问题?
来源:阿里国际 AI Infra 实习面经、阶跃星辰 AI Infra 实习面经、快手 AI Infra 校招面经、蔚来 AI Infra 实习面经、文远知行 AI Infra 面经、寒武纪 AI Infra 面经;本轮追问:你常用的卡的存储架构是什么,带宽数量级是多少?(0921 新紫光一面(算子工程师))
新手答:“把 Global Memory 数据搬到 Shared Memory 就会更快,Pinned Memory 可以加速拷贝。”
高手答:
优化目标是减少高代价数据移动并提高复用。寄存器最靠近线程,Shared Memory 由 Block 显式共享,L2/显存容量更大但访问代价更高;只有数据会被重复使用且分块、同步成本可摊薄时,搬进 Shared Memory 才有收益。Bank Conflict 会让同一 Warp 的某些 Shared Memory 访问产生额外事务,具体映射要按目标架构验证。Pinned Host Memory 便于 DMA 和异步传输,但会占用不可分页的主机内存。H2D、Kernel、D2H 能否重叠,还取决于设备 copy engine、独立 Stream、锁页缓冲区和正确的事件依赖,不能只调用异步 API 就认定已经并行。
回答具体带宽时必须先绑定实际卡型,说明其显存类型(如 HBM 或 GDDR)、显存带宽及片上层次;同时区分规格书理论峰值与实测有效带宽,并用带宽测试或目标算子基准验证,不能只报一个脱离型号的数量级。
差距在哪:新手把内存类型当速度排名,高手会按复用、事务、同步和软硬件条件判断收益。
Q:vLLM/SGLang 的请求调度与 Continuous Batching 如何工作?请求被抢占后如何恢复?
来源:阿里国际 AI Infra 实习面经、AI Infra 小厂面经、vLLM/SGLang 小厂面经、爱奇艺 AI 平台研发面经;本轮来源;本轮追问:如何讲解vLLM推理框架?(滴滴一些面经合集(算法));pdd ai infra 提前批 一面面经
新手答:“Continuous Batching 会不断把新请求塞进 Batch,所以 GPU 利用率更高。”
高手答:
调度器管理 Waiting、Running 等请求状态,并在每次迭代按可用 KV Block、Token Budget、优先级和 Deadline 选择工作。Decode 请求通常每轮推进少量 Token,长 Prefill 可切成 Chunk,与 Decode 交错,避免一次 Prefill 长时间阻塞其他请求;请求完成或取消后立即回收容量,新请求无需等待整批结束。容量不足时可能选择重计算、交换或重新排队,具体抢占与恢复策略依框架版本和配置,不能把某一版实现当协议。生产设计还要处理排队上限、长短请求公平性、取消传播和资源回收,并分别观察 Queue Time、TTFT、TPOT 与 KV 水位。
差距在哪:新手只说动态拼批,高手能讲清调度状态、预算、抢占代价与 SLO 公平性。
Q:大模型训练吞吐低时,如何用 MFU、Profiler、通信和流水线空泡定位瓶颈?
来源:大模型算法题整理(低置信二手来源)、阶跃星辰 AI Infra 面经、快手 AI Infra 面经、AI Infra 小厂面经;本轮追问:MFU 提升的收益来源做过归因拆解吗?(本轮追问);本轮追问:接触过模型训练吗?(本轮追问);腾讯混元 AI Infra 一面
新手答:“先看 GPU 利用率,低了就增加 Batch、开启混合精度或换更多 GPU。”
高手答:
先固定模型、序列、全局 Batch、精度和并行拓扑,按 Step Time 拆成 DataLoader、前反向、Optimizer、Collective、流水线等待与 Checkpoint,而不是先调参数。MFU 只说明有效模型计算相对选定峰值的比例,必须声明稠密/MoE FLOPs、重计算和 Padding 口径;同时看每 Rank 时间线、算力/带宽指标、NCCL 时延、Stage 空泡、数据等待和 Straggler。若通信暴露,检查 Bucket、依赖和拓扑;若 Kernel 低效,再下钻 Shape、布局和算术强度;若只有少数 Rank 变慢,检查节点、数据倾斜与硬件健康。每次只改变一个变量并重复测量,用吞吐、稳定性和成本共同验收。
追问补充:判断 Communication Bound 不能只看 GPU 利用率:在时间线上确认通信操作占比、通信与计算是否重叠,以及 GPU 是否长期等待 NCCL;再观察增大计算量或减少通信量后的 Step Time 变化,并结合跨卡带宽、链路利用率和扩展效率验证。
差距在哪:新手凭单个利用率调参,高手先建立可重复 Baseline,再逐层定位 Job、通信和 Kernel 瓶颈。
Q:CUDA 的 Thread、Warp、Block、Grid 和 SM 如何映射?SIMT、同步与 Warp 分歧如何影响性能?
来源:小马智行 AI Infra 实习面经、OPPO AI Infra 实习一面、蔚来 AI Infra 实习面经、沐曦 AI Infra 实习一面【0907 百度一面 (AI Infra)追问:SIMT 的特点是什么?遇到分支时会发生什么?】
新手答:“Grid 里有很多 Block,Block 里有很多 Thread,线程越多性能越好。”
高手答:
Kernel 启动后形成 Grid,Block 被调度到 SM;Block 内线程再按 Warp 成组执行。SIMT 表示同一 Warp 的线程共享指令推进,但各自维护寄存器和地址:分支条件不同会用不同活动掩码分段执行,形成分歧;地址不连续则可能增加内存事务。__syncthreads() 只解决 Block 内屏障,普通 Kernel 不能假设不同 Block 同时驻留并直接做全局屏障,跨 Block 阶段通常要拆 Kernel,或在满足约束时使用 Cooperative Groups。调优不能只追求 Occupancy:寄存器、Shared Memory 和 Block 大小会共同限制驻留量,最终要看有效吞吐、访存合并和延迟隐藏。
差距在哪:新手只会背层级,高手能把调度范围、同步边界、分支与访存行为连接到真实性能。
Q:FP8、NVFP4、INT8 与 W4A16 的数值格式、缩放粒度和硬件执行路径有何不同?
来源:混元 AI Infra 面经、讯飞飞星 AI Infra 面经、AI Infra 小厂面经、智谱 AI Infra 面经、摩尔线程 AI Infra 面经
新手答:“位宽越低越省显存、速度越快,FP8 比 INT8 精度更好。”
高手答:
先区分存储格式、计算格式和累加格式。INT8 是定点量化,真实值由整数与 Scale/Zero Point 共同表达;W4A16 表示权重低位存储而激活保留较高精度,执行时可能需要解包和反量化。FP8 是低位浮点格式家族,不同指数/尾数分配在动态范围与精度间取舍;NVFP4 等格式还会绑定特定的分块缩放和硬件路径。Per-Tensor、Per-Channel、Per-Group 或更细粒度会影响 Scale 元数据、Kernel 复杂度和误差。最终收益取决于目标设备是否原生支持对应输入、乘法与累加路径,以及框架能否为实际 Shape 选择高效 Kernel;格式名称本身不能证明端到端更快。
差距在哪:新手只比较位宽,高手会核对 Scale、Accumulator、Kernel 和硬件支持组成的完整执行契约。
Q:量化后为什么不一定更快?量化 Matmul、反量化、Prefill 和 Decode 的瓶颈如何判断?
来源:美团北斗 AI Infra 面经、拼多多 AI Infra 面经、混元 AI Infra 面经、爱奇艺 AI 平台研发面经【昆仑芯 0903 一面(ai 高性能开发)追问:怎么判断一个算子是带宽瓶颈还是计算瓶颈?】
新手答:“量化减少权重和显存占用,所以所有阶段都会更快。”
高手答:
量化首先减少存储和搬运字节数,但端到端速度还取决于计算路径。若硬件与 Kernel 原生支持该格式,Decode 这类频繁读取权重、带宽敏感的阶段更可能受益;Prefill 的大矩阵计算利用率较高,收益可能受反量化、Scale 读取、数据重排和累加格式限制。某些 Batch、Shape 或算子没有合适 Kernel 时还会回退到较高精度,甚至增加转换和 Launch 开销。排查时先确认实际选中的 Kernel 与输入格式,再分别测权重带宽、反量化占比、Tensor Core/矩阵单元利用、TTFT、TPOT 和端到端成本,同时做质量回归。结论必须绑定模型、硬件、框架版本和流量分布。
差距在哪:新手把压缩率等同于加速比,高手能沿真实数据路径解释量化收益为何因阶段和实现而异。
Q:流水线并行的 Bubble 从哪里来?1F1B、Zero-Bubble 与 DualPipe 如何调度?
来源:快手 AI Infra 面经、百度 AI Infra 面经、美团 AI Infra 面经、AI Infra 小厂面经;腾讯混元 AI Infra 一面
新手答:“把 Batch 切成 Micro-batch,前后向流水起来,就能消除 GPU 空闲。”
高手答:
流水线并行把层分到不同 Stage,Micro-batch 在 Stage 间传递;启动时下游无输入、排空时上游无工作,再加前后向依赖和 Stage 不均衡,就形成 Bubble。1F1B 在预热后交替执行一次前向和一次反向,通常比先做完全部前向再反向更早释放部分激活,但仍有填充/排空成本。Zero-Bubble 会进一步拆分并重排反向阶段,DualPipe 则利用双向流水提高重叠;两者的精确定义和可行依赖应以对应论文/实现为准。选型时同时核算 Stage 平衡、Micro-batch 数、激活峰值、跨 Stage 通信和调度复杂度,不能只比较理论 Bubble 比例。
差距在哪:新手只会画流水线,高手能解释空泡来源、依赖约束和显存/通信取舍。
Q:如何设计大模型在线推理服务?
来源:百度 AI Infra 提前批一面、智象未来 AI Infra 一面;本轮追问:大模型生成的标签、轻量模型的训练和模型推理分别是离线还是在线的?(本轮追问);本轮追问:RAG系统用的大模型是离线的还是在线的?(9.17 润科通用一面)
新手答:“把模型加载到 GPU,通过 API 提供推理,再根据 QPS 自动扩容。”
高手答:
我会先定义 TTFT、TPOT、端到端 P99、吞吐、可用性和成本目标。LLM 推理分为 Prefill 和 Decode:长 Prompt 的 Prefill 偏计算密集,逐 Token Decode 更受内存带宽和 KV Cache 容量影响,因此不能只看请求 QPS。
Serving 层通常需要 continuous batching、流式输出、请求取消、长度感知调度和 KV Cache 管理。路由时考虑模型版本、上下文长度、预计输出、租户优先级、Deadline 和副本水位。过载时优先 admission control、排队上限和明确拒绝,不能让无限排队把 P99 拖垮。
自动扩容要观察队列时间、Token 吞吐、KV Cache 使用率和可用 GPU,而不是只看利用率;模型加载和权重分发很慢,因此还需要预热容量和发布期间的双版本资源预算。
RAG通常是在线链路:请求到达后检索最新知识,再调用在线或自部署模型生成;文档切分、向量化、索引构建和离线评测可离线完成。若追求成本或稳定延迟,也可批量离线生成结果,但不适合需要实时知识的交互问答。
差距在哪:新手把 LLM 当普通 HTTP 服务,高手理解 Prefill/Decode、动态批处理、KV Cache 与排队延迟。
Q:投机采样中 Draft 与 Target 模型如何交互?什么时候会加速,什么时候反而变慢?
来源:AI Infra 小厂面经、爱奇艺 AI 平台研发面经;本轮追问:提前生成更多候选是否会增加额外成本? / 草稿长度与系统性能为什么不一定是单调关系? / 与其他推测解码方案有什么区别?(pdd ai infra 提前批 一面面经);南方基金 AI应用大模型方向 笔面试梳理
新手答:“小模型一次预测多个 Token,大模型一起验证,因此输出不变且一定更快。”
高手答:
Draft 模型先提出一段候选 Token,Target 模型用一次并行前向验证;系统接受符合采样规则的前缀,在首次拒绝处按正确分布继续采样,再进入下一轮。性能取决于平均接受长度能否覆盖 Draft 推理、Target 验证、调度和 KV 管理成本。任务分布与 Draft 不匹配、Batch 很大、验证 Kernel 不高效或请求很短时,额外工作可能抵消收益。工程上还要处理两个模型的 Tokenizer/词表兼容、各自 KV Cache、拒绝后的状态回退、流式输出和请求取消。vLLM、SGLang 等框架支持的 Draft 方法与调度细节会迭代,回答时先讲算法契约,再按明确版本讨论实现。
与其他方案的区别在候选生成方式:经典 Draft-Target 是小模型自回归提出、大模型批量验证;Medusa 等在同一模型上增加多步预测头,树状或 lookahead 方法则扩展候选分支。它们都需比较接受率、显存、验证并行度和调度开销,不能只按模型数量判断。
差距在哪:新手只背“双模型加速”,高手能说明正确性边界、接受率成本模型和双份运行状态。
Q:MoE 的 Expert Parallel 如何做 Dispatch/Combine、负载均衡和通信优化?DeepEP/EPLB 分别解决什么问题?
来源:阿里 AI Infra 实习面经、美团 AI Infra 面经、快手 AI Infra 面经、vLLM/SGLang 小厂面经、字节 AI Infra 二面、阿里控股 AI Infra 面经、爱奇艺 AI 平台研发面经
新手答:“Router 把 Token 发给不同 Expert,用 All-to-All 通信,再把结果合回来。”
高手答:
Router 产生 Top-K Expert 选择后,Runtime 先按目标 Rank 对 Token 打包并 Dispatch,经 Expert GEMM 计算,再按原 Token 顺序 Combine。真正瓶颈常是路由倾斜:热点 Expert 让部分 Rank 过载,其他 Rank 等待,All-to-All 还会放大跨节点流量。治理要同时考虑训练侧的负载均衡目标、容量与丢弃策略,以及推理侧的 Expert 放置、复制、动态迁移和拓扑感知。DeepEP 侧重为 MoE Dispatch/Combine 提供高效通信能力,EPLB 侧重依据负载调整 Expert 布局;具体接口和算法随版本变化,应查官方实现。评测必须同时看吞吐、尾延迟、丢弃率、负载偏斜和通信占比。
差距在哪:新手只知道 EP 等于 All-to-All,高手能把路由、布局、通信与 Straggler 串成闭环。
Q:CPU、GPU 与 NPU 的体系结构和优化目标有什么差异?如何为训练/推理工作负载选硬件?
来源:蔚来 AI Infra 面经、快手 AI Infra 面经、美团北斗 AI Infra 面经、讯飞飞星 AI Infra 面经、小鹏 AI Infra 面经、荣耀 AI Infra 面经、太初 AI Infra 面经
新手答:“CPU 擅长串行,GPU 擅长并行,NPU 专门跑 AI,所以 NPU 效率最高。”
高手答:
CPU 用较少但复杂的核心、较强缓存和分支预测换低延迟与通用控制能力;GPU 用大量并行执行资源和高显存带宽追求吞吐,要求足够并行度与适合的数据布局;NPU 通常围绕矩阵/张量数据流和特定低精度路径设计,但通用算子与动态控制能力取决于具体芯片和软件栈。选型不能只比峰值 FLOPS/TOPS,还要看模型算子覆盖、精度支持、显存容量/带宽、互联拓扑、编译器和 Kernel 成熟度、部署可用性及 TTFT/TPOT SLO。H100、A100、昇腾等只能作为带明确型号、软件版本和实测负载的案例,不能用代际标签替代 Benchmark。
差距在哪:新手按设备标签判断强弱,高手按工作负载、软件生态和端到端 SLO 做条件化选型。
Q:Stride、View/Contiguous 与 NHWC/NCHW 如何影响张量算子的正确性和性能?
新手答:“Transpose 后调用 contiguous(),GPU 用 NCHW、CPU 用 NHWC。”
高手答:
张量由 Storage、Shape、Stride 和 Offset 共同定义;Transpose 往往只改元数据,因此逻辑连续不等于物理连续。view 只有在现有 Stride 可表达目标形状时才能零拷贝,reshape 可能返回 View,也可能物化新内存;contiguous() 会按指定内存格式复制,能满足 Kernel 契约,但也可能引入昂贵搬运。布局选择要看算子的遍历维度、Warp 访问是否合并、向量化、Tensor Core/矩阵单元要求和上下游转换次数。NHWC/NCHW 没有脱离硬件与框架的固定胜负:应尽量让整段算子链保持兼容布局,并用 Profile 确认布局转换没有吞掉 Kernel 收益。
差距在哪:新手背框架口诀,高手能从 Storage/Stride 推导零拷贝条件,并把布局选择放回完整算子链评估。
Q:Prefill 与 Decode 的算子形态和瓶颈为何不同?Matmul、KV 传输和量化应如何分别优化?
来源:小马智行 AI Infra 面经、阿里云 AI Infra 面经、荣耀 AI Infra 面经、vLLM/SGLang 小厂面经、腾讯 CDG AI Infra 面经、爱奇艺 AI 平台研发面经
新手答:“Prefill 是计算密集,Decode 是访存密集,所以前者加算力、后者加带宽。”
高手答:
Prefill 一次处理多个输入 Token,矩阵通常更大、并行度更高,Attention 还随序列长度增加,因此更容易有效使用矩阵计算单元;Decode 每步只生成少量 Token,常表现为小 GEMM/GEMV,并反复读取权重和持续增长的 KV Cache,更受带宽、调度和单步延迟影响。但这只是工作负载判断,不是所有模型和 Batch 下的定律。Prefill 可从 FlashAttention、分块、张量并行和长 Prompt 准入入手;Decode 更依赖 Continuous Batching、KV 布局/量化、算子融合和投机采样。量化是否提速还要看对应 Shape 是否有高效 Kernel,以及反量化开销。验证时分别看 TTFT、TPOT、算力与带宽指标。
差距在哪:新手背阶段标签,高手从矩阵形状和数据移动推导瓶颈,再为两个阶段选择不同优化。
Q:SpMV 和 GEMM 的计算、访存特征有什么不同?优化方向如何选择?
来源:沐曦 AI 工程师一面;本轮追问:非序列特征为何要异构 FFN/QKV,序列特征为何可以同构?(本轮追问);本轮追问:大矩阵 GEMM 在 DCU 上如何切分和实现?(本轮追问);1009 苏州睿芯一面(算子开发)
新手答:“GEMM 是稠密矩阵乘法,SpMV 是稀疏矩阵乘向量;前者算力密集,后者访存密集。”
高手答:GEMM 的规则稠密布局允许分块复用 A/B Tile,具有较高算术强度,适合 Tensor Core、向量化、Shared Memory 和多级寄存器 Blocking;瓶颈可能随 Shape 从访存转为计算。SpMV 只处理非零元素,但 CSR/COO 等格式还要读取索引,访问 x 向量常不连续,每行非零数不均又会造成线程负载倾斜,因此通常受带宽、间接寻址和同步归约限制。
SpMV 优化先按稀疏结构选格式和工作划分:规则块稀疏可用 BSR 提高向量化,极不均匀行要做分段或动态负载均衡,重排可能改善局部性但有预处理成本;GEMM 则围绕 Tile、布局、融合、Tensor Core 路径和寄存器压力调优。不能只比较 FLOPs,因为 SpMV 少算很多乘法,却可能为每个非零元素搬更多元数据。
评测必须覆盖真实矩阵分布和多种 Shape,分别报告有效 GFLOPS、内存带宽、Load Balance、预处理时间和端到端延迟。若稀疏度不高或结构不适合硬件,稀疏实现可能比高效稠密 GEMM 更慢。
差距在哪:新手只会按稀疏/稠密分类,高手能从算术强度、索引开销、负载不均和格式选择推导具体优化方向。
Q:Attention 与 FFN 的计算量和参数量谁更大?
新手答:“Attention 是平方复杂度,所以一定比 FFN 大。”
高手答:
不能脱离形状直接下结论。忽略常数后,Self-Attention 的投影约为 O(B × S × H²),注意力矩阵计算约为 O(B × S² × H);两层 FFN 约为 O(B × S × H × I),其中中间维度 I 常是 H 的数倍。短序列、大隐藏维度时 FFN 可能占更多 FLOPs;序列足够长时,Attention 的 S² 项才会主导。
参数量同样主要取决于投影矩阵:标准 Attention 约为 4H²,FFN 约为 2HI,若 I≈4H,FFN 参数通常更多。GQA、MLA、MoE、门控 FFN 和稀疏激活都会改变公式。单请求 Decode 的矩阵形状还可能更接近 GEMV,而训练、Prefill 或批量 Decode 通常仍可组织成 GEMM;最终要以真实 batch、序列长度和 Profiler 为准。
差距在哪:新手只背复杂度标签,高手先写出维度和工作负载,再判断参数、算力与访存瓶颈。
Q:CUDA Graph 为什么能降低推理开销?为什么可能额外占显存,Prefill 与 Decode 哪个阶段更适合?
新手答:“CUDA Graph 把多个 Kernel 合并起来,所以执行更快,通常用于 Decode。”
高手答:
CUDA Graph 不是算子融合,而是先捕获一段 Kernel、Memcpy 和依赖关系,再低开销重复提交,主要减少 CPU Launch、框架调度和同步间隙。Decode 每轮形状和执行拓扑较稳定,且小 Kernel 多,通常更容易从重放获益;Prefill 的长度和 Batch 变化大,可能要按 Shape 分桶、填充,或回退 Eager。额外显存常来自捕获期的稳定地址、私有内存池、不同 Shape 的多份 Graph 以及为最大形状预留的张量。是否值得使用要比较捕获/预热成本、命中率、显存水位和端到端 TPOT,而不是只看单次 Kernel 时间;具体捕获限制以 CUDA 与推理框架版本为准。
差距在哪:新手把 Graph 误解成 Fusion,高手能说明它优化的是提交路径,并量化动态形状和显存代价。
Q:PD 分离解决什么问题,Prefill 与 Decode 资源比例怎么定?
新手答:“Prefill 计算密集、Decode 访存密集,所以把它们部署到不同 GPU。”
高手答:
PD 分离的目标是减少长 Prefill 对 Decode TPOT 的干扰,并让两类阶段独立批处理、扩容和选硬件。但拆分后必须传输或共享 KV Cache,引入网络带宽、序列化、调度、故障恢复和额外排队;小模型、短 Prompt 或低负载时,分离成本可能高于收益。
资源比例不能背固定数字,应由流量画像推导:Prompt/Output Token 分布、到达率、Prefill Token/s、Decode Token/s、TTFT/TPOT SLO、KV 传输成本和峰值余量。可以分别建立两个队列,用在线水位和 Deadline 调整路由;chunked prefill 也能在单集群内把长 Prefill 切块,与 Decode 迭代交错,是独立部署之外的另一种取舍。
压测必须覆盖长短请求混合、突发流量、跨节点 KV 传输和某一侧容量不足。只报告平均吞吐无法证明分离有效,还要比较 TTFT、TPOT、P99、GPU 利用率和每 Token 成本。
差距在哪:新手只说异构部署,高手会量化流量、传输代价、排队和 SLO,再决定是否分离及如何配比。
Q:模型版本升级如何做到可观测、可灰度、可回滚?
来源:模型发布与稳定性高频题【Momenta 大模型算法工程师一面追问:离线效果更好为何仍保留旧模型】【百度 - Agent 研发岗(架构方向)追问:模型能力下降时如何快速回滚与隔离?】;蔚来——大模型算法岗(智能座舱/自动驾驶)实习一面
新手答:“部署新版本,先放 10% 流量,指标异常就回滚。”
高手答:
发布单元必须绑定模型权重、Tokenizer、推理参数、量化方式、镜像和 Prompt/Adapter 兼容信息。上线前完成离线质量、安全、性能和资源回归;线上先 shadow 验证协议与容量,再按租户或任务类型 canary,避免随机流量掩盖分布差异。
追问:新模型离线效果更好,线上为什么仍可能保留旧模型?
离线分数不是发布决策的充分条件。新模型可能需要更多显存、降低可承载并发、拉高 TTFT/TPOT,或只在平均指标上提升而伤害关键业务切片;新算子、Tokenizer、量化和上下文长度还可能改变故障面。应把质量增益换算到目标流量与单位成本,在 shadow 中验证协议和资源,再用 canary 测真实收益。收益不足以覆盖容量、迁移和回滚风险时,保留旧模型是正确决策,不是技术保守。
同时观察两类指标:系统指标包括 TTFT、TPOT、P99、错误率、OOM 和成本;质量指标包括任务成功率、拒答率、安全率和分层 Eval。质量指标通常反馈更慢,不能只靠五分钟技术监控判定成功。
回滚也要预留旧版本权重、副本容量和路由配置,并考虑会话粘性、KV Cache 不兼容以及 Agent Run 的版本固定。Kubernetes Deployment 官方文档提供滚动替换与回滚基础能力,但模型质量门禁、制品兼容和会话版本仍由 AI 平台负责。审计记录必须回答“谁在何时把哪套制品以什么配置发布给了哪些流量”。
差距在哪:新手只有流量百分比,高手把制品一致性、质量评估、容量和有状态会话纳入发布计划。
Q:CUDA、Triton、CUTE 与 MLIR 分别位于什么抽象层?算子编译链和选型依据是什么?
新手答:“CUDA 最底层、Triton 更简单、MLIR 是编译器,所以追求性能就手写 CUDA。”
高手答:
这些概念不在同一维度。CUDA C++ 让开发者显式控制线程、内存和同步,通常经前端编译到 PTX,再由工具链生成目标 GPU 指令;Triton 是面向并行张量程序的 DSL,由编译器完成一部分映射与优化;CUTE 提供更细的 Layout、Tile 和数据搬运组合抽象,可服务高性能 Kernel 构建;MLIR 则是一套多层中间表示与 Pass 基础设施,常用于连接图级、算子级和硬件级降级。选型要同时看目标硬件、算子规则性、动态 Shape、已有 Kernel、性能差距、调试可观测性和维护成本。高层 DSL 达不到目标时再逐层下沉,并用同一正确性与基准口径比较。
差距在哪:新手把工具排成高低级排名,高手理解编译链、控制权和工程成本之间的交换关系。
Q:KV Cache 命中率如何评估与优化?
新手答:“KV Cache 命中率取决于请求是否共享相同前缀,可以通过复用历史 KV、设计更稳定的提示词和合理管理缓存来提高。”
高手答:
KV Cache 的“命中率”需先定义口径:前缀缓存通常按可复用 token 数除以输入 token 数统计,也可同时看请求命中率、命中 token 数、首 token 延迟和显存占用;不能把命中率直接等同于整体加速。多数实现要求 token 前缀完全一致,因此应稳定系统提示词和模板、把公共内容放在前面、规范化序列化方式,并按租户或模型隔离缓存。工程上要采用分块缓存、LRU 或成本感知淘汰、容量上限和 TTL,避免热点挤占、跨租户数据泄露及版本变更导致错误复用。评估应按真实流量分层对比命中与未命中请求,验证延迟、吞吐、显存、质量和缓存失效;还要覆盖流式取消、长上下文、并发争用与滚动升级等失败场景。
追问补充:在 Spring AI 侧应在统一的 ChatClient 或拦截层规范化消息序列化,把稳定的系统提示、工具定义和示例置于前缀,动态问题放在后缀;按模型、租户和版本传递提供商的缓存参数,记录命中 token、延迟和回退原因,并在不支持缓存时保持普通调用。
差距在哪:浅层只会说复用历史 KV 和优化提示词,深层要先界定命中口径,再覆盖缓存键、淘汰隔离、指标验证与安全边界。
Q:AIOps 如何结合告警、Metrics、Logs、Trace 和服务拓扑完成证据驱动的 RCA,并安全执行自动处置?
来源:阿里 Agent Infra 一面题库;小米–后端–二面
新手答:“把日志和监控交给大模型,让它分析根因;确定故障后自动重启服务。”
高手答:
AIOps 不是给告警接一个聊天模型,而是把检测、诊断、处置和验证做成受约束闭环。先用用户侧 SLO、错误率和延迟确认影响,再按租户、地域、版本、模型、Tool 和资源池切分 Scope;随后关联发布变更、配置、依赖拓扑和同一时间窗内的 Logs、Metrics、Trace。OpenTelemetry 的上下文传播能用 Trace/Span 上下文关联跨服务信号,但“同时发生”仍只是候选证据,不自动等于因果关系。
RCA 层应输出带证据的候选列表,而不是一句确定性结论:哪个节点最先异常、上游是否正常、哪个变更与异常重合、相似历史事件是否具有相同错误签名,以及还缺什么验证。LLM/Agent 适合查询多数据源、归纳时间线和生成验证计划;拓扑约束、错误分类、变更记录和探针结果才是事实基础。可以通过回滚配置、切换小流量或执行只读探针验证候选原因,不能让模型根据相关性直接宣布 Root Cause。
自动处置按风险分级:只读诊断和证据收集可自动执行;限流、摘除单实例、扩容等可逆动作先做小范围 Canary;删除数据、全局回滚、权限变更等高风险动作必须审批。每个动作绑定目标范围、幂等键、Deadline、冷却时间、最大影响面和回滚条件,执行后重新检查 SLO;指标未恢复就停止扩大,而不是连续重试。Google SRE 的事件管理指南也强调告警应面向用户症状、保持可操作,并让自动化辅助分析和缓解而不是替代事件控制。
最后把确认根因、有效处置、失败尝试和新检测规则回写事件库与 Runbook。衡量 AIOps 不能只看“自动化次数”,还要看告警压缩率、候选根因 Top-K 命中率、MTTD/MTTR、误处置率、回滚率和实际减少的用户影响。
差距在哪:新手让模型从相关性直接跳到重启,高手把影响确认、证据关联、因果验证、分级处置和 SLO 回验串成可审计闭环。
Q:DeepSpeed ZeRO 的三个阶段分别做什么?
新手答:“Stage 1、2、3 逐步切分优化器、梯度和参数。”
高手答:DeepSpeed ZeRO 文档所述的分片策略可减少数据并行下的冗余:Stage 1 分片 optimizer states,Stage 2 再分片 gradients,Stage 3 连 parameters 也分片,前向/反向需要按需 gather。Stage 越高通常显存节省越多,但通信、参数管理和 checkpoint 复杂度也会上升;选择要结合模型规模、GPU 显存、互联带宽、micro-batch、激活重计算和吞吐 SLO。还要确认 offload、参数持久化、保存/恢复和第三方算子兼容性,不能只按“Stage 3 最好”决策。
差距在哪:新手只背三阶段顺序,高手能说明分片对象、通信代价和选型边界。
Q:大模型训练出现 OOM 时,如何定位原因并进行显存优化?
新手答:“可以通过混合精度、减小 batch size、梯度累积和梯度检查点等方式降低训练显存占用。”
高手答:
先区分 OOM 类型:记录峰值显存、已分配与已保留显存、失败算子、序列长度和并行配置,判断是模型参数、梯度、优化器状态、激活值,还是碎片与临时张量导致。优化可依次采用混合精度、减小 micro-batch 配合梯度累积、梯度检查点、缩短或分桶序列、参数/梯度/优化器分片(如 ZeRO 或 FSDP),必要时卸载到 CPU。还要检查异常长样本、未释放计算图、验证阶段缓存和数据并行复制。每次只改一个变量,用固定小数据验证 loss、梯度、收敛和吞吐,并通过峰值显存与长序列压力测试确认;分片和卸载能省显存,但会增加通信、带宽、实现复杂度及故障恢复成本。
差距在哪:浅层回答只会罗列省显存技巧,深入回答还要按显存构成定位根因,结合分布式通信、异常样本、正确性验证和性能权衡。
Q:训练与推理引擎的核心模块、底层工作与优化方向是什么?
新手答:“训练引擎负责模型训练,推理引擎负责高效执行模型,底层通常涉及算子、显存、并行和调度优化。”
高手答:
训练与推理引擎是连接模型计算图和硬件资源的运行时系统。训练侧通常包括自动微分、算子实现、计算图编译、混合精度、显存管理、通信与数据并行;推理侧还要处理图优化、权重加载、批处理、KV Cache、请求调度和服务接口。底层优化围绕算子融合、内存复用、内核选择、流水线并行和通信计算重叠展开,但吞吐、时延、显存占用和数值精度往往互相制约。工程上应先用正确性测试、精度对比、端到端延迟与吞吐压测、显存和通信 profiling 定位瓶颈,再决定优化,避免只优化单个算子却恶化整体服务。
差距在哪:浅层回答只停留在“训练和推理更快”,深层回答应能拆出编译、运行时、硬件、并行与服务调度,并说明指标验证和优化权衡。
Q:AI Infra 和 Agent Infra 有什么区别?
来源:AI 平台 / Agent 平台边界高频题;本轮追问:ReAct和Agent有什么区别?(本轮追问)
新手答:“AI Infra 管模型和 GPU,Agent Infra 管 Agent 和工具。”
高手答:
两者按照主要状态和 SLO 区分:
| 维度 | AI Infra | Agent Infra |
|---|---|---|
| 核心对象 | Dataset、Job、Model、Endpoint、GPU | Run、Step、Context、Tool Call、Sandbox |
| 主要目标 | 训练吞吐、推理延迟、资源利用率 | 执行可靠性、恢复、安全和任务成功率 |
| 典型状态 | 训练 Checkpoint、模型版本、KV Cache | Run State、事件日志、Tool 副作用 |
| 失败边界 | GPU/节点/通信/模型服务故障 | 部分成功、重复调用、等待与恢复 |
它们会在模型网关处相交:Agent Runtime 提交带 Deadline、租户、优先级和模型约束的请求;AI Infra 负责路由到合适的模型副本并返回流式结果。两边共同承担配额、成本、Trace 关联和取消传播,但不能互相替代。
差距在哪:新手按技术名词分层,高手按状态所有权、SLO 和故障域划分责任。
Q:如果让你设计一个生产级 AI Infra 平台,你会怎么拆?
来源:AI 平台系统设计高频题;本轮追问:如果让你从零搭建座舱Agent平台,核心模块有哪些?(蔚来——大模型算法岗(智能座舱/自动驾驶)实习一面)
新手答:“用 Kubernetes 调度 GPU,训练完成后部署成 API,再加监控。”
高手答:
Management Plane:项目、权限、配额、模型目录、发布与审计
Training Plane:数据准备、分布式训练、Checkpoint、评测
Serving Plane:模型网关、路由、批处理、缓存、流式推理
Resource Plane:GPU Inventory、队列、调度、弹性与故障域
Artifact/Data Plane:Dataset、Feature、Checkpoint、Model Registry
Observability/AIOps:Metrics、Logs、Trace、Profile、告警与自动处置
所有训练和发布都应可追溯到代码、数据快照、配置、镜像和模型制品;上线链路包含离线评测、安全检查、压测、灰度和回滚。平台还要把交互式开发、离线训练和在线推理分成不同队列与配额,避免低优先级训练挤占在线容量。
座舱Agent还需补充端云协同与车内设备接入层、语音和多模态交互、乘员身份与隐私权限、车辆状态和导航等领域工具、短期上下文管理,以及车控安全策略。关键车控采用白名单、二次确认和可撤销执行;断网、低算力或模型异常时切换端侧小模型和确定性兜底,并记录全链路审计。
差距在哪:新手只讲算力和部署,高手覆盖制品血缘、发布门禁、租户治理与训练/推理隔离。
Q:分布式训练为什么容易失败,如何恢复?
新手答:“做数据并行,节点挂了就从 Checkpoint 重新训练。”
高手答:
训练失败可能来自 GPU Xid/ECC、节点重启、网络抖动、集合通信超时、数据坏样本、OOM 或软件版本不一致。先确定并行策略:数据并行、张量并行、流水线并行和参数分片解决的瓶颈不同,也引入不同通信和恢复成本。
Checkpoint 不只是模型权重,还可能包含 Optimizer、Scheduler、随机数状态、Sampler 进度和并行拓扑信息。保存频率需要权衡写入开销与重算成本:
期望浪费 ≈ 故障概率 × Checkpoint 间隔内的平均重算量
大规模训练应采用异步或分层 Checkpoint、制品完整性校验和原子发布,避免读到半写文件。恢复前还要隔离疑似坏节点,并验证新的 world size 或并行拓扑是否被框架支持;“Pod 重启”并不自动等于训练可恢复。
差距在哪:新手只知道保存权重,高手能说明训练状态、通信故障、拓扑变化和 Checkpoint 成本模型。
Q:GPU 利用率很低,但请求延迟很高,怎么排查?
来源:小鹏 AI Infra 一面题面线索(付费题库汇总线索,不计频次)
新手答:“可能 GPU 不够,增加实例或者调大 batch。”
高手答:
先确认指标口径:低的是 SM Active、Tensor Core 利用、显存带宽还是平均 GPU Utilization。然后按等待链路拆分:
入口排队 → Tokenize → Prefill → Decode → 通信 → Detokenize/Streaming
常见根因包括 batch 太小、CPU Tokenizer 饱和、Host-to-Device 拷贝、同步点过多、长短请求互相阻塞、KV Cache 碎片、模型并行通信或下游流式消费慢。训练场景还要看 DataLoader、存储吞吐、NCCL straggler 和数据倾斜。
排查时关联请求 Trace、Serving Scheduler 指标、GPU Profile、节点和网络遥测,找到延迟增加的第一个等待阶段。AIOps 可以做异常检测、相似故障检索和根因候选排序,但自动扩容或重启必须经过 SLO、容量和冷却时间约束,不能把相关性直接当因果。
差距在哪:新手看到低利用率就加卡,高手先分解等待时间和硬件指标,再判断瓶颈在 CPU、GPU、通信还是调度。
Q:GPU 上的同步方法代码可能有哪些问题,如何排查?
来源:本轮面经(文章 11)
新手答:“调用同步 API 等待 GPU 完成即可。”
高手答:先区分 host/device、stream/event 和 kernel 内线程同步。cudaDeviceSynchronize() 会等待设备上所有工作并把异步错误暴露到当前点,范围过大可能串行化;cudaStreamSynchronize() 只等待指定 stream,event 可表达跨 stream 依赖(具体语义可查 CUDA Runtime API)。代码还要检查是否在错误的 stream 上同步、是否遗漏 memory copy 的方向/生命周期、是否把 kernel launch 错误延迟到后续调用,以及同步是否发生在循环热路径。用 CUDA error check、event 计时和 Nsight Systems/Compute 对照依赖图,验证正确性后再缩小同步范围。
差距在哪:新手只会“全局同步”,高手能定位同步域、异步错误、生命周期和性能串行化。
Q:GPU 峰值性能、计算单元与寄存器等硬件参数如何影响算子性能?
新手答:“峰值算力、计算单元数量和寄存器容量会影响并行度、吞吐量及算子能否高效运行。”
高手答:
峰值性能是理论上限,通常由计算单元数量、时钟频率和每周期指令能力决定,但算子实际性能还受访存带宽、缓存命中率、数据类型、并行度和控制流影响。计算单元越多不等于一定越快:小规模或低算术强度算子可能受内存限制,无法填满硬件。寄存器决定线程可保存的局部状态;单线程寄存器使用过多会降低 occupancy,甚至触发溢出到 local memory,使用过少又可能增加重复计算或访存。工程上应结合算子形状、线程块配置、共享内存和融合策略分析。验证时用 profiler 查看计算吞吐、带宽、occupancy、寄存器使用和 stall 原因,并与理论 roofline 或基准结果对照。主要权衡是寄存器、共享内存占用与并发度之间的平衡,不能只看厂商标称峰值。
差距在哪:浅层回答只会罗列硬件参数,深入回答还应说明计算瓶颈、资源竞争、性能上限与 profiler 验证方法。
Q:Nsight Compute(ncu)和 Nsight Systems(nsys)有什么区别?分别适合分析什么问题?
新手答:“nsys 主要看整个系统和 CPU、GPU 的时间线,ncu 主要深入分析单个 CUDA kernel 的性能指标。”
高手答:
nsys 是系统级时间线工具,适合观察 CPU 线程、进程、CUDA API、GPU kernel、同步和数据传输之间的先后关系,用来定位空洞、串行化、等待和跨设备调度问题;其能力范围可参考 NVIDIA Nsight Systems User Guide。ncu 则聚焦单个 CUDA kernel,可结合源代码查看访存、占用率、指令吞吐、缓存行为,并用 Roofline 判断算力或带宽瓶颈,详见 NVIDIA Nsight Compute Documentation。工程上通常先用 nsys 定位异常时间段,再用 ncu 深挖热点 kernel;采集会有开销,需固定输入、预热和重复运行,不能把 profiler 结果直接当线上真实性能。
差距在哪:浅层只会区分“看全局”和“看 kernel”;深入回答还应说明时间线与指标的定位链路、采集开销、复现条件及如何用两者交叉验证。
Q:推测解码中如何生成树状候选草稿?
新手答:“树状候选草稿通常由较小的草稿模型从当前上下文继续生成多个分支,再由目标模型统一验证并接受其中可信的 token。”
高手答:
树状草稿由轻量 draft model 从同一前缀展开:每一步按概率采样或取 top-k,形成多条分支,并复用共享前缀的 KV cache;达到深度、节点数或 EOS 后,目标模型对候选 token 做一次批量前向验证,按推测采样规则接受连续前缀,遇到不接受的 token 就回退并由目标模型补生成。深度控制单路径预测长度,宽度或 fan-out 控制每层分支数,通常受目标模型批处理能力、显存、草稿模型质量和延迟预算约束,可依据熵、置信度动态缩小或扩展。应去重、限制总节点、处理 EOS 和异常回退。验证时比较接受率、每次目标模型新增 token、端到端延迟、显存和输出分布一致性;树越宽越可能提高命中,但调度与 KV 开销也越大。
差距在哪:浅层回答只描述“多分支后验证”,深层回答还应说明树的展开与 KV 复用、验收回退、资源边界、动态参数及用接受率和端到端延迟验证的权衡。
Q:SIMD 与 RVV 向量化计算如何处理尾部元素?
新手答:“尾部元素通常用掩码计算,或改用标量循环处理,避免访问越界和无效结果。”
高手答:
固定宽度SIMD一次处理32个数时,100个元素可先处理96个,剩余4个用尾部掩码或标量循环完成;掩码必须同时约束加载、计算和存储,避免越界访问及把无效 lane 写回。工程上优先选择库或指令集支持的 masked load/store,并验证长度为0、1、恰好整块和非整块时的结果与边界安全;若掩码开销较高,可采用主循环加标量尾循环。RVV不是简单套用固定32的逻辑,而是根据剩余长度设置 vl,并结合掩码处理尾部。RISC-V Vector 规范所覆盖的边界是RVV的vl与掩码语义;对求和、最大值等操作,不能随意用0填充,必须使用正确的中性元素或屏蔽无效lane。
差距在哪:浅层回答只会说“补零或忽略”,面试官更关注掩码对内存安全和结果语义的影响,以及固定宽SIMD与RVV尾处理机制的区别。
Q:GPU 调度和普通 CPU 调度有什么不同?
来源:Kubernetes GPU Scheduler 高频题
新手答:“给 Pod 配置 GPU Request,让 Kubernetes 调度即可。”
高手答:
GPU 通常是稀缺、异构且拓扑敏感的资源。除了型号和显存,还要考虑 NVLink/NVSwitch、PCIe、NUMA、RDMA 网络、故障域以及多卡任务的 gang scheduling。一个分布式 Job 少一张卡也可能完全不能启动,逐 Pod 调度容易造成资源碎片和死锁式等待。
平台需要队列、优先级、配额、公平共享、抢占和回填;在线推理与训练使用不同的抢占策略。MIG 或 time-slicing 可以提高小负载利用率,但会引入性能干扰、显存边界和可观测复杂度,不能默认适用于所有模型。
还要维护 GPU 健康状态:对 Xid、ECC、温度、掉卡和链路降速进行检测,隔离问题设备并保留诊断证据,避免任务在坏节点上反复失败。
差距在哪:新手只会写资源声明,高手理解拓扑、成组调度、碎片、公平性和设备健康。
AI Infra 系统设计答题主线
先定目标:训练吞吐,还是在线 TTFT/TPOT/P99
再定对象:Dataset、Job、Checkpoint、Model、Endpoint
再定资源:GPU 型号、显存、拓扑、网络、存储和配额
再做平台:调度、Serving、Registry、灰度、回滚
最后治理:血缘、成本、租户、安全、可观测与 AIOps
记住一个结论:AI Infra 的核心不是让 GPU 忙起来,而是在质量和 SLO 约束下,把数据、模型、算力和发布过程变成可复现、可调度、可治理的系统。
下一篇建议继续看: