代码贬值之后,去修让 AI 跑起来的铁轨

6 阅读20分钟

《你的代码正在贬值》里,我们确认了一个事实:写代码不值钱了。在《AI 工程的三条腿》里,我们讨论了 RAG / MCP / Skill 这些"使用 AI"的技能。但那篇文章结尾,有一个没展开的问题——这些技能本身也没有壁垒,任何人一周就能学会。

所以这篇文章讨论一个更根本的方向选择题:如果"用 AI"不是护城河,那"让 AI 跑起来"是不是?


这篇文章解决什么问题

如果你和我一样是 Java/Go 背景的后端工程师,你可能在招聘网站上看到过以下这些岗位:

  • AI 基础架构工程师
  • 机器学习平台工程师
  • GPU 云平台开发工程师
  • 推理引擎开发工程师
  • MLOps 工程师
  • 大模型部署/优化工程师

它们看起来是 6 个不同岗位,但本质上是同一个方向的不同切面。 就像"后端工程师"、"Java 开发工程师"、"微服务架构师"、"中间件开发"本质上都是后端一样——上面这些,都是 AI Infra

这篇文章要做三件事:

  1. 拆清楚 AI Infra 到底是什么、内部的技能层次结构
  2. 评清楚 从 Java/Go 切入的适配度、学习门槛、投入产出比
  3. 规划清楚 一条真实可执行的学习路线——不是 6 条分散的路线,是 1 条分层递进的路线

一、AI Infra 到底在干什么——一张图说清楚

忘掉那 6 个岗位名称。AI Infra 解决的是一个统一的问题:

算法工程师训练出一个模型文件。这个文件几十 GB,不能直接用。要让它变成千万用户可以调用的 API 服务、让 GPU 集群高效运转、让训练任务稳定完成——这中间的所有工程问题,就是 AI Infra。

类比一下你熟悉的领域:

传统后端的世界:
  代码写完了 → 怎么部署?怎么扩容?怎么监控?怎么保证不挂?
  → 这些问题催生了 DevOps / SRE / 云原生工程师

AI 的世界:
  模型训练完了 → 怎么部署到 GPU 上?怎么扛住并发?怎么省钱?怎么不 OOM?
  → 这些问题催生了 AI Infra 工程师

AI Infra 不是一个岗位,是一个技术栈。它有清晰的分层结构:

┌─────────────────────────────────────────────────────────────┐
│  第四层:全链路运维(MLOps)                                    │
│  模型上线后的监控、告警、成本管控、安全审计、CI/CD               │
│  ← 传统 DevOps/SRE 技能几乎可以直接迁移                        │
├─────────────────────────────────────────────────────────────┤
│  第三层:平台工程(ML Platform)                                │
│  训练任务管理、实验追踪、模型仓库、特征平台、Pipeline 编排       │
│  ← Java/Go 大型系统开发经验直接适用                             │
├─────────────────────────────────────────────────────────────┤
│  第二层:资源调度(GPU Cluster Management)                     │
│  GPU 分配、多租户隔离、集群调度、自动扩缩容、成本优化            │
│  ← Go + K8s 经验是核心优势                                     │
├─────────────────────────────────────────────────────────────┤
│  第一层:推理与训练引擎(Inference & Training Engine)           │
│  模型加载、显存管理、请求调度、量化加速、分布式并行              │
│  ← 需要新学,但不需要从头学算法                                 │
├─────────────────────────────────────────────────────────────┤
│  第零层:硬件与系统(GPU Hardware & Runtime)                    │
│  GPU 架构、CUDA Runtime、NCCL 通信、InfiniBand 网络            │
│  ← 需要理解原理,不需要亲手写 Kernel(除非选极硬核路线)         │
└─────────────────────────────────────────────────────────────┘

那 6 个岗位名称,只不过是不同公司对这 5 层中不同侧重点的 JD 包装:

JD 名称实际侧重层说白了干什么
推理引擎开发工程师第一层让模型推理又快又省
大模型部署/优化工程师第一层 + 第二层把模型搞上线,调到能用
GPU 云平台开发工程师第二层让 GPU 集群被高效共享
机器学习平台工程师第三层造"AI 工厂",让算法团队自助式训练部署
MLOps 工程师第四层让模型在生产环境稳定运行
AI 基础架构工程师全层以上全要懂,偏架构设计

记住这个分层。后面所有的学习规划、难度评估、路线设计都围绕它展开。


二、为什么 Java/Go 程序员适合这个方向

在讨论怎么学之前,先回答一个前置问题:为什么是你?

AI 行业目前有一个巨大的人才错配:

做 AI 算法的人:
  ├── 擅长:PyTorch / 训练 / 论文复现
  ├── 不擅长:分布式系统 / 高并发 / K8s / 大规模工程
  └── 数量:多(每年大量 AI 硕博毕业)

做基础设施的人(你):
  ├── 擅长:分布式系统 / 高并发 / K8s / 大规模工程
  ├── 不擅长:GPU / 模型推理 / 训练框架
  └── 数量:几乎没人往 AI Infra 方向走

市场现状:
  → 算法岗:供过于求,内卷严重
  → AI Infra:严重供不应求

为什么供不应求?因为这个方向需要的技能组合很特殊:

需要的能力算法工程师有没有后端工程师有没有
分布式系统设计通常没有
K8s 二次开发(Go)基本没有有或能快速学
高并发服务架构通常没有
理解 GPU 计算特征没有(需要学)
理解模型推理过程没有(需要学)
性能调优经验部分有

看到没有?你缺的是 2 项,算法工程师缺的是 4 项。你的迁移成本更低。

而且你缺的那 2 项(GPU 特征 + 模型推理原理),是可以在 2-3 个月内补到"能用"水平的——不需要你去推公式、写论文,你只需要理解"模型推理这个工作负载消耗什么资源、瓶颈在哪、怎么优化"。

这就像你做 MySQL 调优不需要自己写一个存储引擎——你需要理解 B+ 树、Buffer Pool、索引选择性,但你不需要去实现它们。


三、学习门槛与投入产出评估——说真话

3.1 分层难度评估

层级对 Java/Go 的学习难度需要新学的核心知识预计投入时间市场价值
第四层 MLOps★★☆☆☆ 低AI 特有指标(模型漂移、推理延迟)1-2 月35-70w
第三层 ML Platform★★★☆☆ 中训练流程、特征工程概念、Pipeline 编排2-4 月45-100w
第二层 GPU 调度★★★☆☆ 中GPU 资源模型、设备管理、拓扑感知3-5 月45-100w
第一层 推理引擎★★★★☆ 中高推理优化原理、显存管理、量化技术4-6 月50-120w
第零层 GPU/CUDA★★★★★ 高CUDA 编程、算子开发、编译器8-18 月80-150w+

几个诚实的判断:

入门最快、需求最大的切入点是第一层 + 第二层的交叉区域。 也就是"能把模型部署上线、能调优推理性能、能管理 GPU 资源"——这是目前每家公司都缺人的环节。

第四层(MLOps)最容易上手但天花板最低。 如果你有 DevOps 背景,1 个月就能切入,但长期来看容易被工具化(和传统运维一样的命运)。

第零层(CUDA/算子)天花板最高但投入最大。 需要学 C++、学 CUDA、学编译器——对 Java/Go 程序员来说迁移成本巨大。但一旦入门,你是市场上最稀缺的人。建议作为长期选修方向,不作为入门路径。

3.2 一个核心判断

你不需要从第零层学到第四层。你需要在第一层+第二层建立核心竞争力,对第三层和第四层有全局理解,第零层按需深入。

就像做后端不需要精通内核——但你需要知道 epoll 是什么、TCP 的重传机制是什么。AI Infra 也一样:你不需要写 CUDA Kernel,但你需要知道 GPU 的显存层级和计算瓶颈。

3.3 和其他转型方向的横向对比

转型方向Java/Go 适配度学习周期市场竞争被 AI 替代风险薪资天花板
AI Infra(本文方向)★★★★★6-12 月低(供不应求)低(AI 自己跑不了自己)极高
AI 算法工程师★★☆☆☆12-18 月极高(硕博扎堆)
AI 应用开发(Agent 等)★★★★☆1-3 月高(门槛低)高(工具层迭代快)
技术管理转型★★★☆☆看机遇中高
独立开发/创业★★★★☆即时看赛道无上限/可能为零

四、AI Infra 技能地图——不是 6 条线,是 1 棵树

放弃"先学 A 岗位还是 B 岗位"的思路。AI Infra 的技能是分层生长的,像一棵树:

                        ┌── MLOps 运维能力(第四层)
                        │   ├── Prometheus/Grafana GPU 监控
                        │   ├── 模型 CI/CD Pipeline
                        │   ├── 成本分析与优化
                        │   └── 安全审计与合规
                        │
                  ┌─────┤
                  │     └── ML 平台能力(第三层)
                  │         ├── 训练任务管理(CRD + Controller)
                  │         ├── 实验追踪(MLflow)
                  │         ├── 特征平台(Feast)
                  │         └── Pipeline 编排(Argo/Airflow)
                  │
             ┌────┤
             │    └── 资源调度能力(第二层)
             │        ├── K8s GPU 设备管理
             │        ├── 自定义 Scheduler(Go)
             │        ├── 多租户隔离与配额
             │        └── 自动扩缩容控制器
             │
        ┌────┤
        │    └── 推理引擎能力(第一层)
        │        ├── vLLM 部署与调优
        │        ├── 推理框架原理(PagedAttention / Continuous Batching)
        │        ├── 模型量化(AWQ/GPTQ/FP8)
        │        ├── 多卡并行策略(TP/PP)
        │        └── 服务化(API Gateway / 路由 / 限流)
        │
   ─────┤
        └── AI 工作负载理解(根基)
            ├── 神经网络计算流程
            ├── Transformer / LLM 推理特征
            ├── GPU 资源模型(显存 / 算力 / 带宽)
            ├── 训练 vs 推理的资源差异
            └── 关键指标体系(TTFT / TPS / GPU Util / MBU)

学习的顺序是自下而上。 根基不稳,上面全是空中楼阁。


五、学习路线——一条线,四个阶段

全局时间线

月份    1     2     3     4     5     6     7     8     9
       |─── 阶段一 ───|
       理解 AI 工作负载  |─── 阶段二 ──────|
                        推理引擎实战       |─── 阶段三 ──────|
                                          K8s+GPU 平台(Go)  |─ 阶段四(选修) ─→
                                                             分布式训练/ML平台
       |═══════════════ 持续输出博客 / GitHub 项目 ═══════════════|
                                                    |── 投简历 ──|

阶段一:理解 AI 工作负载(第 1-6 周)

目标:不是学 AI 算法,而是像你理解 MySQL 的 Buffer Pool 一样理解 LLM 的推理过程——知道它的资源消耗特征、性能瓶颈在哪、哪些参数影响什么指标。

这个阶段解决一个问题:你将来要管理和优化的"工作负载"到底长什么样。

第 1-2 周:最小必要的神经网络知识

你不需要会训练模型,你需要理解训练和推理的计算过程。

需要看懂的核心代码结构(不是让你写,是让你看懂):

for epoch in range(num_epochs):
    for batch in dataloader:
        inputs, labels = batch
        outputs = model(inputs)           # 前向传播 → 吃 GPU 算力
        loss = criterion(outputs, labels)  # 算损失
        loss.backward()                    # 反向传播 → 吃 GPU 算力 + 显存
        optimizer.step()                   # 更新权重 → 吃显存
        optimizer.zero_grad()

你要关注的不是算法原理,而是:每一步的资源消耗特征是什么?batch size 翻倍,显存和算力怎么变?模型参数量和显存的关系是什么?

核心结论(先记住,后面会不断用到):

  • 1B 参数 FP16 ≈ 2GB 显存(仅模型权重)
  • 训练时显存 ≈ 模型权重的 4-8 倍(梯度 + 优化器状态 + 激活值)
  • 推理时显存 ≈ 模型权重 + KV Cache(随序列长度增长)
学习资源时间目的
3Blue1Brown《Neural Networks》4 集1h直觉理解前向/反向传播
PyTorch 60 分钟入门2h跑通 MNIST,观察 GPU 显存变化
李沐《动手学深度学习》3-5 章选读想深入时查阅

第 3-4 周:Transformer 和大模型的计算特征

这是最重要的两周。 AI Infra 的所有优化工作都建立在对 Transformer 推理过程的理解上。

必须搞懂的四件事:

概念一句话解释为什么 Infra 要关心
Self-Attention每个 token 和所有 token 做相似度计算计算复杂度 O(n²),决定了长序列推理的成本
KV Cache推理时缓存已计算的 Key/Value,避免重复计算显存占用随序列长度线性增长,是推理显存的主要消耗
自回归生成每次只生成 1 个 token,串行推理不是一次性算完的,是一个 token 一个 token 吐出来的
Memory-bound推理的瓶颈不是算力,是显存带宽GPU 利用率上不去不是因为算力不够,是数据搬运不够快

必读: Jay Alammar《The Illustrated Transformer》——这是全网最直观的图解,3 小时能读完。

动手实验: 用 Hugging Face 加载一个 7B 模型(如 Qwen2.5-7B),测不同输入长度下的推理时间和显存变化。不是为了学框架,是为了建立对资源消耗的直觉

第 5-6 周:训练 vs 推理的资源全景

维度训练推理
计算特征Compute-boundMemory-bandwidth-bound
显存消耗参数 + 梯度 + 优化器 + 激活值参数 + KV Cache
多卡通信频繁 AllReduce(梯度同步)少量 AllGather
容错需求Checkpoint 恢复即可必须高可用(实时服务)
核心瓶颈GPU 计算速度 + 卡间通信带宽显存容量 + 内存带宽

必读:

  • vLLM 官方博客(理解 PagedAttention 的设计动机)
  • NVIDIA《LLM Inference Performance Engineering》

必须能回答的问题:

  • 为什么大模型推理不是 GPU 算力不够,而是显存带宽不够?
  • KV Cache 的显存占用怎么算?(提示:和 layer 数、head 数、序列长度、精度有关)
  • Continuous Batching 比 Static Batching 好在哪?

阶段验证标准: 你能向一个非 AI 背景的程序员讲清楚"为什么大模型推理很贵、贵在哪里、优化的方向有哪些"。如果讲不清楚,说明你还没真正理解。


阶段二:推理引擎实战(第 7-14 周)

目标:能独立部署和调优一个生产级的 LLM 推理服务,理解主流推理框架的核心架构。

这个阶段是你在简历上写出"有大模型推理优化经验"的关键。

第 7-9 周:vLLM 从部署到源码

第一步:部署 + 压测(1 周)

# 启动服务
vllm serve Qwen/Qwen2.5-7B-Instruct \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.9 \
  --max-num-seqs 256

# 压测(用 locust 或自写脚本)
# 必须做的 3 组实验:
# 实验 1:固定输入 128 token,并发从 1 → 10 → 50 → 200,观察 TPS 和 TTFT
# 实验 2:固定并发 50,输入从 128 → 512 → 2048 → 8192,观察显存和延迟
# 实验 3:调 max-num-seqs 从 64 → 256 → 1024,观察吞吐和延迟的 tradeoff

这一步的目的不是"学会用 vLLM"——那太简单了。目的是建立参数和性能之间的映射直觉

第二步:读 vLLM 源码核心模块(2 周)

不需要读完。聚焦三个模块:

模块文件要搞懂的问题
Schedulervllm/core/scheduler.py请求怎么排队?什么时候 preempt?Waiting/Running/Swapped 三个队列怎么管理?
PagedAttentionvllm/attention/backends/KV Cache 的 Block 怎么分配回收?物理块和逻辑块的映射?
Enginevllm/engine/async_llm_engine.py一个请求从 API 进入到返回的完整链路?流式输出怎么实现?

为什么要读源码? 因为面试一定会问 vLLM 的 PagedAttention 原理,看博客能回答 70 分,看过源码能回答 95 分。而且读源码的过程会让你理解"为什么这样设计",这比背原理重要得多。

第 10-12 周:推理框架横向对比

框架核心特点你需要知道的
vLLMPagedAttention,社区最大通用首选,大部分公司在用
TensorRT-LLMNVIDIA 官方,极致性能性能最好但灵活性差,绑定 NVIDIA 生态
SGLangRadixAttention,擅长多轮对话有大量共享前缀的 Agent 场景下更优

实验任务: 同一个模型在 vLLM / TRT-LLM / SGLang 上跑相同压测,记录 throughput、latency P50/P99、显存占用。写成一篇对比评测。

第 13-14 周:推理优化技术

技术原理(一句话)效果
INT4 量化(AWQ/GPTQ)把 FP16 权重压缩到 4bit显存减 4 倍,速度提 1.5-2x,精度略损
FP8 量化H100 原生 FP8 支持接近 FP16 精度,2x 速度
Speculative Decoding小模型猜多个 token,大模型并行验证生成速度 2-3x
Prefix Caching缓存相同 system prompt 的 KV Cache相同前缀的请求大幅加速

每个技术做一个对比实验,记录量化前后或开启前后的性能差异。

阶段验证标准: 有人给你一个 70B 模型和 2 张 A100 80GB,你能在 2 小时内部署上线一个推理服务,说清楚选了什么框架、什么量化方案、什么并行策略、为什么。


阶段三:K8s + GPU 资源管理——Go 技能发力(第 15-26 周)

目标:能设计和开发基于 K8s 的 GPU 资源管理和模型服务平台。这是你 Go 背景的最大杠杆点,也是你和纯算法背景的人拉开差距的阶段。

第 15-17 周:K8s GPU 管理机制

你需要搞懂的核心机制:

K8s 默认对 GPU 的管理非常粗糙:
  → Pod 声明 nvidia.com/gpu: 1 → kubelet 通过 Device Plugin 分配一张卡 → 完
  → 不知道这张卡的显存用了多少
  → 不知道这张卡和哪张卡之间有 NVLink
  → 不支持显存级别的共享
  → 不支持"要么给我 4 张卡,要么一张都别给"(Gang Scheduling)

所有 AI Infra 的 GPU 调度工作,本质上都是在弥补 K8s 默认调度器对 GPU 的无知。

GPU 共享方案对比(必须搞清楚的基础知识):

方案隔离级别性能损耗适用场景
MIG(Multi-Instance GPU)硬件级几乎无A100/H100,生产推理
MPS(Multi-Process Service)进程级多个小模型共享一张卡
Time-Slicing时间片开发测试环境
vGPU虚拟化多租户云平台

学习路径: NVIDIA Device Plugin 源码(Go 写的)→ GPU Operator 架构 → 各共享方案实操。

第 18-22 周:核心项目——Go 实现 GPU-aware Scheduler

这是整个学习路线中最重要的产出。 它同时证明了三件事:你懂 K8s、你懂 GPU 资源管理、你的 Go 不是白学的。

项目定义:

一个 K8s 自定义调度器,能比默认调度器更聪明地分配 GPU。

功能清单:
├── 1. GPU 拓扑感知:多卡任务优先分配有 NVLink 互连的 GPU 组
├── 2. 显存感知 Binpack:小任务往已有任务的 GPU 上塞,大任务给空 GPU
├── 3. Gang Scheduling:分布式训练 N 卡全给或不给,避免死锁
└── 4. 优先级抢占:高优任务可以抢占低优任务的 GPU

技术方案:
├── 基于 K8s Scheduler Framework(Go 原生扩展点)
├── Filter 阶段:过滤 GPU 资源不满足的节点
├── Score 阶段:按拓扑 + 显存利用率打分
├── Reserve + Permit 阶段:Gang Scheduling 的等待逻辑
└── 参考:Volcano / YuniKorn 源码

第 23-26 周:模型服务网关(Go 项目)

在 GPU 调度器之上,构建模型服务层:

用户请求 → API Gateway → 模型路由 → 推理实例池
              │              │            │
              │              │            ├── Model-A (vLLM, 2×GPU)
              │              │            ├── Model-B (vLLM, 1×GPU)
              │              │            └── Model-A-v2 (canary, 1×GPU)
              │              │
              │              ├── 路由:按模型名 / 版本 / A-B 测试权重
              │              └── 负载均衡:最少连接 / 加权轮询
              │
              ├── 限流降级(令牌桶)
              ├── 认证鉴权(API Key)
              └── 自动扩缩容(基于队列长度 + GPU 利用率)

这些组件对你来说应该是"舒适区"——高并发网关、负载均衡、限流降级,你做后端时都做过。区别只是负载均衡的目标从 CPU 服务变成了 GPU 推理实例。

阶段验证标准: GitHub 上有两个项目(GPU Scheduler + Model Gateway),用 Go 写的,有架构图、有 README、有性能测试数据。


阶段四:扩展深度——按需选修(第 27 周+)

这个阶段不是线性的,是根据你的目标公司和岗位侧重选修:

如果你目标是选修方向核心内容
AI 创业公司 Infra 团队分布式训练基础设施数据并行/张量并行/流水线并行原理、NCCL 通信、弹性训练、Checkpoint 管理
云厂商 GPU 平台团队ML PlatformKubeflow / MLflow 二次开发、特征平台、Pipeline 编排
推理优化方向深入CUDA + 算子C++ / CUDA 编程、FlashAttention 源码、Triton 语言、推理 Kernel 优化

六、怎么证明你学到了——产出清单

学习不产出就是自我感动。以下是你必须积累的"作品集":

技术博客

阶段文章中文社区稀缺度
阶段一《从后端工程师视角理解大模型推理的资源消耗》中——但视角独特
阶段二《vLLM 源码分析:Scheduler 是怎么调度请求的》极高
阶段二《vLLM vs TRT-LLM vs SGLang:7B 模型推理实测》极高
阶段二《AWQ 量化实战:性能、精度、显存的三方博弈》
阶段三《用 Go 写一个 K8s GPU-aware Scheduler》极高
阶段三《大模型推理服务网关设计与实现》

vLLM 源码分析系列在中文技术社区几乎空白。你写了就是第一批,流量和影响力都有。

GitHub 项目

项目语言证明什么
gpu-schedulerGoK8s + GPU 资源管理能力
llm-gatewayGo高并发服务架构 + 模型部署能力
inference-benchPython + Shell推理优化理解深度

开源贡献

给 vLLM / SGLang / Volcano 提 PR——哪怕是修文档、加测试。简历上"参与推理引擎开源项目"这一行的价值远超你想象。


七、目标岗位与面试准备

7.1 目标公司

层级公司团队方向
头部大厂字节(AML/火山引擎)、阿里(PAI)、腾讯(机智平台)推理优化 + GPU 平台
AI 原生公司DeepSeek、月之暗面、MiniMax、智谱训练/推理基础设施
云厂商火山引擎、阿里云、华为云GPU 云平台 + 模型服务
外企NVIDIA(Triton/TRT-LLM)、AMD推理引擎开发

7.2 高频面试题(覆盖全层级)

推理引擎(第一层):

  1. vLLM 的 PagedAttention 解决什么问题?和 Static Batching 相比好在哪?
  2. Continuous Batching 怎么实现?如何处理不同长度的请求?
  3. INT4 量化 vs FP16,性能提升多少?精度怎么评估?
  4. Tensor Parallelism 和 Pipeline Parallelism 的区别?通信开销分别是什么?

GPU 调度(第二层): 5. K8s 默认调度器为什么不适合 GPU 工作负载?你怎么改? 6. MIG / MPS / Time-Slicing 各自的隔离级别和适用场景? 7. Gang Scheduling 为什么需要?怎么避免死锁?

系统设计(综合): 8. 设计一个支持千级 QPS 的大模型推理服务平台 9. 公司有 200 张 GPU、20 个团队,设计资源管理方案 10. 如何把 GPU 利用率从 30% 提升到 80%?

7.3 简历关键词

vLLM / TensorRT-LLM / 推理优化 / PagedAttention / Continuous Batching
Kubernetes / GPU 调度 / Device Plugin / Scheduler Framework / Operator
模型量化 / AWQ / FP8 / Tensor Parallelism
Go / gRPC / 高性能网关 / 分布式系统
Prometheus / Grafana / GPU 监控

八、回到开头的问题

《你的代码正在贬值》里,我写了一句话:

代码贬值不等于程序员消亡。它意味着"只会写代码的程序员"消亡,而"会用代码解决问题的人"变得更值钱。

这句话是对的,但还不够具体。具体到什么程度?

AI 正在让"写代码"变成一种免费资源。但 AI 自己需要大量"不是写代码就能解决的工程问题"——GPU 怎么调度、显存怎么管理、推理怎么加速、集群怎么不崩。这些问题需要的是对硬件的理解、对分布式系统的经验、对资源约束的工程直觉

这些你都有。只是还没有接到 AI 的工作负载上。

AI 替代了写代码的人。那就去做让 AI 能跑起来的人。

从写代码的人,变成修铁轨的人。代码是列车上的货物,越来越便宜;铁轨是让列车跑起来的基础设施,越来越值钱。

你选哪个?