标签题目
GPU相关面试题
单机多卡 LLM 推理中的分布式 GEMM 如何切分矩阵,并完成跨 GPU 通信?
这题考 tensor parallel 下 GEMM 切分和 collective communication 的基本工程理解。回答要能把矩阵维度切分、局部计算、AllReduce/AllGather/ReduceScatter、通信计算重叠和推理场景约束讲清楚。
训练 Qwen 这类大模型时,分布式训练的通信瓶颈如何优化?
这题考大模型训练中的通信瓶颈定位与优化,重点是理解数据并行、张量并行、流水线并行和 ZeRO/FSDP 等策略如何产生不同通信模式,并用 profiling 指标做取舍。
接手一个未量化的大模型时,如何推进量化方案选择、校准、精度评估和推理性能迭代?
这题考未量化大模型的量化 rollout 方法论,重点是从部署目标、量化范围、校准集、kernel 支持、质量回归、性能收益到灰度回滚形成闭环,而不是背几个量化名词。
同题还出现在 1 个公司岗位
AWQ 等权重量化引入反量化步骤后,为什么仍可能让 LLM 推理整体变快?
这题考权重量化的反直觉加速机制,核心是解释额外 dequant 计算为什么可能小于权重带宽、显存占用、cache 命中和融合带来的收益,同时说明它只在合适瓶颈和 kernel 支持下成立。
把 FP16 权重量化为 INT8 并保留 FP32 scale 时,scale factor 如何计算,为什么常用绝对值最大值定标?
这题考权重量化的基础闭环:从 FP16 到 signed INT8 的映射、scale 的计算、absmax 定标的原因、反量化误差,以及 per-tensor/per-channel 和 outlier 取舍。
手写 CUDA vector add kernel 时,为什么需要边界判断,为什么通常不用 shared memory,block size 和 warp 有什么关系?
这题考 CUDA 入门 kernel 的工程基本功:线程索引、越界保护、全局内存合并访问、shared memory 是否有复用收益、block size 与 warp/occupancy 的关系。
非对称量化相比对称量化,在计算和反量化时会带来哪些额外开销与精度影响?
这题考 zero point 带来的计算差异。好答案要从量化公式展开到矩阵乘额外修正项、预计算可能性、性能代价,以及非零中心分布下的精度收益。
手写 CUDA Softmax2D 时,如何在 K 维做数值稳定的 softmax,避免指数溢出和精度爆炸?
这题考 row-wise softmax kernel 的正确性和性能:按 K 维减最大值、FP32 累加、block/warp reduction、不同 K 大小的线程映射,以及极端输入验证。
使用 CUTLASS 优化 GEMM/LLM 推理算子时,通常从 tile 划分、memory hierarchy、epilogue 融合和 Tensor Core 利用率哪些方向入手?
这题考候选人是否能把 CUTLASS 当成可配置的 GEMM/kernel 生成框架来理解:从问题规模、tile 层级、访存搬运、Tensor Core 指令形状、epilogue 融合和 profiling 闭环解释优化,而不是只说“用库会更快”。
针对特定 GPU 架构做算子优化是否值得,如何权衡性能收益、维护成本、可移植性和 fallback 方案?
这题考 GPU kernel 优化的工程取舍:不是问能不能榨干某一代硬件,而是问性能收益是否覆盖多架构维护、编译发布、回归矩阵和 fallback 成本。
手写 CUDA All-Reduce/归约 kernel 时,如何设计线程内与 block 内归约,并说明 block 间同步和跨 GPU AllReduce 通常为什么需要多 kernel、cooperative groups 或 NCCL?
这题要先澄清 All-Reduce 在面试手写题里的边界:单 GPU 内通常先写归约 kernel,再解释 block 间同步为什么不能靠普通 __syncthreads 解决;真正跨 GPU AllReduce 属于通信 collective,通常交给 NCCL 或多阶段通信算法。
如何用 PyTorch/CUDA 思路实现四线性插值,说明索引、权重计算和边界处理伪代码?
这题考实现思路而不是背库函数:先声明把“四线性插值”按 4D/quadrilinear interpolation 理解,即 4 个连续维度上各取 floor/ceil 共 16 个邻居,再讲索引映射、权重乘积、边界策略、CUDA 并行和反向传播验证。
大模型推理变慢时,如何从序列长度、batch、KV Cache、量化、FlashAttention 和 GPU 资源排查?
这题考 LLM 推理性能诊断闭环。高质量回答应先定义慢在哪里,再拆分队列、prefill、decode、KV Cache、batch 调度、attention kernel、量化、GPU 利用率和服务链路,用指标定位瓶颈,而不是一上来堆优化名词。
同题还出现在 1 个公司岗位
在 LLM 推理算子中,什么时候应使用 CUDA Core,什么时候应使用 Tensor Core?
这题考察 GPU 架构理解和算子选型能力,核心不是背概念,而是能按算子形态、数据类型、规模、访存和精度做工程判断。
Qwen 这类大模型训练中,混合精度训练如何实现,为什么能提升吞吐并降低显存?
这题考的是大模型训练数值与系统效率的结合:混合精度不是简单把所有张量改成 FP16,而是在前向、反向、梯度、权重、优化器状态和通信之间选择合适精度来兼顾吞吐、显存和稳定性。
大模型训练中的 3D 并行和 DeepSpeed 分别解决什么问题,如何组合使用?
这题考的是大模型训练系统的分解能力:3D 并行解决模型和计算如何切到多卡上,DeepSpeed 提供 ZeRO、混合精度、checkpoint、offload 和并行编排等工程能力,两者可以组合但不是同一个概念。
Qwen 支持 128K 长上下文时,如何降低显存占用和注意力计算复杂度?
Qwen 这类支持 128K 长上下文的大模型,不能只靠把最大位置编码拉长来解决问题,核心挑战是注意力计算随序列长度接近平方增长、KV cache 随层数和上下文长度线性增长、训练激活和通信也会放大。常见工程组合包括 RoPE 外推或缩放、FlashAttention 类内存高效注意力、GQA/MQA 降低 KV cache、paged/quantized KV cache、chunked prefill、序列并行或 context parallel、激活重计算,以及在可接受的质量边界内使用滑窗、稀疏或分块注意力。回答时要区分降低显存峰值、降低 KV cache、降低真实计算复杂度三件事。
大模型训练显存如何估算,参数、梯度、优化器状态、激活和临时缓存各占哪些部分?
大模型训练显存可以先拆成 model states、activations、temporary buffers、通信缓存和碎片/框架开销。model states 包括参数、梯度和优化器状态;以 Adam 混合精度训练为例,常见粗估是参数 bf16/fp16 2P、梯度 2P、Adam 一阶和二阶矩 fp32 8P、可选 fp32 master weights 4P,总计约 12P 到 16P bytes。除此之外,activation 随 batch、sequence length、hidden size 和层数增长,长上下文 attention 还可能带来平方项;临时缓存包括 attention workspace、GEMM workspace、logits、通信 bucket、all-gather buffer 和内存碎片。估算时要同时考虑并行策略、ZeRO 分片、activation checkpointing、精度和 micro-batch。
同题还出现在 1 个公司岗位
TensorRT-LLM(TRT-LLM)和 vLLM 在 LLM 推理部署中有什么区别,TRT-LLM 主要靠哪些机制加速?
这题考 LLM 推理部署中的系统取舍。好的回答要把 vLLM 和 TensorRT-LLM 区分为不同工程侧重点:vLLM 更像面向在线服务的通用推理引擎和调度系统,强调 PagedAttention、连续批处理、OpenAI 兼容服务和模型接入灵活性;TensorRT-LLM 更贴近 NVIDIA GPU 上的编译优化与高性能运行时,强调 TensorRT engine、算子融合、专用 kernel、量化、KV cache、in-flight batching 和多 GPU 通信优化。不能简单说谁一定更快,要看模型、硬件、batch、延迟目标和工程成本。
大模型训练中的 MFU 指标是什么,如何结合 Nsight/Profiler 定位吞吐瓶颈?
这题考训练性能分析能力:MFU 是把实际训练吞吐折算成模型有效 FLOPs 后,与 GPU 理论峰值比较的利用率指标;定位瓶颈要把 MFU、step time、kernel 时间线、通信、数据加载和显存行为一起看。
LLM 推理中做 KV Cache sparse 计算时,vLLM/Triton 实现为什么可能选择稀疏索引或稀疏块,而不是直接用 dense mask?
这题考的是稀疏注意力在推理引擎里的真实性能取舍。dense mask 在数学上能表达稀疏模式,但计算和访存仍接近 dense attention;而稀疏索引或稀疏块能让 kernel 只读取和计算被选中的 KV cache,从而节省显存带宽、减少无效 FLOPs,并更适合 vLLM 这类分页 KV 和 Triton 块级并行实现。
SmoothQuant 为什么要做 activation/weight 平滑?平滑参数如何设定,用激活分布判断模型是否适合时应关注 input channel 还是 output channel?
这道题考察对 SmoothQuant 的核心动机、等价变换和校准维度的理解。回答时要先说明 LLM 的激活 outlier 会让 INT8 activation 量化特别困难,而 SmoothQuant 通过按输入通道缩放,把一部分动态范围压力从 activation 平滑地迁移到 weight 上,从而让 W8A8 推理更稳定。关键点不是笼统地说做归一化,而是说明缩放不改变浮点计算语义、参数需要用校准集和逐层误差选择,并明确判断激活分布时主要看线性层的 input channel 维度。
AWQ 和 GPTQ 的量化原理有什么区别?在 LLM 推理部署中它们各自适合什么取舍?
这道题要求区分 AWQ 和 GPTQ 都是大模型后训练量化方法,但优化目标和工程取舍不同。GPTQ 更像基于二阶近似的逐块权重量化误差补偿,利用校准激活构造 Hessian 近似来最小化层输出重构误差;AWQ 则强调 activation-aware 的显著权重保护,通过观察激活通道重要性和缩放搜索减少关键通道误差。好的回答要能讲清原理差异、校准成本、精度与速度、kernel 适配、以及在 LLM 推理部署中的选择标准。
分布式 LLM 训练中 AllReduce、AllGather、ReduceScatter 和 AllToAll 分别解决什么通信问题,哪些并行场景会用到它们?
这道题考察分布式训练中 collective communication 的语义和并行策略映射。回答要先把 AllReduce、AllGather、ReduceScatter、AllToAll 的输入输出关系讲清,再说明它们分别解决梯度汇总、参数或激活拼接、归约后分片、个性化交换等问题。进一步要能联系数据并行、张量并行、ZeRO/FSDP、序列并行、专家并行和 MoE token dispatch,指出通信量、同步开销、拓扑和 overlap 对训练效率的影响。
如何根据模型参数量、训练 token 数、FLOPs、GPU 数量和硬件利用率估算 LLM 训练时间?
这道题考察能否把 LLM 训练时间从经验判断转成可计算的工程估算。核心公式是总训练 FLOPs 除以集群有效算力:dense decoder-only 模型可用约 6 × 参数量 × token 数估算前向加反向训练 FLOPs,再除以 GPU 数、单卡峰值 FLOPs 和硬件利用率或 MFU。好的回答还要说明单位换算、序列长度和 attention 开销、MoE active 参数、数据并行扩展效率、checkpoint/eval/restart 等 wall-clock 修正因素。
LLM 训练过程中应该监控哪些指标,如何用 loss、梯度、吞吐、显存、GPU 利用率、checkpoint 和评测集发现异常?
这道题考察 LLM 训练监控体系,而不是只问 loss 曲线。完整回答要覆盖模型质量、数值稳定性、吞吐性能、资源利用、数据管道、checkpoint 可靠性和周期评测。更重要的是说明如何用这些指标定位异常:loss spike 可能来自坏数据或学习率问题,梯度爆炸会伴随 grad norm 和 NaN,吞吐下降可能来自 dataloader、通信或 straggler,显存增长可能是泄漏或碎片,评测集退化可能暴露过拟合、数据污染或训练分布偏移。
CUDA 算子优化后如何做公平 benchmark,排除硬件和精度差异,并证明性能提升真实有效?
这题考 CUDA 算子优化后的性能证明能力。好答案要建立公平 benchmark:固定硬件、驱动、CUDA/cuDNN/cuBLAS 版本、dtype、shape、batch、warmup、stream、同步点和统计方法;排除异步计时、首次编译、温度降频、不同 GPU 架构和精度算力差异;再用 Nsight/NCU 证明瓶颈从访存、计算、occupancy、launch 或同步角度确实改善,并用精度回归和端到端指标证明收益真实。
vLLM 和 SGLang 在 LLM 推理引擎中分别解决什么问题,如何从 PagedAttention、前缀复用和请求调度角度比较?
这题考 LLM 推理引擎的系统理解,而不是问两个项目谁更快。好答案要说明 vLLM 的核心公共概念是提升 serving 吞吐和显存利用率,典型抓手包括 PagedAttention、KV cache 分页管理、continuous batching 和 prefix caching;SGLang 更强调面向复杂 LLM 应用的编程/运行时,围绕结构化生成、多轮/多调用流程、前缀复用、调度和缓存优化降低复杂请求的执行成本。比较时要从 KV 管理、前缀复用、请求调度、结构化输出、内存压力和 workload fit 讲边界,避免虚构版本特性。
为什么 CPU 通常需要多级 Cache,而 GPU 更强调 shared memory、coalescing 和高带宽并行访存?
这题考 CPU/GPU 架构差异和访存优化思路。好答案要说明 CPU 面向低延迟、强控制流、少量复杂线程,依赖多级 Cache、分支预测和乱序执行降低单线程访存延迟;GPU 面向高吞吐、大量线程并行,用 warp 调度隐藏延迟,更强调 coalesced global memory access、shared memory 显式复用、高带宽和 occupancy。不能简单说 GPU 没有 Cache,而要说明 GPU 也有 L1/L2/纹理等缓存,只是优化重点从自动低延迟缓存转向显式数据布局和并行带宽利用。
单机多卡和多机多卡训练的核心差异是什么,如何根据互联拓扑、通信开销和并行策略做选择?
这道题考察分布式训练的系统判断。单机多卡和多机多卡的差异不只是 GPU 数,而是互联拓扑、通信延迟、带宽、故障域、调度、存储和并行策略。好答案要能按显存瓶颈、计算/通信比、batch、模型规模和网络条件选择 DDP、FSDP/ZeRO、张量并行、流水线并行或组合方案。
同题还出现在 1 个公司岗位
训练好的 AI 模型线上推理延迟高时,如何用量化、剪枝、TensorRT 和服务链路优化提速?
这道题考模型部署优化。高质量回答要先定位瓶颈,再分模型压缩、推理引擎、GPU 执行、批处理和服务链路逐层优化,并说明精度、吞吐、P99 延迟和稳定性的取舍。
GPU 推理中 depthwise / separable convolution 为什么可能变慢,为什么常被判断为访存密集型算子?
这题考 GPU 推理中 depthwise / separable convolution 为什么容易 memory-bound。它虽然显著降低 FLOPs,但 activation 读写没有同比减少,算术强度低,无法充分利用 GPU 计算吞吐,瓶颈常转向显存带宽、cache locality 和 kernel launch。
LLM 推理中 KV Cache 大小如何计算,哪些参数决定显存占用?
这题考 LLM 推理显存估算的基础功。高质量回答要给出 KV Cache 公式,说明 batch、上下文长度、层数、KV head 数、head_dim、数据类型、beam/并发和 GQA/MQA 都会影响显存,并区分权重显存、激活显存和 KV Cache 显存。
LLM 量化中 W4A16 表示什么,它在权重位宽和激活精度上有什么取舍?
这题考 LLM 量化命名和工程取舍。W4A16 表示权重 4 bit、激活 16 bit,通常属于 weight-only 或偏权重量化路线,核心收益是降低权重显存和内存带宽,核心代价是权重误差、反量化开销、kernel 适配和部分能力回归。
OpenCL/GPU kernel 为什么要尽量减少分支,掩码写法如何影响 SIMT/SIMD 执行效率和有效吞吐?
这题考 GPU/OpenCL 高性能实现里的分支发散和掩码写法。高质量回答要说明 work-item 在 subgroup/warp/wavefront 内锁步执行,分支不一致会串行执行不同路径并屏蔽 inactive lane,从而降低有效吞吐。
DeepSpeed ZeRO 中哪些训练状态会占用 GPU 显存,为什么 activation 通常用 checkpoint/recompute 而不是像参数或优化器状态一样分页?
这道题考察大模型训练显存构成和 ZeRO 的边界。回答要先把 GPU 显存里的主要训练状态拆清楚:参数、梯度、优化器状态、激活、通信/临时 buffer 和碎片;再说明 ZeRO 主要分片的是模型状态,Stage 1/2/3 分别处理优化器状态、梯度和参数;最后解释 activation 为什么通常用 checkpoint/recompute:它是 batch/sequence 相关的短生命周期中间结果,反向依赖层级顺序,分页到 CPU/NVMe 会引入高带宽低延迟瓶颈,而重计算能用额外 FLOPs 换显存,通常更可控。
FlashAttention 为什么更适合 Prefill,Decode 阶段的瓶颈是什么,Flash Decoding 如何优化?
这题考 GPU 推理性能分析能力。好的回答要区分 Prefill 和 Decode 的计算形态:Prefill 是长 query 的大矩阵注意力,FlashAttention 能提高 IO 效率和并行度;Decode 是单 token 迭代生成,瓶颈常在 KV cache 读取、显存带宽和 SM 利用率,Flash Decoding 通过切分 KV 序列提升并行读取和长上下文吞吐。
235B MoE 模型每 token 只激活约千分之三参数时,如何估算推理 FLOPs、显存占用、KV Cache 和吞吐瓶颈?
这题考 MoE 推理部署估算。回答要区分总参数、每 token 激活参数、权重存储、专家 FLOPs、KV Cache、专家并行通信,以及 prefill 和 decode 阶段的不同瓶颈。