知识点标签

性能排查面试题解析第 2 页

性能排查相关面试题解析,按真实面经题目沉淀核心机制、易错点和面试官追问。

114 道题 8 个岗位 16 个公司

性能排查相关面试题第 2 页

手写 CUDA All-Reduce/归约 kernel 时,如何设计线程内与 block 内归约,并说明 block 间同步和跨 GPU AllReduce 通常为什么需要多 kernel、cooperative groups 或 NCCL?

这题要先澄清 All-Reduce 在面试手写题里的边界:单 GPU 内通常先写归约 kernel,再解释 block 间同步为什么不能靠普通 __syncthreads 解决;真正跨 GPU AllReduce 属于通信 collective,通常交给 NCCL 或多阶段通信算法。

大模型推理变慢时,如何从序列长度、batch、KV Cache、量化、FlashAttention 和 GPU 资源排查?

这题考 LLM 推理性能诊断闭环。高质量回答应先定义慢在哪里,再拆分队列、prefill、decode、KV Cache、batch 调度、attention kernel、量化、GPU 利用率和服务链路,用指标定位瓶颈,而不是一上来堆优化名词。

同题还出现在 1 个公司岗位

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、延迟目标和工程成本。

VikingDB 这类向量数据库如何设计核心链路,向量写入、ANN 索引、元数据过滤和查询召回如何协同?

这道题考察对向量数据库核心链路的系统设计能力,而不是背某个产品未公开实现。回答要从写入、向量化、分片、持久化、ANN 索引构建、增量更新、元数据过滤、查询召回、重排和运维指标串起来,说明向量、原始文档、元数据和索引如何保持一致。关键是讲清近似召回与过滤条件的协同:先过滤、后过滤、混合过滤各有什么代价;写入与索引的实时性、删除更新、分布式扩展、一致性和评估指标如何设计。

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 修正因素。

图像滤波如何通过卷积实现,如何从频域理解低频平滑和高频边缘信息?

图像滤波可以从空间域和频域两条线理解:空间域里,卷积核在局部邻域加权求和,改变每个像素与周围像素的关系;频域里,卷积等价于频谱相乘,滤波器是在保留或抑制不同频率成分。低频通常对应缓慢变化的亮度和大块结构,低通滤波会平滑噪声和细节;高频通常对应边缘、纹理和突变,高通或梯度滤波会强化轮廓但也可能放大噪声。

高斯卷积核如何用可分离卷积等方式优化,时间复杂度和效果会怎样变化?

高斯卷积核优化的核心是利用数学结构和硬件特性减少重复计算。二维高斯核可分解为横向一维高斯和纵向一维高斯的外积,因此一次 K×K 卷积可以改成两次长度 K 的一维卷积,理论复杂度从每像素 O(K²) 降到 O(2K),效果在同一离散核和边界策略下基本等价。进一步还可以通过截断半径、缓存、SIMD、定点化、近似盒滤波或递归滤波继续提速,但要说明精度、边缘和伪影取舍。

积分图如何实现均值滤波,为什么能把窗口求和从面积相关降到常数时间?

积分图用于均值滤波的关键是把每个像素左上方矩形区域的累计和预先存起来。这样任意轴对齐窗口的像素和都可以由四个角的积分值相加相减得到,不再需要逐个遍历窗口内所有像素。对半径为 r 的均值滤波,朴素方法每个像素要累加 (2r+1)² 个值,而积分图在预处理 O(HW) 后,每个窗口求和只需常数次读取和加减,再除以窗口面积即可得到均值。

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/纹理等缓存,只是优化重点从自动低延迟缓存转向显式数据布局和并行带宽利用。

大模型后训练投入成本如何决策,怎样用效果收益、训练成本、推理成本和风险指标做取舍?

这题考的是大模型后训练的工程 ROI 判断。好答案不能只说效果好就继续训,而要把收益、训练成本、推理成本、数据和安全风险放到同一张决策表里,用离线评测、线上指标、成本模型和风险阈值决定做 SFT、DPO/RL、数据修复、提示词优化、RAG、蒸馏还是不做。

大语言模型的参数量具体指什么,如何估算一个 Transformer Block 的参数规模?

这道题考察模型参数量的数量级推导能力。参数量是可训练权重标量的数量,不等于显存、FLOPs 或上下文长度。好答案要能用 hidden size、FFN 中间维度、层数、词表大小估算一个 Transformer block,并说明 GQA/MQA、SwiGLU、MoE、权重共享、LoRA 和量化对成本含义的影响。

单机多卡和多机多卡训练的核心差异是什么,如何根据互联拓扑、通信开销和并行策略做选择?

这道题考察分布式训练的系统判断。单机多卡和多机多卡的差异不只是 GPU 数,而是互联拓扑、通信延迟、带宽、故障域、调度、存储和并行策略。好答案要能按显存瓶颈、计算/通信比、batch、模型规模和网络条件选择 DDP、FSDP/ZeRO、张量并行、流水线并行或组合方案。

同题还出现在 1 个公司岗位

如何评价并落地 AI 辅助开发:它能提升哪些开发环节,开发者仍必须承担哪些工程责任?

这道题考候选人对 AI 编程工具的工程判断。好答案要说明 AI 能提升需求拆解、代码阅读、样板代码、测试、排错和文档效率,也要明确架构决策、正确性、安全、隐私、性能、代码审查和最终交付责任仍在开发者。

同题还出现在 1 个公司岗位