外观
JD 知识点拆解
你拿到一份心仪公司的 JD,上面写着「精通 Python / C++」「熟悉 vLLM 或 TensorRT-LLM」「了解 CUDA 与算子优化」「有量化经验优先」……每一条都看得懂,但每一条又都隔着一层雾:到底要会到什么程度?面试官会怎么考?
本文要做的,就是把 JD 里的"技能词"翻译成一张可逐项复习的知识点清单——不是泛泛的"要学好 CUDA",而是精确到"能写出 GEMM kernel 并解释 bank conflict""能讲清 PagedAttention 解决什么问题、用什么数据结构"这样的具体考点。配合文末的五档自评表与L1→L3 补课路线,你可以在一个下午完成对自身能力的"技能体检",然后得到一张属于自己的学习路线图。
拿到 JD ──① 提取技能词──② 映射到考点──③ 五档自评──④ 生成补课清单──⑤ 每周复测
│ │ │ │
精通/熟悉/了解 本文第二~六节 本文第七节 本文第八节本文适合:投递推理引擎工程师、LLM 系统工程师、推理优化工程师、ML Infra / MLOps、算子工程师、端侧推理工程师的候选人,以及所有想把"我好像都会"变成"我能讲透"的学习者。
一、JD 里的技能词到底考什么
JD 不是课程大纲,它是公司对"你能独立产出什么"的最低期待。招聘方的潜台词是:
写"熟悉 vLLM",不是要求你背下 vLLM 全部 API,而是要求你在面对一个新模型上线时,能独立判断它要不要开 PagedAttention、batch 上限设多少、为什么、出问题怎么排查。
所以拆解 JD 的第一步,是把技能词映射到"面试官实际会考的能力"。
1. 高频技能词的"真实考点"对照表
| JD 原话 | 字面意思 | 面试实际考查(你需要在 5 分钟内证明的) |
|---|---|---|
| 精通 Python / C++ | 会写两种语言 | 能讲清 Python GIL 与 C++ 多线程差异;能写出一个无内存泄漏的 RAII C++ 类;能用 PyTorch C++ extension 调一个自定义算子 |
| 熟悉 PyTorch | 会用框架训练 | 能讲清 autograd / dispatch / eager vs compile;能解释 torch.compile 与 torch.export 的差异;能手画 PyTorch forward 计算图 |
| 熟悉 vLLM 或 TensorRT-LLM | 用过推理引擎 | 能讲清 PagedAttention 的 block table 数据结构;能解释 continuous batching 与 in-flight batching 的差异;能定位 TTFT 高的瓶颈 |
| 了解 CUDA 与算子优化 | 听说过 CUDA | 能写出一个简单 reduction kernel;能解释 warp divergence 与 bank conflict;能读懂 Nsight Compute 报告 |
| 熟悉量化 | 用过 quantize API | 能讲清 PTQ vs QAT 路径;能解释 GPTQ / AWQ / SmoothQuant 三者机制差异;能算 INT4 weight-only 量化的显存节省 |
| 熟悉分布式推理 | 用过 TP / PP | 能算 TP 的通信开销;能解释 EP(expert parallel)与 DP 的区别;能讲 PP 的 bubble 比例 |
| 有 MLOps / 平台经验 | 上过线 | 能讲清模型版本管理、灰度发布、监控告警、回滚预案;能算成本与 GPU 利用率 |
2. 为什么不能按字面理解
三个常见误区:
- 误区一:把 JD 当全表。JD 里 10 条要求,公司心里通常只有 3 条是硬性门槛,其余是"理想候选人画像"。投递前要区分门槛项和加分项,优先补门槛项。
- 误区二:把"熟悉"当成"了解"。面试官写"熟悉 vLLM",考查的是你能讲出原理、动手改源码、说出权衡,而不是"听说过 vLLM"。自评时请用"能讲透"作为"熟悉"的及格线。
- 误区三:只复习考点,不复习组合拳。面试几乎从来不是单点考:它常给你一个场景("线上 Llama-70B 服务 P99 飙到 8 秒,怎么排查?"),要求你同时动用系统(看监控)+ 引擎(看 vLLM 参数)+ 算子(看 attention kernel)+ 业务(看 prompt 分布)。所以下面三个板块必须连起来看。
3. 从 JD 到补课清单的完整流程
拿到 JD
│
▼
① 提取技能词(精通 / 熟悉 / 了解 / 加分项)
│
▼
② 映射到三层知识结构(本文第二~六节 L1→L3)
│
▼
③ 逐项五档自评(本文第七节的自评表)
│
▼
④ 生成个人补课清单(本文第八节的方法)
│
▼
⑤ 每周执行 → 复测 → 更新清单接下来五节就是这张地图的三大板块(L1 / L2 / L3 各拆为若干子节)。
二、L1 基础层:编程、系统、硬件入门
JD 词:「精通 Python / C++」「扎实的工程能力」「了解 GPU 架构」。L1 是所有推理部署岗的底子,不通过这一层,简历在初筛就被筛掉。
1. Python 工程级
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| GIL 与多线程 | "Python 多线程能加速 CPU 推理吗?" | 术语表 |
| asyncio 异步 | "vLLM 的 API server 为什么用 asyncio?" | 模型服务 |
| 类型注解 / mypy | "怎么给推理引擎写类型安全的接口?" | — |
| 内存管理 | "为什么大模型推理要避免 Python 对象频繁创建?" | 内存与带宽 |
| C 扩展 / PyBind11 | "你怎么调一个 C++ 算子进 Python?" | 算子融合 |
2. C++ 系统级
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| RAII / 智能指针 | "推理引擎里怎么管理 device buffer 生命周期?" | vLLM |
| 模板与编译期 | "CUTLASS 的 template 体操你看过吗?" | GPU 优化原理 |
| 多线程 / 互斥 | "Triton Server 的并发 model instance 怎么实现?" | Triton 推理服务 |
| 移动语义 / 右值 | "为什么 vLLM 的 Request 对象要 move 而非 copy?" | — |
| 构建系统 CMake / Bazel | "你怎么 build 一个带 CUDA 的 C++ 项目?" | — |
3. Linux 与性能分析
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| 进程 / 线程 / 协程 | "vLLM 的 worker 与 driver 通信用什么?" | vLLM |
| strace / ltrace / perf | "线上推理慢,你怎么定位系统调用瓶颈?" | 基准测试 |
| Nsight Systems | "你用过 nsys 吗?能讲一个 trace 故事吗?" | GPU 优化原理 |
| Nsight Compute | "ncu 报告里你看哪几个指标?" | 算子融合 |
| PyTorch Profiler | "你怎么用 torch.profiler 看 forward 的瓶颈?" | 调优实践 |
4. 网络与协议
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| TCP / HTTP / gRPC | "Triton Server 用 gRPC 而非 HTTP,为什么?" | Triton 推理服务 |
| RDMA / NCCL | "TP 通信走 PCIe 还是 NVLink,怎么测?" | 分布式推理 |
| WebSocket / SSE | "LLM 流式输出用什么协议?" | 模型服务 |
5. GPU 硬件入门
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| SIMT 模型 | "GPU 的 thread / block / grid 怎么映射?" | 硬件入门 |
| 显存层次 | "shared memory / L1 / L2 / HBM 的延迟差多少?" | 内存与带宽 |
| Tensor Core | "Tensor Core 与 CUDA Core 的差异?" | GPU 优化原理 |
| H100 vs A100 | "H100 关键升级是什么?FP8 / TMA 怎么影响推理?" | 硬件入门 |
| NVLink / NVSwitch | "为什么 TP 在 8 卡内快、跨节点慢?" | 分布式推理 |
L1 的"假熟悉"陷阱
"会用 Python"和"能讲 GIL"是两回事。L1 层最容易出现"会用不会讲"的假熟悉,因为日常调包就够用了。面试会直击你最弱的点:你以为 Python 熟,结果被问 GIL 与 asyncio 的关系就答不上来。自评时按"能讲透"打分,别按"用过"打分。
三、L2 主题层:推理引擎、量化、调度
JD 词:「熟悉 vLLM 或 TensorRT-LLM」「有量化经验」「熟悉 KV cache 与 batching」。L2 是面试的必考主线,也是推理部署岗与传统 ML 岗的最大差异所在。
1. 推理引擎机制
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| vLLM 整体架构 | "画出 vLLM 的 LLMEngine / Scheduler / Executor 三层关系" | vLLM |
| PagedAttention | "block table 是什么数据结构?为什么解决碎片?" | 批处理与调度 |
| Continuous batching | "和 static batching 比,吞吐提升来自哪?" | 批处理与调度 |
| TensorRT-LLM In-Flight Batching | "和 vLLM continuous batching 有何区别?" | TensorRT-LLM |
| Chunked Prefill | "为什么把长 prompt 分块?" | vLLM |
| Speculative Decoding | "Medusa / EAGLE 的差异?什么时候不该用?" | 投机解码 |
| Prefix Caching | "重复 prompt 怎么省 KV cache 重算?" | vLLM |
2. KV Cache 与显存管理
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| KV cache 大小计算 | "Llama-70B、batch=8、seq=2048,KV cache 多大?" | 内存与带宽 |
| KV cache 量化 | "INT8 KV cache 省多少显存?精度损失呢?" | 量化 |
| PagedAttention 数据结构 | "block_size 怎么选?物理块怎么分配?" | 批处理与调度 |
| Multi-Query / Grouped-Query Attention | "MQA / GQA 怎么省 KV cache?" | vLLM |
| Ring / Paged Attention 跨节点 | "PP + KV cache 怎么协调?" | 分布式推理 |
3. 量化与压缩
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| PTQ vs QAT | "PTQ 掉点怎么办?什么时候上 QAT?" | 量化 |
| GPTQ / AWQ / SmoothQuant | "三者机制差异?分别适合什么模型?" | 量化 |
| Weight-only vs Weight+Activation | "LLM 推理为什么主推 weight-only?" | 权重-激活混合精度 |
| INT4 / INT8 / FP8 | "H100 上 FP8 vs INT8 谁快?为什么?" | 量化 |
| KV cache 量化 | "KV cache INT8 量化的精度损失来源?" | 量化 |
| 剪枝与蒸馏 | "LLM 推理岗为什么很少讲剪枝?" | 剪枝、蒸馏 |
4. Batching 与调度
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| Static batching | "为什么 static batching 在 LLM 上吞吐低?" | 批处理与调度 |
| Continuous batching | "调度器怎么决定何时换入换出请求?" | 批处理与调度 |
| In-Flight Batching | "TensorRT-LLM 的 in-flight 与 vLLM 的 continuous 有何区别?" | TensorRT-LLM |
| Prefill / Decode 分离 | "为什么要分离?分离后通信开销?" | 分布式推理 |
| 优先级调度 | "VIP 用户请求怎么调度才不影响普通用户?" | 模型服务 |
5. 服务与编排
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| Triton Server model repository | "怎么配一个多版本灰度的 model repository?" | Triton 推理服务 |
| FastAPI / asyncio 服务化 | "vLLM 的 OpenAI 兼容 server 怎么实现流式?" | 模型服务 |
| K8s 部署与扩缩容 | "怎么根据 QPS 自动扩 vLLM 副本?" | 模型服务 |
| 灰度与回滚 | "推理模型上线怎么做 5% 灰度?" | 模型服务 |
| 监控指标 | "TTFT / TPOT / queue length 怎么打点?" | 基准测试 |
L2 的复习策略
L2 的考点都对应到"开源项目源码 + 论文 + 实测"三件套。最有效的复习是:挑一个引擎(推荐 vLLM)精读源码 + 跑一次 benchmark + 改一个参数看效果。三步走完,所有 L2 题都能讲出"我做过的"而不是"我看过的"。具体见基准测试与调优实践。
四、L3 高阶层:算子、图、分布式、端侧
JD 词:「了解算子优化」「熟悉分布式推理」「有端侧部署经验优先」。L3 是面试的"加分项 / 区分项",进入这一层意味着你已通过 L1/L2 的初筛,正在被用来区分"会用 vs 会改"。
1. 算子开发
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| FlashAttention 原理 | "FlashAttention-1/2/3 各做了什么?" | 算子融合 |
| CUDA kernel 编写 | "手写一个 reduction kernel" | GPU 优化原理 |
| Triton DSL | "Triton 相比 CUDA 的优势?什么场景该用?" | 算子融合 |
| 算子融合策略 | "Linear + ReLU 融合前后 launch 开销怎么算?" | 算子融合 |
| Tensor Core / WGMMA | "Hopper 上 wgmma 指令与 mma 指令差异?" | GPU 优化原理 |
| TMA(Tensor Memory Accelerator) | "TMA 解决什么问题?为什么 H100 推理快?" | 硬件入门 |
| Bank conflict / coalesced access | "shared memory bank 怎么避免冲突?" | GPU 优化原理 |
| CUDA Graph | "为什么 LLM 推理要捕获 CUDA Graph?" | 图优化 |
2. 图优化与编译
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| 算子融合 | "Conv + BN + ReLU 融合后省了什么?" | 图优化 |
| 常量折叠 / 死代码消除 | "torch.compile 的 constant folding 做什么?" | 图优化 |
| torch.compile / Inductor | "torch.compile 在推理时与 eager 差多少?为什么?" | 图优化 |
| AOT vs JIT | "TensorRT 是 AOT、PyTorch eager 是 JIT,含义?" | 图优化 |
| ONNX / TorchScript / Export | "torch.export 相比 TorchScript 好在哪?" | 图优化 |
| MLIR / XLA / TVM | "编译器后端在推理引擎里的位置?" | 图优化 |
3. 分布式推理
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| Tensor Parallel | "TP 切权重,通信开销怎么算?" | 分布式推理 |
| Pipeline Parallel | "PP 的 bubble 比例怎么算?" | 分布式推理 |
| Expert Parallel (MoE) | "EP 与 DP 的区别?MoE 推理为什么用 EP?" | 分布式推理 |
| Disaggregated Prefill / Decode | "为什么要分离?跨节点 KV cache 怎么传?" | 分布式推理 |
| Multi-node 推理 | "跨节点 TP 为什么慢?NVSwitch 与以太网的差异?" | 分布式推理 |
| Ring Attention | "Ring Attention 解决长上下文的什么问题?" | 分布式推理 |
4. 端侧推理
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| llama.cpp / ggml | "llama.cpp 为什么能在 M1 上跑 70B?" | llama.cpp |
| MLC-LLM / Apache TVM | "MLC 编译路径与 llama.cpp 的差异?" | 移动端部署 |
| ARM NEON / SVE | "ARM CPU 推理优化靠什么?" | 移动端部署 |
| Apple Metal / ANE | "iPhone 上 LLM 走 Metal 还是 ANE?" | 移动端部署 |
| WebGPU / Vulkan | "浏览器里跑 LLM,瓶颈在哪?" | 移动端部署 |
| INT4 group-wise 量化 | "为什么端侧主推 INT4 group-wise?" | 量化 |
5. 性能指标与基准
| 考点 | 面试怎么考 | 本站对应页 |
|---|---|---|
| TTFT / TPOT 定义 | "TTFT 与 TPOT 的物理含义?" | 延迟与吞吐 |
| Compute-bound vs Memory-bound | "怎么判断 LLM 推理当前是哪种?" | Roofline 模型 |
| Roofline 模型 | "怎么用 Roofline 算理论上限?" | Roofline 模型 |
| HBM 带宽 | "Llama-70B 推理是 memory-bound,为什么?" | 内存与带宽 |
| Benchmark 方法论 | "怎么写一个公平的 LLM 推理 benchmark?" | 基准测试 |
| 预热与统计 | "为什么要预热?怎么取 P50/P99?" | 基准测试 |
五、JD 关键词 → 本站页面 大对照表
把上面四节汇总成一张可打印的对照表,作为"看 JD → 找页面"的入口:
| JD 关键词 | 真实考点 | 本站对应页 | L1 / L2 / L3 |
|---|---|---|---|
| Python / C++ | GIL、RAII、模板、PyBind11 | 术语表、vLLM | L1 |
| Linux / 性能分析 | nsys / ncu / perf / PyTorch Profiler | 基准测试 | L1 |
| 网络 / gRPC | TCP / HTTP / gRPC / RDMA / NCCL | Triton 推理服务 | L1 |
| GPU 架构 | SIMT / Tensor Core / HBM / NVLink | 硬件入门 | L1 |
| vLLM | 架构 / PagedAttention / Continuous batching | vLLM | L2 |
| TensorRT-LLM | In-Flight Batching / Plugin / FP8 | TensorRT-LLM | L2 |
| 量化 | GPTQ / AWQ / SmoothQuant / INT4 / INT8 / FP8 | 量化、权重-激活混合精度 | L2 |
| KV cache | 大小计算 / PagedAttention / MQA / GQA | 批处理与调度、内存与带宽 | L2 |
| Batching | Continuous / In-Flight / Prefill-Decode 分离 | 批处理与调度 | L2 |
| 服务化 | Triton / FastAPI / K8s / 灰度 | Triton 推理服务、模型服务 | L2 |
| CUDA | kernel / SIMT / bank conflict / Tensor Core | GPU 优化原理 | L3 |
| Triton DSL | 写 attention / quantization kernel | 算子融合 | L3 |
| FlashAttention | FA1/2/3 / tiling / recompute | 算子融合 | L3 |
| CUDA Graph | 捕获与重放 / launch overhead | 图优化 | L3 |
| 图优化 | 算子融合 / 常量折叠 / torch.compile | 图优化 | L3 |
| 分布式推理 | TP / PP / EP / Disaggregated | 分布式推理 | L3 |
| 投机解码 | Medusa / EAGLE / 接受率 | 投机解码 | L3 |
| 端侧推理 | llama.cpp / MLC / Metal / WebGPU | llama.cpp、移动端部署 | L3 |
| 性能指标 | TTFT / TPOT / Roofline / HBM 带宽 | 延迟与吞吐、Roofline 模型 | L3 |
怎么用这张表
按 JD 关键词逐行查"本站对应页",把"会 / 不会 / 半会不会"标在每个页面名后,就得到了你的补课清单入口。不要试图把整张表都补满——只补"硬性要求 + 加分项中你差一两档"的部分。
六、学习优先级建议
按"投入产出比 + 岗位匹配度"两个维度排优先级:
第 1 优先级 L1 Python / C++ / Linux / 性能分析
地基,所有推理岗位的硬门槛
投入:持续,每周 5–10 小时长期维持
第 2 优先级 L2 推理引擎(vLLM / TensorRT-LLM)+ KV cache + batching
LLM 推理岗面试主线
投入:2–4 周,源码精读 + 实测
第 3 优先级 L2 量化 + 服务化
所有部署岗的标配
投入:1–2 周,做对比实验
第 4 优先级 L3 算子开发(CUDA / Triton)+ 图优化
引擎 / 优化 / 算子岗的加分项
投入:3–6 周持续,从 reduction 起步
第 5 优先级 L3 分布式推理 + 端侧推理 + 投机解码
岗位特定加分项,按目标岗位补
投入:1–2 周,看论文 + 跑 demo时间分配的"硬约束"
L1 永远是优先级 1,任何岗位的硬性门槛都包含 Python + Linux,不能跳过。L2 是优先级 2,因为 LLM 推理岗在 2026 年占推理部署岗的 70%+。L3 按目标岗位定制——投引擎岗补算子 + 图优化,投系统岗补服务化 + K8s,投端侧岗补 llama.cpp + 量化。详见求职冲刺线的"岗位类型 → 学习路径"映射。
七、自评表:五档自评,可打印
把前面四节的考点汇总成一张可打印的自评表。打分标准:
| 档位 | 含义 | 判定标准(对着镜子给自己打分) |
|---|---|---|
| 1 没听过 | 完全陌生 | 这个词都没见过 |
| 2 听说过 | 有点印象 | 见过/听过,但讲不出定义 |
| 3 了解 | 知道概念 | 能给出定义和一个例子,但说不出原理与权衡 |
| 4 熟悉 | 能动手用 | 能独立实现 / 调参 / 排查,知道优缺点与适用场景 |
| 5 能讲透 | 能教别人 | 能在 5 分钟内讲清原理 + 推导 + 权衡 + 反例,经得起追问 |
打印与勾选方法
把本节打印出来,按板块逐行打勾,勾选你当前真实水平对应的档位。诚实是前提——目标是把"能讲透"以下的行全部暴露出来,而不是让表看起来好看。建议每行只勾一档,拿不准时往低一档勾。
板块 A:L1 基础层
| 考点 | 没听过 | 听说过 | 了解 | 熟悉 | 能讲透 |
|---|---|---|---|---|---|
| Python GIL / asyncio | □ | □ | □ | □ | □ |
| C++ RAII / 智能指针 / 模板 | □ | □ | □ | □ | □ |
| Linux 性能分析(perf / nsys) | □ | □ | □ | □ | □ |
| Nsight Compute 报告解读 | □ | □ | □ | □ | □ |
| PyTorch Profiler | □ | □ | □ | □ | □ |
| TCP / gRPC / HTTP 区别 | □ | □ | □ | □ | □ |
| RDMA / NCCL 通信 | □ | □ | □ | □ | □ |
| GPU SIMT / 显存层次 | □ | □ | □ | □ | □ |
| Tensor Core / TMA | □ | □ | □ | □ | □ |
| H100 vs A100 关键差异 | □ | □ | □ | □ | □ |
板块 B:L2 推理引擎与调度
| 考点 | 没听过 | 听说过 | 了解 | 熟悉 | 能讲透 |
|---|---|---|---|---|---|
| vLLM 架构 / Scheduler | □ | □ | □ | □ | □ |
| PagedAttention block table | □ | □ | □ | □ | □ |
| Continuous batching | □ | □ | □ | □ | □ |
| In-Flight Batching (TRT-LLM) | □ | □ | □ | □ | □ |
| Chunked Prefill | □ | □ | □ | □ | □ |
| Prefix caching | □ | □ | □ | □ | □ |
| KV cache 大小计算 | □ | □ | □ | □ | □ |
| KV cache 量化 | □ | □ | □ | □ | □ |
| MQA / GQA | □ | □ | □ | □ | □ |
| Triton Server model repository | □ | □ | □ | □ | □ |
| K8s 部署与扩缩容 | □ | □ | □ | □ | □ |
| 灰度发布与回滚 | □ | □ | □ | □ | □ |
| TTFT / TPOT 监控 | □ | □ | □ | □ | □ |
板块 C:L2 量化与压缩
| 考点 | 没听过 | 听说过 | 了解 | 熟悉 | 能讲透 |
|---|---|---|---|---|---|
| PTQ vs QAT | □ | □ | □ | □ | □ |
| GPTQ / AWQ / SmoothQuant | □ | □ | □ | □ | □ |
| Weight-only vs Weight+Activation | □ | □ | □ | □ | □ |
| INT4 / INT8 / FP8 选型 | □ | □ | □ | □ | □ |
| 算子融合 / 图优化概念 | □ | □ | □ | □ | □ |
| 剪枝 / 蒸馏在 LLM 上的局限 | □ | □ | □ | □ | □ |
板块 D:L3 算子与图
| 考点 | 没听过 | 听说过 | 了解 | 熟悉 | 能讲透 |
|---|---|---|---|---|---|
| FlashAttention-1/2/3 原理 | □ | □ | □ | □ | □ |
| CUDA kernel reduction 手写 | □ | □ | □ | □ | □ |
| Triton DSL 写 attention | □ | □ | □ | □ | □ |
| 算子融合策略 | □ | □ | □ | □ | □ |
| Tensor Core / WGMMA / TMA | □ | □ | □ | □ | □ |
| Bank conflict / coalesced | □ | □ | □ | □ | □ |
| CUDA Graph 捕获 | □ | □ | □ | □ | □ |
| torch.compile / Inductor | □ | □ | □ | □ | □ |
| AOT vs JIT 编译 | □ | □ | □ | □ | □ |
板块 E:L3 分布式与端侧
| 考点 | 没听过 | 听说过 | 了解 | 熟悉 | 能讲透 |
|---|---|---|---|---|---|
| Tensor Parallel 通信开销 | □ | □ | □ | □ | □ |
| Pipeline Parallel bubble | □ | □ | □ | □ | □ |
| Expert Parallel (MoE) | □ | □ | □ | □ | □ |
| Disaggregated Prefill/Decode | □ | □ | □ | □ | □ |
| Ring Attention | □ | □ | □ | □ | □ |
| llama.cpp / ggml | □ | □ | □ | □ | □ |
| MLC-LLM / TVM | □ | □ | □ | □ | □ |
| ARM NEON / Apple Metal | □ | □ | □ | □ | □ |
| WebGPU / Vulkan | □ | □ | □ | □ | □ |
| 投机解码(Medusa / EAGLE) | □ | □ | □ | □ | □ |
| Roofline 模型 | □ | □ | □ | □ | □ |
| HBM 带宽与 memory-bound | □ | □ | □ | □ | □ |
八、生成个人补课清单的方法
自评表打完之后,用下面四步把它变成一张可执行的周计划。
第一步:按档位归类
把每个考点归入三类:
- A 类(档位 1~2,完全陌生):优先级最高,先解决"它是什么"。目标:一周内升到 3。
- B 类(档位 3,了解):缺的是原理与权衡。目标:两周内升到 4,标准是"能独立实现 + 说出适用场景"。
- C 类(档位 4,熟悉):缺的是"讲透"能力。目标:把每个考点写成一篇 5 分钟口头讲稿。这部分直接对应面试表现。
档位 5 的考点不用再花时间,除非你投的是偏教学或偏理论的岗位。
第二步:按板块排序,算总账
把 A、B、C 三类按板块汇总,得到三张"欠账表"。补课顺序建议:
第 1 优先级 板块 A L1 基础 —— 它是所有其他板块的地基
第 2 优先级 板块 B L2 引擎调度 —— LLM 推理岗面试主线,投入产出比最高
第 3 优先级 板块 C L2 量化 —— 几乎所有部署岗必备
第 4 优先级 板块 D L3 算子图 —— 若目标岗位是引擎 / 优化 / 算子
第 5 优先级 板块 E L3 分布式端侧 —— 按目标岗位补第三步:套用"补课清单"模板
| 周次 | 重点板块 | A 类任务(升到 3) | B 类任务(升到 4) | C 类任务(产出讲稿) | 产出物 |
|---|---|---|---|---|---|
| 第 1 周 | L1 基础 | 3 个陌生考点 | 2 个考点补原理 | 1 篇讲稿(如 GIL) | 笔记 + 讲稿 |
| 第 2 周 | L2 引擎 + KV cache | 2 个陌生考点 | 3 个考点补原理 | 2 篇讲稿(如 PagedAttention、continuous batching) | 源码笔记 + 讲稿 |
| 第 3 周 | L2 量化 + 服务化 | 1 个陌生考点 | 2 个考点补原理 | 2 篇讲稿(如 GPTQ vs AWQ、TTFT/TPOT) | 对比实验 + 讲稿 |
| 第 4 周 | L3 算子 / 分布式 | 1 个陌生考点 | 2 个考点补原理 | 2 篇讲稿(如 FlashAttention、TP) | 手写 kernel + 讲稿 |
| 第 5 周起 | 循环直到 A/B 清零 | 动态调整 | 动态调整 | 向"组合拳"题推进 | 模拟面试录音 |
第四步:三个执行原则
- 原则一:讲得出来才算会。每个考点复习完,用手机录一段 5 分钟自讲,回听找出"卡壳处"——卡壳处就是没懂的地方。
- 原则二:源码 + 实测 > 看文档。推理引擎类考点务必自己跑一次 vLLM、改一次参数、看一次 Nsight——"看过文档"和"跑过实测"在面试里是两回事。
- 原则三:每周复测。周日晚上用自评表重新打分,把"升档"的考点从清单划掉,把"原地踏步"的考点标注出来并追问原因——通常不是不够努力,而是复习方式不对(比如只看不练)。
补充一句
补课清单的目标不是"把表涂满",而是把目标岗位 JD 里的门槛项全部升到 4 档以上。岗位不需要的板块(比如做引擎岗,端侧推理不必强求 5 档),卡在 4 档即可,把时间投到刀刃上。
九、延伸阅读
站内联动:
- 求职板块首页 · JD 解读与岗位选择 · 简历诊断 · 面试真题
- L1 基础层深度正文:什么是推理、推理与训练的差异、GPU 优化原理、硬件入门
- L2 主题层深度正文:vLLM、TensorRT-LLM、量化、权重-激活混合精度、批处理与调度、模型服务、Triton 推理服务
- L3 高阶层深度正文:算子融合、图优化、分布式推理、投机解码、llama.cpp、移动端部署、延迟与吞吐、Roofline 模型、内存与带宽
- 实战页:基准测试、调优实践、引擎对比、常见陷阱
- 随查随用:术语表是查漏补缺的口袋书
参考资料(真实资源):
- vLLM 官方文档与源码 —— L2 引擎类考点的最佳教材
- TensorRT-LLM 官方文档 —— 与 vLLM 对比学习的另一极
- NVIDIA CUDA C++ Programming Guide —— L3 算子开发的官方教材
- OpenAI Triton Language Tutorials —— Triton DSL 入门
- NVIDIA Nsight Systems Documentation —— 性能分析工具链官方文档
- Dao-Beck-Puzzar-Kolter. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (NeurIPS 2022) —— FlashAttention 原论文
- Kwon et al. Efficient Memory Management for Large Language Model Serving with PagedAttention (SOSP 2023) —— vLLM/PagedAttention 原论文
- Frantar et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers (ICLR 2023) —— GPTQ 量化原论文
- Lin et al. AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration (MLSys 2024) —— AWQ 量化原论文
- Cai et al. Medusa: Simple Framework for Accelerating LLM Generation with Multiple Decoding Heads (ICML 2024) —— Medusa 投机解码原论文
- Li et al. EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty (ICML 2024) —— EAGLE 投机解码原论文