很好,这个信息非常关键。
4090 + Python 熟 + C++ 有基础 + 框架不熟,这在“推理优化工程师候选人”里是非常好的起点,而且路线应该明显偏向 “先框架 → 再 CUDA → 最后深度 C++”,而不是反过来。

下面我给你一条为 4090 + 当前能力定制的 12~16 周硬核路线。每一步都尽量:
👉 不浪费时间
👉 能产出可写进简历的成果
👉 完全贴合 vLLM / SGLang / 推理优化岗位


总体战略(先说结论)

你的正确打法是:

用 Python 驯服框架 → 用 profiler 发现瓶颈 → 用 CUDA/C++ 精准打击

不要一开始就啃 CUDA 大部头,那样会慢,而且和推理引擎脱节。


阶段 1:把 vLLM / SGLang “用到烂”(第 1–2 周)

目标:
你要能闭着眼睛回答

  • 为什么 vLLM 快?
  • TTFT 和 TPOT 谁慢在什么阶段?
  • prefill / decode 各自吃什么资源?

你现在最该做的第一件事

只干一件事:系统性 benchmark vLLM & SGLang

任务 1:推理性能基线(必做)

在 4090 上跑:

  • 模型:LLaMA-7B 或 Qwen2.5-7B(FP16)

  • 框架:vLLM + SGLang

  • 维度:

    • 并发:1 / 4 / 8 / 16 / 32
    • 输入长度:128 / 512 / 2k
    • 输出长度:128 / 512

测这些指标:

  • TTFT
  • TPOT
  • 吞吐(tokens/s)
  • 显存占用

⚠️ 不要只跑一次,要 稳定统计 P50/P95

你此时该“悟到”的点

  • prefill 是 GEMM-heavy,decode 是 memory-bound
  • 高并发下 TTFT 爆炸 ≠ GPU 算力不够,而是调度 / 批处理
  • vLLM 的 Continuous Batching 为什么对 decode 极其友好

产出

  • 一个 repo:llm-inference-benchmark

  • README 里有 结论性语言

    “在 4090 上,当并发 > 16 时,decode 阶段成为瓶颈,TPOT 主要受 KV Cache 带宽限制”

这一步就已经秒杀 70% 只会“用模型”的人


阶段 2:读懂框架核心路径(第 3–5 周)

目标:
你要能在脑子里画出 “一次请求从 HTTP 到 GPU kernel” 的路径图

推荐顺序(非常重要)

不要全读源码,读“热路径”

vLLM 必读模块

只看这几块(别贪):

  • engine/(请求如何进入 engine)
  • scheduler.py(核心)
  • worker/(GPU worker)
  • paged_kv_cache 相关代码

你要回答的问题:

  • 请求是如何被拆成 prefill + decode step?
  • Continuous Batching 是怎么避免 decode 阶段 GPU 空转的?
  • KV Cache 为什么要分页?

SGLang

重点不是 CUDA,而是:

  • 请求编排逻辑
  • prefill/decode pipeline
  • cache 复用策略

阶段 2 必做项目(非常关键)

项目 B:改一个“可测量”的行为

选一个 Python 层 就能改的点(对你现在最友好):

示例方向(任选其一)

  • 改调度策略(例如限制长 prompt 抢占)
  • 在 decode 阶段插入简单的优先级策略
  • 改 KV cache page size / eviction 策略(实验性质)

你不需要“很牛”,你只需要:

  • 改之前 vs 改之后
  • benchmark 证明 P95 延迟 or 吞吐有变化

产出

  • 一个 PR(哪怕是实验 PR)

  • 一篇 README:

    • 问题是什么
    • 为什么怀疑这里慢
    • 实验结果
    • 局限性

面试官看到这个,基本会默认你“真改过推理引擎”。


阶段 3:4090 上的 CUDA 实战(第 6–9 周)

现在才轮到 CUDA。

为什么现在才上 CUDA?

因为你现在:

  • 知道 慢在哪里
  • 知道 哪个 kernel 值得优化
  • 不会“瞎写 kernel”

CUDA 学习方式(非常重要)

不要系统学 CUDA,直接 以推理算子为中心学

推荐算子(按性价比排序)

  1. RMSNorm / LayerNorm
  2. RoPE
  3. Sampling(top-k / top-p)
  4. logits 后处理

必做项目 C

项目:PyTorch CUDA Extension + 性能对比

流程:

  1. 用 PyTorch baseline(Python)
  2. 写 C++/CUDA Extension
  3. Nsight Systems 看 timeline
  4. Nsight Compute 看 kernel 指标
  5. 对比 TPOT / kernel time

你要学会说这种话:

“这个 kernel 之前是 memory-bound,L2 hit rate 低,通过重排访存 + shared memory,DRAM throughput 提升 1.4x”

⚠️ 4090 是 Ada 架构,你一定要:

  • 看 tensor core 是否真的在用
  • 看是不是被 memory 带宽卡死

阶段 4:量化(第 10–13 周)

你这张 4090 非常适合做量化实验

推荐顺序

  1. FP16 → INT8(smoothquant / AWQ)
  2. 再看 INT4(GPTQ)

项目 D(端到端量化)

  • 同一个模型

  • 同一个 workload

  • 对比:

    • 显存
    • 吞吐
    • TTFT
    • 输出质量(简单 task)

重点不是“量化理论”,而是:

量化是否真的加速了你这个 workload?

你会发现:

  • 有些量化提升算力但不提速(decode 被 memory 卡死)
  • KV Cache 才是显存大头

这正是推理工程师的价值判断。


你的“最终人设”(非常重要)

当你走完这条路线,你在面试中的身份不是:

“我学过 CUDA / 我看过 vLLM”

而是:

“我在 4090 上系统性分析过 vLLM/SGLang 推理瓶颈,并做过源码级与 kernel 级优化,有完整 benchmark 以及 profiler 证据。”

这是 实战型推理优化工程师


下一步建议(很具体)

你现在 下一步就该做的事

  1. 这周内:

    • 跑 vLLM + SGLang 的系统 benchmark
  2. 下周:

    • 开始读 vLLM scheduler + worker
  3. 同时:

    • 搭 Nsight Systems / Compute

如果你愿意,下一步我可以直接帮你 选一个“最适合你第一个改的 vLLM 点”,并告诉你:

  • 该看哪几个文件
  • 哪个函数最值得下手
  • 怎么设计 benchmark 才像“线上场景”

你已经站在一个非常好的起跑线上了,这条路走对了,半年内你就会明显和普通“模型工程师”拉开差距。


文章作者: Austin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Austin !
评论
  目录