Sequence 02 - 从零学习到满足 JD + CV 要求
这份路线适合“以前做过,但很多忘了”的状态。目标不是从零变专家,而是在短时间内恢复系统性理解、能讲项目、能回答深挖、能做实验。
0. 先回答:具体内容到底在哪?
你判断得对:当前 sequence-02 的作用是“从零学习路线”和“学习顺序”,它本身不应该只列标题,但具体展开内容确实分散在后面的文件里。正确理解方式是:
sequence-02 = 学习路线、优先级、每一阶段该达到什么水平
sequence-03 = CV 项目具体怎么讲、怎么被深挖
sequence-04 = JD 技术点具体学习内容
sequence-05 = 环境搭建:CUDA / Windows WSL / macOS / ARM / ROCm / Vulkan / WebGPU
sequence-06 = 面试 Q&A:中文理解 + 中文回答 + 英文回答 + 继续追问
sequence-07 = 实战实验:跑什么、怎么看结果、怎么转成面试语言
所以答案是:不是只有 03。
03 只负责“CV 项目深挖”。如果你要学技术本身,要看 04;如果你要搭环境,要看 05;如果你要跑实验,要看 07;如果你要准备面试问答,要看 06。
0.1 你应该按这个方式读
flowchart TB
Q[我现在不知道具体学什么] --> S02[先看 sequence-02: 路线和优先级]
S02 --> Env[先搭环境]
Env --> S05[sequence-05: 平台环境]
S02 --> Tech[学 JD 技术]
Tech --> S04[sequence-04: JD 技术深挖]
S02 --> Lab[跑实验验证]
Lab --> S07[sequence-07: 实战实验]
S02 --> CV[准备自己项目]
CV --> S03[sequence-03: CV 项目深挖]
S02 --> QA[准备被追问]
QA --> S06[sequence-06: 深度 Q&A]
0.2 具体内容索引
| 你想解决的问题 | 去哪里看 | 具体看什么 |
|---|---|---|
| JD 要求和我的 CV 怎么匹配? | sequence-01-jd-cv-match-map.html |
JD/CV 匹配总表、强匹配、短板、面试风险 |
| 我从零怎么开始学? | 本文 sequence-02 |
先学什么、后学什么、每阶段合格标准 |
| 我 CV 里的项目到底怎么讲? | sequence-03-cv-project-deep-dive.html |
AI 风控/LLM 平台、Vulkan、WebGPU、高并发、ATE、Quant 项目 |
| AI serving / CUDA / NCCL / UCX / NIXL / GPUNetIO 是什么? | sequence-04-jd-technical-deep-dive.html |
每个 JD 技术点的定义、机制、边界、面试追问 |
| Windows/WSL/CUDA/macOS/ARM/ROCm 怎么搭? | sequence-05-platform-environments.html |
各平台安装、验证命令、适用边界 |
| 面试官会怎么问,我怎么答? | sequence-06-deep-interview-qa.html |
中英双语 Q&A、继续追问、推荐回答 |
| 我要实际跑什么证明自己会? | sequence-07-practical-labs.html |
CUDA/vLLM/NCCL/UCX 等实验、指标解释、面试话术 |
0.3 这份 sequence-02 应该怎么用
你不要把 sequence-02 当成一本完整教材。它应该像“训练计划”:
先在这里确定今天学哪一块
然后跳到对应 sequence 看具体解释
再去 sequence-07 跑实验
最后回 sequence-06 把内容变成面试回答
比如你今天学 UCX/RDMA/GPUDirect/NIXL/GPUNetIO:
1. 先看本文 Stage 5,知道学习顺序。
2. 去 sequence-04 看 UCX/RDMA/GPUDirect/NIXL/GPUNetIO 的具体解释。
3. 去 sequence-05 看你的机器能不能搭出验证环境。
4. 去 sequence-07 看能跑什么实验,不能跑真实 RDMA 时怎么设计验证。
5. 去 sequence-06 准备英文回答和继续追问。
1. 总学习地图
flowchart TB
Start[从零恢复] --> Base[基础层]
Base --> GPU[GPU/CUDA 层]
Base --> AI[AI Serving 层]
Base --> Net[Networking/Data Movement 层]
GPU --> Profile[Profiling & Optimization]
AI --> Runtime[Runtime / KV / Scheduling]
Net --> Comm[NCCL / UCX / RDMA / NIXL]
Profile --> Architect[System Architecture]
Runtime --> Architect
Comm --> Architect
Architect --> Interview[项目讲解 + Q&A + Scenario]
2. 学习阶段
Stage 1:先恢复系统工程语言
你要先能讲这些词,不然 JD 后面的技术都讲不深:
| 概念 | 必须理解到什么程度 |
|---|---|
| latency / throughput / P99 | 平均值不够,tail latency 决定服务体验。 |
| bottleneck / critical path | 不要凭感觉优化,要先找关键路径。 |
| queueing / backpressure | 高并发系统里请求排队和反压如何造成尾延迟。 |
| memory bandwidth / copy / DMA | 很多 GPU/network 瓶颈不是算力,而是数据搬运。 |
| profiling | 先 timeline,再局部细节;先证据,再优化。 |
| prototype | 先假设、基线、microbenchmark,再端到端验证。 |
最小输出:
我会把任何性能问题先拆成:
请求路径 -> 队列 -> compute -> memory/copy -> network/communication -> synchronization -> tail latency。
Stage 2:AI inference/model serving
学习顺序:
flowchart TB
Req[Request] --> Queue[Queueing]
Queue --> Tokenize[Tokenization]
Tokenize --> Schedule[Scheduler]
Schedule --> Prefill[Prefill]
Prefill --> KV[KV Cache Allocation]
KV --> Decode[Decode Loop]
Decode --> Stream[Streaming Output]
必须掌握:
| 主题 | 学习目标 |
|---|---|
| Prefill | 输入 prompt 一次性计算,生成 KV cache。长 prompt 会拉高 TTFT。 |
| Decode | 逐 token 生成,反复读 KV cache。影响 TPOT。 |
| TTFT | Time To First Token,受排队、调度、prefill、KV allocation 影响。 |
| TPOT | Time Per Output Token,主要看 decode loop、KV 访问、collectives。 |
| P99 | tail latency,受队列、batching、干扰、资源饱和影响。 |
| KV cache | inference state,长上下文和高并发时是显存和数据移动问题。 |
| Continuous batching | 提高 GPU 利用率,但可能影响公平性和 P99。 |
学完能回答:
A serving request is not just a model call. I would break it into queueing, tokenization, scheduling, prefill, KV allocation, decode, and streaming. TTFT usually reflects queueing and prefill; TPOT reflects decode efficiency; P99 reflects saturation, batching, and tail behavior.
Stage 3:CUDA/GPU profiling
学习顺序:
flowchart TB
CUDA[CUDA Basics] --> Exec[thread/block/grid/warp]
Exec --> Memory[global/shared/pinned memory]
Memory --> Pattern[coalescing/tiling/copy overlap]
Pattern --> Metrics[memory-bound vs compute-bound]
Metrics --> Tools[Nsight Systems vs Nsight Compute]
必须掌握:
| 主题 | 学习目标 |
|---|---|
| CUDA kernel | CPU launch,GPU 执行。 |
| warp | NVIDIA 常见 32 threads lockstep 执行。 |
| coalescing | 相邻线程访问连续地址,提高 memory transaction 效率。 |
| shared memory | block 内 on-chip memory,用于 tiling 和 data reuse。 |
| pinned memory | page-locked host memory,更适合 DMA 和 async copy。 |
| stream/event | 异步队列和计时/同步机制。 |
| Nsight Systems | 看端到端 timeline。 |
| Nsight Compute | 看单 kernel 内部瓶颈。 |
学完能回答:
I start with Nsight Systems to locate the end-to-end critical path. If a kernel dominates, I use Nsight Compute to inspect memory throughput, occupancy, warp stalls, instruction mix, and shared-memory behavior.
Stage 4:NCCL/parallelism
学习顺序:
flowchart TB
Collective[Collective Communication] --> AR[All-Reduce]
Collective --> AG[All-Gather]
Collective --> RS[Reduce-Scatter]
AR --> DP[Data Parallel]
AG --> TP[Tensor Parallel]
RS --> FSDP[FSDP / ZeRO]
TP --> Debug[Slow communication debug]
DP --> Debug
FSDP --> Debug
必须掌握:
| 主题 | 学习目标 |
|---|---|
| rank / world size | 分布式通信参与者和总规模。 |
| all-reduce | 每个 rank 输入,聚合后每个 rank 得到结果。 |
| all-gather | 收集所有 rank 的分片。 |
| reduce-scatter | reduce 后分片发回各 rank。 |
| algbw / busbw | nccl-tests 输出中的算法带宽和总线带宽。 |
| small vs large message | 小消息看 latency/overhead,大消息看 bandwidth/topology。 |
学完能回答:
I would not assume slow all-reduce is an NCCL bug. I would first check message size, rank mapping, topology, selected transport, and whether the issue reproduces in nccl-tests.
Stage 5:UCX/RDMA/GPUDirect/NIXL/GPUNetIO
学习顺序:
flowchart TB
TCP[TCP CPU-staged path] --> RDMA[RDMA]
RDMA --> UCX[UCX transport abstraction]
RDMA --> GDR[GPUDirect RDMA]
UCX --> NIXL[NIXL inference data movement]
GDR --> GPUNetIO[GPUNetIO GPU-centric networking]
NIXL --> Serving[Prefill/Decode/KV movement]
GPUNetIO --> Packet[GPU participates in packet/data path]
必须掌握:
| 技术 | 学习目标 |
|---|---|
| RDMA | RNIC 直接访问 registered memory,减少 CPU/kernel involvement。 |
| RoCE | 在 Ethernet 上跑 RDMA,需要 lossless/congestion 配置。 |
| UCX | 抽象 TCP/RDMA/shared memory/CUDA-aware path。 |
| GPUDirect RDMA | NIC 直接访问 GPU memory,需要硬件/driver/topology/fabric 支持。 |
| NIXL | inference data/state movement,典型是 KV cache/state transfer。 |
| GPUNetIO | GPU-centric networking,适合 GPU 直接消费网络数据的场景。 |
学完能回答:
UCX is a transport abstraction. NIXL is more tied to inference state movement, such as KV transfer. NCCL is for collectives. GPUDirect RDMA is a data path where RNIC can directly access GPU memory. GPUNetIO goes further toward GPU-centric packet/data processing.
3. 7 天恢复计划
| 天 | 主题 | 输出 |
|---|---|---|
| Day 1 | JD/CV 匹配 + 项目梳理 | 能讲 3 个核心项目,每个 3 分钟。 |
| Day 2 | AI serving | 画 serving request path,回答 TTFT/TPOT/P99。 |
| Day 3 | CUDA/Nsight | 跑或读 CUDA memory/pinned copy 实验,能解释指标。 |
| Day 4 | NCCL/parallelism | 讲 all-reduce、DP/TP/FSDP,读 nccl-tests 输出。 |
| Day 5 | UCX/RDMA/GPUDirect | 画 TCP/RDMA/GDR path,准备 slow-path checklist。 |
| Day 6 | NIXL/GPUNetIO/Dynamo | 讲清与 NCCL/UCX 的区别,准备边界回答。 |
| Day 7 | Mock Q&A | 按 sequence-06 逐题口述。 |
4. 最小合格标准
你至少要做到:
1. 每个 CV 项目能讲:背景、架构、你做什么、瓶颈、指标、复盘。
2. 每个 JD 技术能讲:是什么、解决什么问题、怎么 debug。
3. CUDA/vLLM/NCCL/UCX 至少有一个实验或实验设计。
4. 对没有生产经验的技术,能说清学习路径和验证方法。